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:
copyboolean()Default value:
false
If enabled, the stream will not be re-encodedresolution{integer(), integer()}Default value:
{-2, 720}
Resolution of the given output.bitratepos_integer()Default value:
3300000
Maximum bitrateprofileatom()Default value:
:high
H264 Profilecrfpos_integer()Default value:
26presetatom()Default value:
:hightuneatom()Default value:
:zerolatencyfpspos_integer()Default value:
30gop_sizepos_integer()Default value:
60b_framespos_integer()Default value:
3levelString.t()Default value:
"3.1"
:audio
Accepted formats:
Membrane.RemoteStream| Direction: | :output |
| Availability: | :on_request |
Pad options:
copyboolean()Default value:
false
If enabled, the stream will not be re-encodedbitratepos_integer()Default value:
128000
Maximum bitratesample_ratepos_integer()Default value:
48000
Summary
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