View Source Membrane.H265.FFmpeg.Encoder (Membrane H265 FFmpeg plugin v0.4.2)
Membrane element that encodes raw video frames to H265 format.
The element expects each frame to be received in a separate buffer, so the parser
(Membrane.Element.RawVideo.Parser
) may be required in a pipeline before
the encoder (e.g. when input is read from Membrane.File.Source
).
Additionally, the encoder has to receive proper stream_format with picture format and dimensions before any encoding takes place.
Please check t/0
for available options.
Element options
Passed via struct Membrane.H265.FFmpeg.Encoder.t/0
crf
0..51
Default value:
28
Constant rate factor that affects the quality of output stream. Value of 0 is lossless compression while 51 offers the worst quality. The range is exponential, so increasing the CRF value +6 results in roughly half the bitrate / file size, while -6 leads to roughly twice the bitrate.preset
preset()
Default value:
:medium
Collection of predefined options providing certain encoding. The slower the preset chosen, the higher compression for the same quality can be achieved.profile
H265.profile_t() | nil
Default value:
nil
Sets a limit on the features that the encoder will use to the ones supported in a provided H265 profile. Said features will have to be supported by the decoder in order to decode the resulting video. It may override other, more specific options affecting compression.tune
tune() | nil
Default value:
nil
Optionally tune the encoder settings for a particular type of source or situation. Seex265
encoder's man page for more info. Available options are::grain
- preserves the grain structure in old, grainy film material:fastdecode
- allows faster decoding by disabling certain filters:zerolatency
- good for fast encoding and low-latency streaming
use_shm?
boolean()
Default value:
false
If true, native encoder will use shared memory (viaShmex.t/0
) for storing framesmax_b_frames
non_neg_integer() | nil
Default value:
nil
Maximum number of B-frames between non-B-frames. Set to 0 to encode video without b-framesgop_size
non_neg_integer() | nil
Default value:
nil
Number of frames in a group of pictures.x265_params
binary()
Default value:
""
Set x265 options using a list of key=value couples separated by ":". Seex265 --help
for a list of options.
Pads
:input
Accepted formats:
%RawVideo{pixel_format: format, aligned: true} when format in [:I420, :I422]
Direction: | :input |
Availability: | :always |
Flow control: | :auto |
:output
Accepted formats:
%H265{alignment: :au}
Direction: | :output |
Availability: | :always |
Flow control: | :auto |
Summary
Types
@type preset() ::
:ultrafast
| :superfast
| :veryfast
| :faster
| :fast
| :medium
| :slow
| :slower
| :veryslow
| :placebo
@type t() :: %Membrane.H265.FFmpeg.Encoder{ crf: 0..51, gop_size: non_neg_integer() | nil, max_b_frames: non_neg_integer() | nil, preset: preset(), profile: Membrane.H265.profile_t() | nil, tune: tune() | nil, use_shm?: boolean(), x265_params: binary() }
Struct containing options for Membrane.H265.FFmpeg.Encoder
@type tune() :: :grain | :fastdecode | :zerolatency
Functions
@spec options() :: keyword()
Returns description of options available for this module