Built-in Encode Module

This is a module capability discrption about BMF build-in encoder. The module can be used by BMF API such as bmf.encode() by providing json style “option” to config such as the 3rd parameter below:

bmf.encode(
    video['video'],
    audio_stream,
    {
 "output_path": output_path,
 "video_params": {
 "codec": "h264",
 "width": 320,
 "height": 240,
 "crf": 23,
 "preset": "veryfast"
        },
 "audio_params": {
 "codec": "aac",
 "bit_rate": 128000,
 "sample_rate": 44100,
 "channels": 2
        }
    }
)

Details:

  • module name: c_ffmpeg_encoder

  • null_output: to make encoder as a null sink in some cases. “null_output”: 1

  • output_path: output file path, exp. out.mp4, which can indicate the output format of the file similiar as ffmpeg.

  • adjust_pts: will adjust the pts start from 0 when it’s enabled

  • format: similiar as the “-f” in ffmpeg command line to specify the demux/mux format. exp.

{
 "format": "flv",
 "output_path": rtmp://docker.for.mac.host.internal/rtmplive
}
  • output_prefix: specify the output directory path

  • push_output: decide whether to mux the result and where to output the results, available value is 0/1/2. 0: write muxed result to disk, 1: write muxed result to the output queue, 2: write unmuxed result to the output queue.

"push_output": 1
  • avio_buffer_size: set avio buffer size, when oformat is image2pipe, this paramter is useful, exp.
"avio_buffer_size": 16384
  • mux_params: specify the extra output mux parameters, exp.
"format": "hls",
"mux_params": {
 "hls_list_size": "0",
 "hls_time": "10",
 "hls_segment_filename": "./file%03d.ts"
}
  • video_params: video codec related parameters which similiar as ffmpeg. exp.
"video_params": {
 "codec": "h264",
 "width": 320,
 "height": 240,
 "crf": 23,
 "preset": "veryfast"
},
  • metadata: to add user metadata in the outfile

  • vframes: set the number of video frames to output

  • aframes: set the number of audio frames to output

  • min_frames: set the min number of output video frames

  • codec: param in video_params or audio_params to specify the name of the codec which libavcodec included. exp. “h264”, “bytevc1”, “jpg”, “png”, “aac”(audio)

  • width: param in video_params to specify the video width

  • height: param in video_params to specify the video height

  • pix_fmt: param in video_params to specify the input format of raw video

  • audio_params: audio codec related parameters which similiar as ffmpeg. exp.

"audio_params": {
 "codec": "aac",
 "bit_rate": 128000,
 "sample_rate": 44100,
 "channels": 2
}
  • loglevel: without using the logbuffer of builder API, to set the ffmpeg av log level: “quiet”,“panic”,“fatal”,“error”,“warning”,“info”,“verbose”,“debug”,“trace”

  • threads: specify the number of threads for encoder, “auto” by default, and other for example: “threads”: “2”

  • psnr: to set encoder provide psnr information

  • in_time_base: to set time base manually

  • vsync: to set the video sync method on frame rate, “auto” by default. and it can be “cfr”, “vfr”, “passthrough”, “drop” similar as ffmpeg

  • max_fr: to set the frame rate

  • max_fr: to set the frame rate, similar as ffmpeg

  • qscal: to set the qscale for the encoder global_quality

  • vtag: to set the vtag for output stream

  • bit_rate or b: to set the bitrate for video encode

  • channels: to set the channels for input audio

  • bit_rate or b: to set the bit_rate for audio encode

  • sample_rate: to set the sample_rate for audio encode

  • atag: to set the atag for output stream

Build-in Encode Module


Last modified December 16, 2024 : Fix binutils install doc on macOS (#28) (67b861f)