View Source Membrane.FFmpeg.Transcoder (Membrane FFmpeg Transcoder Plugin v1.2.0)

Tasks as input an unparsed stream and provides on each pad an unparsed, transcoded stream with the desired properties.

Input might be MPEG-TS or FLV but other streaming containers might work as well. If the input stream contains more than 1 video and 1 audio stream, which one will be picked is undefined behaviour.

Pads

:input

Accepted formats:

Membrane.RemoteStream
Direction::input
Availability::always

:video

Accepted formats:

Membrane.RemoteStream
Direction::output
Availability::on_request

Pad options:

  • copy

    boolean()

    Default value: false
    If enabled, the stream will not be re-encoded

  • resolution

    {integer(), integer()}

    Default value: {-2, 720}
    Resolution of the given output.

  • bitrate

    pos_integer()

    Default value: 3300000
    Maximum bitrate

  • profile

    atom()

    Default value: :high
    H264 Profile

  • crf

    pos_integer()

    Default value: 26

  • preset

    atom()

    Default value: :high

  • tune

    atom()

    Default value: :zerolatency

  • fps

    pos_integer()

    Default value: 30

  • gop_size

    pos_integer()

    Default value: 60

  • b_frames

    pos_integer()

    Default value: 3

  • level

    String.t()

    Default value: "3.1"

:audio

Accepted formats:

Membrane.RemoteStream
Direction::output
Availability::on_request

Pad options:

  • copy

    boolean()

    Default value: false
    If enabled, the stream will not be re-encoded

  • bitrate

    pos_integer()

    Default value: 128000
    Maximum bitrate

  • sample_rate

    pos_integer()

    Default value: 48000

Summary

Types

Options for pad :audio

Options for pad :video

Types

@type audio_pad_opts() :: [
  copy: boolean(),
  bitrate: pos_integer(),
  sample_rate: pos_integer()
]

Options for pad :audio

@type video_pad_opts() :: [
  copy: boolean(),
  resolution: {integer(), integer()},
  bitrate: pos_integer(),
  profile: atom(),
  crf: pos_integer(),
  preset: atom(),
  tune: atom(),
  fps: pos_integer(),
  gop_size: pos_integer(),
  b_frames: pos_integer(),
  level: String.t()
]

Options for pad :video