Skip to content

A pure TypeScript FLV muxer used to implement web livestream and recording.

License

Notifications You must be signed in to change notification settings

Hazi7/flv-muxer

Repository files navigation

FlvMuxer

English | 中文

flv-muxer.js is a pure TypeScript FLV multiplexer that enables native FLV streaming and recording on the Web platform.

Use Cases

  • Transmit FLV streams to a media server via WebTransport or WebSocket for web-based live streaming
  • Overcome the limitation of the MediaRecorder API, which does not support FLV format recording

Installation

NPM

npm install flv-muxer

CDN

<script src="https://cdn.jsdelivr.net/npm/flv-muxer@latest/dist/flv-muxer.iife.js"></script>

API

FlvMuxer

FlvMuxer is a class for creating an FLV multiplexer instance, providing stream processing capabilities.

Constructor

const muxer = new FlvMuxer(
  writable: WritableStream,
  options: {
    mode: "record" | "live";
    chunked: boolean; // Whether to transmit in chunks
  }
);

Methods

  • configureAudio(): Configures the audio encoder

    flvMuxer.configureAudio({
      encoderConfig: AudioEncoderConfig;  
    });
    
    // Example
    flvMuxer.configureAudio({
      encoderConfig: {
        codec: "mp4a.40.29",
        sampleRate: 44100,
        numberOfChannels: 2,
      },
    });

    Audio encoder configuration: AudioEncoderConfig.

  • configureVideo(): Configures the video encoder

    muxer.configureVideo({
      encoderConfig: VideoEncoderConfig;  
      keyframeInterval: number, // Keyframe interval in frames
    });
    
    // Example
    flvMuxer.configureVideo({
      encoderConfig: {
        codec: "avc1.640034",
        width: 2560,
        height: 1440,
        framerate: 30,
      },
      keyframeInterval: 90,
    });

    video encoder configuration: VideoEncoderConfig.

  • addRawChunk: Add raw frame data.

    flvMuxer.addRawChunk("video"  "audio", chunk: VideoFrame | AudioData);
    
    // Example
    flvMuxer.addRawChunk("video", chunk);
  • start(): Starts the multiplexer to receive and process data

  • pause(): Pauses the multiplexer, temporarily stopping data processing

  • resume(): Resumes the multiplexer, continuing data processing

  • stop(): Stops the multiplexer, terminating data processing

Properties

  • state: Returns the current state of the multiplexer. Possible values are "recording", "paused", or "inactive".

About

A pure TypeScript FLV muxer used to implement web livestream and recording.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published