4.0 KiB
Decoders and Encoders
Implementations of various decoders and encoder for audio and video.
Decoders
Each decoder exports the same variables:
export { coder, name, codecs, type, hwaccel, defaults, Coder as component };
| Variable | Description |
|---|---|
| coder | Name of the decoder in FFmpeg, e.g. cuda, vc1_mmal. |
| name | Name for the decoder as it will be displayed in the UI. |
| codecs | Array of codecs this coder supports, e.g. ['h264', 'h265']. |
| type | Either video or audio. |
| hwaccel | Whether this codec uses hardware acceleration. |
| defaults | A function that returns the default settings and mapping. See below. |
| Coder | The React component. |
defaults
The defaults() function returns the default settings and mappings for this decoder. It is an object of this shape:
{
settings: {},
mapping: {
global: [],
local: [],
},
}
The settings is an object private to a coder and contains its settings as required for rendering the component
with options for this coder. The mapping object contains the FFmpeg command line options according to the settings.
It has a global array which contains all global options for this coder. Each option (with its value) has to be
an array of its own. The local array is an array of options for that input, e.g.
{
settings: {
...
},
mapping: {
global: [
['-init_hw_device', 'vaapi=foo:/dev/dri/renderD128'],
],
local: [
'-hwaccel', 'vaapi',
'-hwaccel_output_format', 'vaapi',
'-hwaccel_device', 'foo',
],
},
}
Check out the existing decoders as examples for an implementation.
Encoders
Each encoder exports the same variables:
export { coder, name, codec, type, hwaccel, summarize, defaults, Coder as component };
| Variable | Description |
|---|---|
| coder | Name of the encoder in FFmpeg, e.g. libx264. |
| name | Name for the encoder as it will be displayed in the UI. |
| codec | Name of the codec, e.g. h264. |
| type | Either video or audio. |
| hwaccel | Whether this codec uses hardware acceleration. |
| summarize | A function that returns a string that summarizes the current settings. |
| defaults | A function that returns the default settings and mapping. See below. |
| Coder | The React component. |
defaults
The defaults() function returns the default settings and mappings for this encoder. It is an object of this shape:
{
settings: {},
mapping: {
global: [],
local: [],
},
}
The settings is an object private to a coder and contains its settings as required for rendering the component
with options for this coder. The mapping object contains the FFmpeg command line options according to the settings.
It has a global array which contains all global options for this coder. Each option (with its value) has to be
an array of its own. The local array is an array of options for that input, e.g.
{
settings: {
...
},
mapping: {
global: [
['-init_hw_device', 'vaapi=foo:/dev/dri/renderD128'],
],
local: [
'-filter_hw_device', 'foo',
'-filter:v', 'format=nv12|vaapi,hwupload',
'-codec:v', 'h264_vaapi',
],
},
}
Check out the existing encoders as examples for an implementation.