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-encodedresolution
{integer(), integer()}
Default value:
{-2, 720}
Resolution of the given output.bitrate
pos_integer()
Default value:
3300000
Maximum bitrateprofile
atom()
Default value:
:high
H264 Profilecrf
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-encodedbitrate
pos_integer()
Default value:
128000
Maximum bitratesample_rate
pos_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