Membrane.FFmpeg.Transcoder (Membrane FFmpeg Transcoder Plugin v1.2.5)
View SourceTasks 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