node-av 5.2.4-beta.1 → 6.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/dist/api/bitstream-filter.d.ts +110 -87
- package/dist/api/bitstream-filter.js +162 -102
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/decoder.d.ts +87 -8
- package/dist/api/decoder.js +179 -4
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/demuxer.d.ts +30 -24
- package/dist/api/demuxer.js +4 -5
- package/dist/api/demuxer.js.map +1 -1
- package/dist/api/device.js.map +1 -1
- package/dist/api/encoder-pool.d.ts +220 -0
- package/dist/api/encoder-pool.js +285 -0
- package/dist/api/encoder-pool.js.map +1 -0
- package/dist/api/encoder.d.ts +133 -7
- package/dist/api/encoder.js +392 -68
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-complex.d.ts +2 -1
- package/dist/api/filter-complex.js +11 -7
- package/dist/api/filter-complex.js.map +1 -1
- package/dist/api/filter-presets.d.ts +130 -654
- package/dist/api/filter-presets.js +180 -858
- package/dist/api/filter-presets.js.map +1 -1
- package/dist/api/filter.js +13 -8
- package/dist/api/filter.js.map +1 -1
- package/dist/api/fmp4-stream.js +1 -1
- package/dist/api/fmp4-stream.js.map +1 -1
- package/dist/api/index.d.ts +6 -6
- package/dist/api/index.js +8 -8
- package/dist/api/index.js.map +1 -1
- package/dist/api/muxer.d.ts +43 -15
- package/dist/api/muxer.js +79 -27
- package/dist/api/muxer.js.map +1 -1
- package/dist/api/pipeline.d.ts +50 -0
- package/dist/api/pipeline.js +138 -22
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/probe.d.ts +128 -0
- package/dist/api/probe.js +227 -0
- package/dist/api/probe.js.map +1 -0
- package/dist/api/rtp-stream.js +1 -1
- package/dist/api/rtp-stream.js.map +1 -1
- package/dist/api/scaler.d.ts +431 -0
- package/dist/api/scaler.js +620 -0
- package/dist/api/scaler.js.map +1 -0
- package/dist/api/utilities/async-queue.d.ts +27 -1
- package/dist/api/utilities/async-queue.js +38 -1
- package/dist/api/utilities/async-queue.js.map +1 -1
- package/dist/api/utilities/electron-shared-texture.d.ts +41 -1
- package/dist/api/utilities/electron-shared-texture.js +41 -4
- package/dist/api/utilities/electron-shared-texture.js.map +1 -1
- package/dist/api/utilities/index.d.ts +1 -1
- package/dist/api/utilities/index.js.map +1 -1
- package/dist/api/webrtc-stream.d.ts +0 -1
- package/dist/api/webrtc-stream.js +0 -1
- package/dist/api/webrtc-stream.js.map +1 -1
- package/dist/constants/bsf-options.d.ts +333 -0
- package/dist/constants/bsf-options.js +7 -0
- package/dist/constants/bsf-options.js.map +1 -0
- package/dist/constants/constants.d.ts +109 -0
- package/dist/constants/constants.js +110 -0
- package/dist/constants/constants.js.map +1 -1
- package/dist/constants/decoders.d.ts +636 -618
- package/dist/constants/decoders.js +1 -3
- package/dist/constants/decoders.js.map +1 -1
- package/dist/constants/encoders.d.ts +300 -282
- package/dist/constants/encoders.js +0 -2
- package/dist/constants/encoders.js.map +1 -1
- package/dist/constants/filter-options.d.ts +10915 -0
- package/dist/constants/filter-options.js +7 -0
- package/dist/constants/filter-options.js.map +1 -0
- package/dist/constants/format-options.d.ts +3056 -0
- package/dist/constants/format-options.js +7 -0
- package/dist/constants/format-options.js.map +1 -0
- package/dist/constants/formats.d.ts +18 -0
- package/dist/constants/formats.js +7 -0
- package/dist/constants/formats.js.map +1 -0
- package/dist/constants/index.d.ts +5 -0
- package/dist/constants/options.d.ts +4073 -0
- package/dist/constants/options.js +7 -0
- package/dist/constants/options.js.map +1 -0
- package/dist/lib/binding.d.ts +4 -1
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/codec.d.ts +36 -5
- package/dist/lib/codec.js +37 -4
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/dictionary.d.ts +1 -1
- package/dist/lib/dictionary.js.map +1 -1
- package/dist/lib/error.d.ts +69 -0
- package/dist/lib/error.js +92 -0
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/frame.d.ts +46 -3
- package/dist/lib/frame.js +50 -3
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/native-types.d.ts +68 -0
- package/dist/lib/packet.d.ts +17 -3
- package/dist/lib/packet.js +19 -3
- package/dist/lib/packet.js.map +1 -1
- package/dist/lib/utilities.d.ts +21 -0
- package/dist/lib/utilities.js +23 -0
- package/dist/lib/utilities.js.map +1 -1
- package/dist/webrtc/index.d.ts +3 -0
- package/dist/webrtc/index.js +7 -0
- package/dist/webrtc/index.js.map +1 -0
- package/package.json +33 -22
|
@@ -0,0 +1,4073 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated codec private-option types.
|
|
3
|
+
* Generated from FFmpeg codec AVOption sources (see scripts/generate-options-source.js).
|
|
4
|
+
* DO NOT EDIT MANUALLY.
|
|
5
|
+
*/
|
|
6
|
+
export interface CodecContextOptions {
|
|
7
|
+
/** set bitrate (in bits/s) */
|
|
8
|
+
b?: number;
|
|
9
|
+
/** set bitrate (in bits/s) */
|
|
10
|
+
ab?: number;
|
|
11
|
+
/** Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate tolerance specifies how far */
|
|
12
|
+
bt?: number;
|
|
13
|
+
flags?: 'unaligned' | 'mv4' | 'qpel' | 'loop' | 'qscale' | 'recon_frame' | 'copy_opaque' | 'frame_duration' | 'pass1' | 'pass2' | 'gray' | 'psnr' | 'ildct' | 'low_delay' | 'global_header' | 'bitexact' | 'aic' | 'ilme' | 'cgop' | 'output_corrupt' | (string & {});
|
|
14
|
+
flags2?: 'fast' | 'noout' | 'ignorecrop' | 'local_header' | 'chunks' | 'showall' | 'export_mvs' | 'skip_manual' | 'ass_ro_flush_noop' | 'icc_profiles' | 'fixed_frame_size' | (string & {});
|
|
15
|
+
/** Export metadata as side data */
|
|
16
|
+
export_side_data?: 'mvs' | 'prft' | 'venc_params' | 'film_grain' | 'enhancements' | (string & {});
|
|
17
|
+
time_base?: string | number;
|
|
18
|
+
/** set the group of picture (GOP) size */
|
|
19
|
+
g?: number;
|
|
20
|
+
/** set audio sampling rate (in Hz) */
|
|
21
|
+
ar?: number;
|
|
22
|
+
/** set cutoff bandwidth */
|
|
23
|
+
cutoff?: number;
|
|
24
|
+
frame_size?: number;
|
|
25
|
+
frame_number?: number;
|
|
26
|
+
delay?: number;
|
|
27
|
+
/** video quantizer scale compression (VBR). Constant of ratecontrol equation. */
|
|
28
|
+
qcomp?: number;
|
|
29
|
+
/** video quantizer scale blur (VBR) */
|
|
30
|
+
qblur?: number;
|
|
31
|
+
/** minimum video quantizer scale (VBR) */
|
|
32
|
+
qmin?: number;
|
|
33
|
+
/** maximum video quantizer scale (VBR) */
|
|
34
|
+
qmax?: number;
|
|
35
|
+
/** maximum difference between the quantizer scales (VBR) */
|
|
36
|
+
qdiff?: number;
|
|
37
|
+
/** set maximum number of B-frames between non-B-frames */
|
|
38
|
+
bf?: number;
|
|
39
|
+
/** QP factor between P- and B-frames */
|
|
40
|
+
b_qfactor?: number;
|
|
41
|
+
codec_tag?: number;
|
|
42
|
+
/** work around not autodetected encoder bugs */
|
|
43
|
+
bug?: 'autodetect' | 'xvid_ilace' | 'ump4' | 'no_padding' | 'amv' | 'qpel_chroma' | 'std_qpel' | 'qpel_chroma2' | 'direct_blocksize' | 'edge' | 'hpel_chroma' | 'dc_clip' | 'ms' | 'trunc' | 'iedge' | (string & {});
|
|
44
|
+
/** how strictly to follow the standards */
|
|
45
|
+
strict?: 'very' | 'strict' | 'normal' | 'unofficial' | 'experimental';
|
|
46
|
+
/** QP offset between P- and B-frames */
|
|
47
|
+
b_qoffset?: number;
|
|
48
|
+
/** set error detection flags */
|
|
49
|
+
err_detect?: 'crccheck' | 'bitstream' | 'buffer' | 'explode' | 'ignore_err' | 'careful' | 'compliant' | 'aggressive' | (string & {});
|
|
50
|
+
has_b_frames?: number;
|
|
51
|
+
block_align?: number;
|
|
52
|
+
rc_override_count?: number;
|
|
53
|
+
/** maximum bitrate (in bits/s). Used for VBV together with bufsize. */
|
|
54
|
+
maxrate?: number;
|
|
55
|
+
/** minimum bitrate (in bits/s). Most useful in setting up a CBR encode. It is of little use otherwise. */
|
|
56
|
+
minrate?: number;
|
|
57
|
+
/** set ratecontrol buffer size (in bits) */
|
|
58
|
+
bufsize?: number;
|
|
59
|
+
/** QP factor between P- and I-frames */
|
|
60
|
+
i_qfactor?: number;
|
|
61
|
+
/** QP offset between P- and I-frames */
|
|
62
|
+
i_qoffset?: number;
|
|
63
|
+
/** DCT algorithm */
|
|
64
|
+
dct?: 'auto' | 'fastint' | 'int' | 'mmx' | 'altivec' | 'faan' | 'neon';
|
|
65
|
+
/** compresses bright areas stronger than medium ones */
|
|
66
|
+
lumi_mask?: number;
|
|
67
|
+
/** temporal complexity masking */
|
|
68
|
+
tcplx_mask?: number;
|
|
69
|
+
/** spatial complexity masking */
|
|
70
|
+
scplx_mask?: number;
|
|
71
|
+
/** inter masking */
|
|
72
|
+
p_mask?: number;
|
|
73
|
+
/** compresses dark areas stronger than medium ones */
|
|
74
|
+
dark_mask?: number;
|
|
75
|
+
/** select IDCT implementation */
|
|
76
|
+
idct?: 'auto' | 'int' | 'simple' | 'simplemmx' | 'arm' | 'altivec' | 'simplearm' | 'simplearmv5te' | 'simplearmv6' | 'simpleneon' | 'xvid' | 'xvidmmx' | 'faani' | 'simpleauto';
|
|
77
|
+
/** set error concealment strategy */
|
|
78
|
+
ec?: 'guess_mvs' | 'deblock' | 'favor_inter' | (string & {});
|
|
79
|
+
bits_per_coded_sample?: number;
|
|
80
|
+
/** sample aspect ratio */
|
|
81
|
+
aspect?: string | number;
|
|
82
|
+
/** sample aspect ratio */
|
|
83
|
+
sar?: string | number;
|
|
84
|
+
/** print specific debug info */
|
|
85
|
+
debug?: 'pict' | 'rc' | 'bitstream' | 'mb_type' | 'qp' | 'dct_coeff' | 'green_metadata' | 'skip' | 'startcode' | 'er' | 'mmco' | 'bugs' | 'buffers' | 'thread_ops' | 'nomc' | (string & {});
|
|
86
|
+
/** diamond type & size for motion estimation */
|
|
87
|
+
dia_size?: number;
|
|
88
|
+
/** amount of motion predictors from the previous frame */
|
|
89
|
+
last_pred?: number;
|
|
90
|
+
/** diamond type & size for motion estimation pre-pass */
|
|
91
|
+
pre_dia_size?: number;
|
|
92
|
+
/** sub-pel motion estimation quality */
|
|
93
|
+
subq?: number;
|
|
94
|
+
/** limit motion vectors range (1023 for DivX player) */
|
|
95
|
+
me_range?: number;
|
|
96
|
+
global_quality?: number;
|
|
97
|
+
slice_flags?: number;
|
|
98
|
+
/** macroblock decision algorithm (high quality mode) */
|
|
99
|
+
mbd?: 'simple' | 'bits' | 'rd';
|
|
100
|
+
/** number of bits which should be loaded into the rc buffer before decoding starts */
|
|
101
|
+
rc_init_occupancy?: number;
|
|
102
|
+
/** set the number of threads */
|
|
103
|
+
threads?: 'auto';
|
|
104
|
+
/** deprecated; use intra_dc_precision for MPEG-2 instead */
|
|
105
|
+
dc?: number;
|
|
106
|
+
/** nsse weight */
|
|
107
|
+
nssew?: number;
|
|
108
|
+
/** number of macroblock rows at the top which are skipped */
|
|
109
|
+
skip_top?: number;
|
|
110
|
+
/** number of macroblock rows at the bottom which are skipped */
|
|
111
|
+
skip_bottom?: number;
|
|
112
|
+
profile?: 'unknown' | 'main10';
|
|
113
|
+
/** encoding level, usually corresponding to the profile level, codec-specific */
|
|
114
|
+
level?: 'unknown';
|
|
115
|
+
/** decode at 1= 1/2, 2=1/4, 3=1/8 resolutions */
|
|
116
|
+
lowres?: number;
|
|
117
|
+
/** full-pel ME compare function */
|
|
118
|
+
cmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'w53' | 'w97' | 'dctmax' | 'chroma' | 'msad';
|
|
119
|
+
/** sub-pel ME compare function */
|
|
120
|
+
subcmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'w53' | 'w97' | 'dctmax' | 'chroma' | 'msad';
|
|
121
|
+
/** macroblock compare function */
|
|
122
|
+
mbcmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'w53' | 'w97' | 'dctmax' | 'chroma' | 'msad';
|
|
123
|
+
/** interlaced DCT compare function */
|
|
124
|
+
ildctcmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'w53' | 'w97' | 'dctmax' | 'chroma' | 'msad';
|
|
125
|
+
/** pre motion estimation compare function */
|
|
126
|
+
precmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'w53' | 'w97' | 'dctmax' | 'chroma' | 'msad';
|
|
127
|
+
/** minimum macroblock Lagrange factor (VBR) */
|
|
128
|
+
mblmin?: number;
|
|
129
|
+
/** maximum macroblock Lagrange factor (VBR) */
|
|
130
|
+
mblmax?: number;
|
|
131
|
+
/** skip loop filtering process for the selected frames */
|
|
132
|
+
skip_loop_filter?: 'none' | 'default' | 'noref' | 'bidir' | 'nointra' | 'nokey' | 'all';
|
|
133
|
+
/** skip IDCT/dequantization for the selected frames */
|
|
134
|
+
skip_idct?: 'none' | 'default' | 'noref' | 'bidir' | 'nointra' | 'nokey' | 'all';
|
|
135
|
+
/** skip decoding for the selected frames */
|
|
136
|
+
skip_frame?: 'none' | 'default' | 'noref' | 'bidir' | 'nointra' | 'nokey' | 'all';
|
|
137
|
+
/** refine the two motion vectors used in bidirectional macroblocks */
|
|
138
|
+
bidir_refine?: number;
|
|
139
|
+
/** minimum interval between IDR-frames */
|
|
140
|
+
keyint_min?: number;
|
|
141
|
+
/** reference frames to consider for motion compensation */
|
|
142
|
+
refs?: number;
|
|
143
|
+
/** rate-distortion optimal quantization */
|
|
144
|
+
trellis?: number;
|
|
145
|
+
mv0_threshold?: number;
|
|
146
|
+
compression_level?: number;
|
|
147
|
+
bits_per_raw_sample?: number;
|
|
148
|
+
ch_layout?: string;
|
|
149
|
+
rc_max_vbv_use?: number;
|
|
150
|
+
rc_min_vbv_use?: number;
|
|
151
|
+
/** color primaries */
|
|
152
|
+
color_primaries?: 'bt709' | 'unknown' | 'bt470m' | 'bt470bg' | 'smpte170m' | 'smpte240m' | 'film' | 'bt2020' | 'smpte428' | 'smpte428_1' | 'smpte431' | 'smpte432' | 'jedec-p22' | 'ebu3213' | 'unspecified';
|
|
153
|
+
/** color transfer characteristics */
|
|
154
|
+
color_trc?: 'bt709' | 'unknown' | 'gamma22' | 'gamma28' | 'smpte170m' | 'smpte240m' | 'linear' | 'log100' | 'log316' | 'iec61966-2-4' | 'bt1361e' | 'iec61966-2-1' | 'bt2020-10' | 'bt2020-12' | 'smpte2084' | 'smpte428' | 'arib-std-b67' | 'unspecified' | 'log' | 'log_sqrt' | 'iec61966_2_4' | 'bt1361' | 'iec61966_2_1' | 'bt2020_10bit' | 'bt2020_12bit' | 'smpte428_1';
|
|
155
|
+
/** color space */
|
|
156
|
+
colorspace?: 'rgb' | 'bt709' | 'unknown' | 'fcc' | 'bt470bg' | 'smpte170m' | 'smpte240m' | 'ycgco' | 'bt2020nc' | 'bt2020c' | 'smpte2085' | 'chroma-derived-nc' | 'chroma-derived-c' | 'ictcp' | 'ipt-c2' | 'unspecified' | 'ycocg' | 'ycgco-re' | 'ycgco-ro' | 'bt2020_ncl' | 'bt2020_cl';
|
|
157
|
+
/** color range */
|
|
158
|
+
color_range?: 'unknown' | 'tv' | 'pc' | 'unspecified' | 'mpeg' | 'jpeg' | 'limited' | 'full';
|
|
159
|
+
/** chroma sample location */
|
|
160
|
+
chroma_sample_location?: 'unknown' | 'left' | 'center' | 'topleft' | 'top' | 'bottomleft' | 'bottom' | 'unspecified';
|
|
161
|
+
/** alpha mode */
|
|
162
|
+
alpha_mode?: 'unknown' | 'unspecified' | 'premultiplied' | 'straight';
|
|
163
|
+
/** set the log level offset */
|
|
164
|
+
log_level_offset?: number;
|
|
165
|
+
/** set the number of slices, used in parallelized encoding */
|
|
166
|
+
slices?: number;
|
|
167
|
+
/** select multithreading type */
|
|
168
|
+
thread_type?: 'slice' | 'frame' | (string & {});
|
|
169
|
+
/** audio service type */
|
|
170
|
+
audio_service_type?: 'ma' | 'ef' | 'vi' | 'hi' | 'di' | 'co' | 'em' | 'vo' | 'ka';
|
|
171
|
+
/** sample format audio decoders should prefer */
|
|
172
|
+
request_sample_fmt?: string;
|
|
173
|
+
pkt_timebase?: string | number;
|
|
174
|
+
/** set input text subtitles character encoding */
|
|
175
|
+
sub_charenc?: string;
|
|
176
|
+
/** set input text subtitles character encoding mode */
|
|
177
|
+
sub_charenc_mode?: 'do_nothing' | 'auto' | 'pre_decoder' | 'ignore' | (string & {});
|
|
178
|
+
apply_cropping?: boolean;
|
|
179
|
+
/** Skip processing alpha */
|
|
180
|
+
skip_alpha?: boolean;
|
|
181
|
+
/** Field order */
|
|
182
|
+
field_order?: 'progressive' | 'tt' | 'bb' | 'tb' | 'bt';
|
|
183
|
+
/** set information dump field separator */
|
|
184
|
+
dump_separator?: string;
|
|
185
|
+
/** List of decoders that are allowed to be used */
|
|
186
|
+
codec_whitelist?: string;
|
|
187
|
+
/** set pixel format */
|
|
188
|
+
pixel_format?: string;
|
|
189
|
+
/** set video size */
|
|
190
|
+
video_size?: string;
|
|
191
|
+
/** Maximum number of pixels */
|
|
192
|
+
max_pixels?: number;
|
|
193
|
+
/** Maximum number of samples */
|
|
194
|
+
max_samples?: number;
|
|
195
|
+
hwaccel_flags?: 'ignore_level' | 'allow_high_depth' | 'allow_profile_mismatch' | 'unsafe_output' | 'low_priority' | (string & {});
|
|
196
|
+
/** Number of extra hardware frames to allocate for the user */
|
|
197
|
+
extra_hw_frames?: number;
|
|
198
|
+
/** Percentage of damaged samples to discard a frame */
|
|
199
|
+
discard_damaged_percentage?: number;
|
|
200
|
+
/** Comma-separated list of side data types for which user-supplied (container) data is preferred over coded bytestream */
|
|
201
|
+
side_data_prefer_packet?: 'replaygain' | 'displaymatrix' | 'spherical' | 'stereo3d' | 'audio_service_type' | 'mastering_display_metadata' | 'content_light_level' | 'icc_profile' | 'exif';
|
|
202
|
+
}
|
|
203
|
+
export interface EncoderOptionsMap {
|
|
204
|
+
/**
|
|
205
|
+
* AAC (Advanced Audio Coding)
|
|
206
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#aac
|
|
207
|
+
*/
|
|
208
|
+
aac: {
|
|
209
|
+
/** Coding algorithm */
|
|
210
|
+
aac_coder?: 'twoloop' | 'fast';
|
|
211
|
+
/** Force M/S stereo coding */
|
|
212
|
+
aac_ms?: boolean;
|
|
213
|
+
/** Intensity stereo coding */
|
|
214
|
+
aac_is?: boolean;
|
|
215
|
+
/** Perceptual noise substitution */
|
|
216
|
+
aac_pns?: boolean;
|
|
217
|
+
/** Temporal noise shaping */
|
|
218
|
+
aac_tns?: boolean;
|
|
219
|
+
/** Forces the use of PCEs */
|
|
220
|
+
aac_pce?: boolean;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* ALAC (Apple Lossless Audio Codec)
|
|
224
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#alac
|
|
225
|
+
*/
|
|
226
|
+
alac: {
|
|
227
|
+
min_prediction_order?: number;
|
|
228
|
+
max_prediction_order?: number;
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* AMV Video
|
|
232
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#amv
|
|
233
|
+
*/
|
|
234
|
+
amv: {
|
|
235
|
+
/** Flags common for all mpegvideo-based encoders. */
|
|
236
|
+
mpv_flags?: 'skip_rd' | 'strict_gop' | 'qp_rd' | 'cbp_rd' | 'naq' | (string & {});
|
|
237
|
+
/** single coefficient elimination threshold for luminance (negative values also consider dc coefficient) */
|
|
238
|
+
luma_elim_threshold?: number;
|
|
239
|
+
/** single coefficient elimination threshold for chrominance (negative values also consider dc coefficient) */
|
|
240
|
+
chroma_elim_threshold?: number;
|
|
241
|
+
quantizer_noise_shaping?: number;
|
|
242
|
+
/** Simulate errors in the bitstream to test error concealment. */
|
|
243
|
+
error_rate?: number;
|
|
244
|
+
/** how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function) */
|
|
245
|
+
qsquish?: number;
|
|
246
|
+
/** experimental quantizer modulation */
|
|
247
|
+
rc_qmod_amp?: number;
|
|
248
|
+
/** experimental quantizer modulation */
|
|
249
|
+
rc_qmod_freq?: number;
|
|
250
|
+
/** Set rate control equation. When computing the expression, besides the standard functions */
|
|
251
|
+
rc_eq?: string;
|
|
252
|
+
/** initial complexity for 1-pass encoding */
|
|
253
|
+
rc_init_cplx?: number;
|
|
254
|
+
/** currently useless */
|
|
255
|
+
rc_buf_aggressivity?: number;
|
|
256
|
+
/** increase the quantizer for macroblocks close to borders */
|
|
257
|
+
border_mask?: number;
|
|
258
|
+
/** minimum Lagrange factor (VBR) */
|
|
259
|
+
lmin?: number;
|
|
260
|
+
/** maximum Lagrange factor (VBR) */
|
|
261
|
+
lmax?: number;
|
|
262
|
+
/** Frame skip threshold */
|
|
263
|
+
skip_threshold?: number;
|
|
264
|
+
/** Frame skip factor */
|
|
265
|
+
skip_factor?: number;
|
|
266
|
+
/** Frame skip exponent */
|
|
267
|
+
skip_exp?: number;
|
|
268
|
+
/** Frame skip compare function */
|
|
269
|
+
skip_cmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'dct264' | 'dctmax' | 'chroma' | 'msad';
|
|
270
|
+
/** Noise reduction */
|
|
271
|
+
noise_reduction?: number;
|
|
272
|
+
/** RTP payload size in bytes */
|
|
273
|
+
ps?: number;
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* APNG (Animated Portable Network Graphics) image
|
|
277
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#apng
|
|
278
|
+
*/
|
|
279
|
+
apng: {
|
|
280
|
+
/** Set image resolution (in dots per inch) */
|
|
281
|
+
dpi?: number;
|
|
282
|
+
/** Set image resolution (in dots per meter) */
|
|
283
|
+
dpm?: number;
|
|
284
|
+
/** Prediction method */
|
|
285
|
+
pred?: 'none' | 'sub' | 'up' | 'avg' | 'paeth' | 'mixed';
|
|
286
|
+
};
|
|
287
|
+
/**
|
|
288
|
+
* AMD AMF AV1 encoder
|
|
289
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#av1_005famf
|
|
290
|
+
*/
|
|
291
|
+
av1_amf: {
|
|
292
|
+
/** Set the encoding usage */
|
|
293
|
+
usage?: 'transcoding' | 'ultralowlatency' | 'lowlatency' | 'webcam' | 'high_quality' | 'lowlatency_high_quality';
|
|
294
|
+
/** Set color bit deph */
|
|
295
|
+
bitdepth?: '8' | '10';
|
|
296
|
+
/** Set the profile */
|
|
297
|
+
profile?: 'main';
|
|
298
|
+
/** Set the encoding level (default auto) */
|
|
299
|
+
level?: 'auto' | '2.0' | '2.1' | '2.2' | '2.3' | '3.0' | '3.1' | '3.2' | '3.3' | '4.0' | '4.1' | '4.2' | '4.3' | '5.0' | '5.1' | '5.2' | '5.3' | '6.0' | '6.1' | '6.2' | '6.3' | '7.0' | '7.1' | '7.2' | '7.3';
|
|
300
|
+
/** Set the encoding quality preset */
|
|
301
|
+
quality?: 'high_quality' | 'quality' | 'balanced' | 'speed';
|
|
302
|
+
/** Set the encoding quality preset */
|
|
303
|
+
preset?: 'high_quality' | 'quality' | 'balanced' | 'speed';
|
|
304
|
+
/** Set the encoding latency mode */
|
|
305
|
+
latency?: 'none' | 'power_saving_real_time' | 'real_time' | 'lowest_latency';
|
|
306
|
+
/** Set the rate control mode */
|
|
307
|
+
rc?: 'cqp' | 'vbr_latency' | 'vbr_peak' | 'cbr' | 'qvbr' | 'hqvbr' | 'hqcbr';
|
|
308
|
+
/** Sets the QVBR quality level */
|
|
309
|
+
qvbr_quality_level?: number;
|
|
310
|
+
/** Set header insertion mode */
|
|
311
|
+
header_insertion_mode?: 'none' | 'gop' | 'frame';
|
|
312
|
+
/** Set maximum encoding parallelism. Higher values increase output latency. */
|
|
313
|
+
async_depth?: number;
|
|
314
|
+
/** Enable preencode */
|
|
315
|
+
preencode?: boolean;
|
|
316
|
+
/** Enforce HRD */
|
|
317
|
+
enforce_hrd?: boolean;
|
|
318
|
+
/** Filler Data Enable */
|
|
319
|
+
filler_data?: boolean;
|
|
320
|
+
/** Maximum number of consecutive B Pictures */
|
|
321
|
+
max_b_frames?: number;
|
|
322
|
+
/** B Picture Pattern */
|
|
323
|
+
bf?: number;
|
|
324
|
+
/** Enable High motion quality boost mode */
|
|
325
|
+
high_motion_quality_boost_enable?: boolean;
|
|
326
|
+
/** min quantization parameter for I-frame */
|
|
327
|
+
min_qp_i?: number;
|
|
328
|
+
/** max quantization parameter for I-frame */
|
|
329
|
+
max_qp_i?: number;
|
|
330
|
+
/** min quantization parameter for P-frame */
|
|
331
|
+
min_qp_p?: number;
|
|
332
|
+
/** max quantization parameter for P-frame */
|
|
333
|
+
max_qp_p?: number;
|
|
334
|
+
/** min quantization parameter for B-frame */
|
|
335
|
+
min_qp_b?: number;
|
|
336
|
+
/** max quantization parameter for B-frame */
|
|
337
|
+
max_qp_b?: number;
|
|
338
|
+
/** quantization parameter for P-frame */
|
|
339
|
+
qp_p?: number;
|
|
340
|
+
/** quantization parameter for I-frame */
|
|
341
|
+
qp_i?: number;
|
|
342
|
+
/** quantization parameter for B-frame */
|
|
343
|
+
qp_b?: number;
|
|
344
|
+
/** Rate Control Based Frame Skip */
|
|
345
|
+
skip_frame?: boolean;
|
|
346
|
+
/** adaptive quantization mode */
|
|
347
|
+
aq_mode?: 'none' | 'caq';
|
|
348
|
+
/** Force I frames to be IDR frames */
|
|
349
|
+
forced_idr?: boolean;
|
|
350
|
+
/** alignment mode */
|
|
351
|
+
align?: '64x16' | '1080p' | 'none';
|
|
352
|
+
/** Enable Smart Access Video to enhance performance by utilizing both APU and dGPU memory access */
|
|
353
|
+
smart_access_video?: boolean;
|
|
354
|
+
/** Enable preanalysis */
|
|
355
|
+
preanalysis?: boolean;
|
|
356
|
+
/** Set the type of activity analysis */
|
|
357
|
+
pa_activity_type?: 'y' | 'yuv';
|
|
358
|
+
/** Enable scene change detection */
|
|
359
|
+
pa_scene_change_detection_enable?: boolean;
|
|
360
|
+
/** Set the sensitivity of scene change detection */
|
|
361
|
+
pa_scene_change_detection_sensitivity?: 'low' | 'medium' | 'high';
|
|
362
|
+
/** Enable static scene detection */
|
|
363
|
+
pa_static_scene_detection_enable?: boolean;
|
|
364
|
+
/** Set the sensitivity of static scene detection */
|
|
365
|
+
pa_static_scene_detection_sensitivity?: 'low' | 'medium' | 'high';
|
|
366
|
+
/** The QP value that is used immediately after a scene change */
|
|
367
|
+
pa_initial_qp_after_scene_change?: number;
|
|
368
|
+
/** The QP threshold to allow a skip frame */
|
|
369
|
+
pa_max_qp_before_force_skip?: number;
|
|
370
|
+
/** Content Adaptive Quantization strength */
|
|
371
|
+
pa_caq_strength?: 'low' | 'medium' | 'high';
|
|
372
|
+
/** Enable Frame SAD algorithm */
|
|
373
|
+
pa_frame_sad_enable?: boolean;
|
|
374
|
+
/** Enable long term reference frame management */
|
|
375
|
+
pa_ltr_enable?: boolean;
|
|
376
|
+
/** Sets the PA lookahead buffer size */
|
|
377
|
+
pa_lookahead_buffer_depth?: number;
|
|
378
|
+
/** Sets the perceptual adaptive quantization mode */
|
|
379
|
+
pa_paq_mode?: 'none' | 'caq';
|
|
380
|
+
/** Sets the temporal adaptive quantization mode */
|
|
381
|
+
pa_taq_mode?: 'none' | '1' | '2';
|
|
382
|
+
/** Sets the PA high motion quality boost mode */
|
|
383
|
+
pa_high_motion_quality_boost_mode?: 'none' | 'auto';
|
|
384
|
+
/** Enable Adaptive B-frame */
|
|
385
|
+
pa_adaptive_mini_gop?: boolean;
|
|
386
|
+
};
|
|
387
|
+
/**
|
|
388
|
+
* D3D12VA av1 encoder
|
|
389
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#av1_005fd3d12va
|
|
390
|
+
*/
|
|
391
|
+
av1_d3d12va: {
|
|
392
|
+
/** Distance (in I-frames) between key frames */
|
|
393
|
+
idr_interval?: number;
|
|
394
|
+
/** Maximum B-frame reference depth */
|
|
395
|
+
b_depth?: number;
|
|
396
|
+
/** Maximum processing parallelism. */
|
|
397
|
+
async_depth?: number;
|
|
398
|
+
/** Maximum frame size (in bytes) */
|
|
399
|
+
max_frame_size?: number;
|
|
400
|
+
/** Set intra refresh mode */
|
|
401
|
+
intra_refresh_mode?: 'none' | 'row_based';
|
|
402
|
+
/** Number of frames over which to spread intra refresh (0 = GOP size) */
|
|
403
|
+
intra_refresh_duration?: number;
|
|
404
|
+
/** Motion estimation precision mode */
|
|
405
|
+
me_precision?: 'maximum' | 'full_pixel' | 'half_pixel' | 'quarter_pixel' | 'eighth_pixel';
|
|
406
|
+
/** Set rate control mode */
|
|
407
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'QVBR';
|
|
408
|
+
/** Constant QP (for P-frames; scaled by qfactor/qoffset for I/B) */
|
|
409
|
+
qp?: number;
|
|
410
|
+
/** Set profile (general_profile_idc) */
|
|
411
|
+
profile?: number;
|
|
412
|
+
/** Set tier (general_tier_flag) */
|
|
413
|
+
tier?: number;
|
|
414
|
+
/** Set level (general_level_idc) */
|
|
415
|
+
level?: number;
|
|
416
|
+
};
|
|
417
|
+
/**
|
|
418
|
+
* NVIDIA NVENC av1 encoder
|
|
419
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#av1_005fnvenc
|
|
420
|
+
*/
|
|
421
|
+
av1_nvenc: {
|
|
422
|
+
/** Set the encoding preset */
|
|
423
|
+
preset?: 'default' | 'slow' | 'medium' | 'fast' | 'p1' | 'p2' | 'p3' | 'p4' | 'p5' | 'p6' | 'p7';
|
|
424
|
+
/** Set the encoding tuning info */
|
|
425
|
+
tune?: 'hq' | 'uhq' | 'll' | 'ull' | 'lossless';
|
|
426
|
+
/** Set the encoding level restriction */
|
|
427
|
+
level?: 'auto' | '2' | '2.0' | '2.1' | '2.2' | '2.3' | '3' | '3.0' | '3.1' | '3.2' | '3.3' | '4' | '4.0' | '4.1' | '4.2' | '4.3' | '5' | '5.0' | '5.1' | '5.2' | '5.3' | '6' | '6.0' | '6.1' | '6.2' | '6.3' | '7' | '7.0' | '7.1' | '7.2' | '7.3';
|
|
428
|
+
/** Set the encoding tier */
|
|
429
|
+
tier?: '0' | '1';
|
|
430
|
+
/** Override the preset rate-control */
|
|
431
|
+
rc?: 'constqp' | 'vbr' | 'cbr';
|
|
432
|
+
/** Set the multipass encoding */
|
|
433
|
+
multipass?: 'disabled' | 'qres' | 'fullres';
|
|
434
|
+
/** Enable 10 bit encode for 8 bit input */
|
|
435
|
+
highbitdepth?: boolean;
|
|
436
|
+
/** Number of tile rows to encode with */
|
|
437
|
+
'tile-rows'?: number;
|
|
438
|
+
/** Number of tile columns to encode with */
|
|
439
|
+
'tile-columns'?: number;
|
|
440
|
+
/** Number of concurrent surfaces */
|
|
441
|
+
surfaces?: number;
|
|
442
|
+
/** Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. */
|
|
443
|
+
gpu?: 'any' | 'list';
|
|
444
|
+
/** Configure how nvenc handles packed RGB input. */
|
|
445
|
+
rgb_mode?: 'yuv420' | 'yuv444' | 'disabled';
|
|
446
|
+
/** Delay frame output by the given amount of frames */
|
|
447
|
+
delay?: number;
|
|
448
|
+
/** Number of frames to look ahead for rate-control */
|
|
449
|
+
'rc-lookahead'?: number;
|
|
450
|
+
/** Set target quality level (0 to 63, 0 means automatic) for constant quality mode in VBR rate control */
|
|
451
|
+
cq?: number;
|
|
452
|
+
/** Initial QP value for P frame */
|
|
453
|
+
init_qpP?: number;
|
|
454
|
+
/** Initial QP value for B frame */
|
|
455
|
+
init_qpB?: number;
|
|
456
|
+
/** Initial QP value for I frame */
|
|
457
|
+
init_qpI?: number;
|
|
458
|
+
/** Constant quantization parameter rate control method */
|
|
459
|
+
qp?: number;
|
|
460
|
+
/** Quantization parameter offset for cb channel */
|
|
461
|
+
qp_cb_offset?: number;
|
|
462
|
+
/** Quantization parameter offset for cr channel */
|
|
463
|
+
qp_cr_offset?: number;
|
|
464
|
+
/** Specifies the minimum QP used for rate control */
|
|
465
|
+
qmin?: number;
|
|
466
|
+
/** Specifies the maximum QP used for rate control */
|
|
467
|
+
qmax?: number;
|
|
468
|
+
/** When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts */
|
|
469
|
+
'no-scenecut'?: boolean;
|
|
470
|
+
/** If forcing keyframes, force them as IDR frames. */
|
|
471
|
+
'forced-idr'?: boolean;
|
|
472
|
+
/** When lookahead is enabled, set this to 0 to disable adaptive B-frame decision */
|
|
473
|
+
b_adapt?: boolean;
|
|
474
|
+
/** set to 1 to enable Spatial AQ */
|
|
475
|
+
'spatial-aq'?: boolean;
|
|
476
|
+
/** set to 1 to enable Temporal AQ */
|
|
477
|
+
'temporal-aq'?: boolean;
|
|
478
|
+
/** Set 1 to indicate zero latency operation (no reordering delay) */
|
|
479
|
+
zerolatency?: boolean;
|
|
480
|
+
/** Set this to 1 to enable automatic insertion of non-reference P-frames */
|
|
481
|
+
nonref_p?: boolean;
|
|
482
|
+
/** Set 1 to minimize GOP-to-GOP rate fluctuations */
|
|
483
|
+
strict_gop?: boolean;
|
|
484
|
+
/** When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) */
|
|
485
|
+
'aq-strength'?: number;
|
|
486
|
+
/** Enable weighted prediction */
|
|
487
|
+
weighted_pred?: boolean;
|
|
488
|
+
/** Use B frames as references */
|
|
489
|
+
b_ref_mode?: 'disabled' | 'each' | 'middle';
|
|
490
|
+
/** Specifies the DPB size used for encoding (0 means automatic) */
|
|
491
|
+
dpb_size?: number;
|
|
492
|
+
/** Low delay key frame scale; Specifies the Scene Change frame size increase allowed in case of single frame VBV and CBR */
|
|
493
|
+
ldkfs?: number;
|
|
494
|
+
/** Use Periodic Intra Refresh instead of IDR frames */
|
|
495
|
+
'intra-refresh'?: boolean;
|
|
496
|
+
/** Include timing info in sequence/frame headers */
|
|
497
|
+
'timing-info'?: boolean;
|
|
498
|
+
/** Pass on extra SEI data (e.g. a53 cc) to be included in the bitstream */
|
|
499
|
+
extra_sei?: boolean;
|
|
500
|
+
/** Use A53 Closed Captions (if available) */
|
|
501
|
+
a53cc?: boolean;
|
|
502
|
+
/** Use timecode (if available) */
|
|
503
|
+
s12m_tc?: boolean;
|
|
504
|
+
/** Pad the bitstream to ensure bitrate does not drop below the target in CBR mode */
|
|
505
|
+
cbr_padding?: boolean;
|
|
506
|
+
/** Specifies the strength of the temporal filtering */
|
|
507
|
+
tf_level?: '0' | '4';
|
|
508
|
+
/** Specifies the lookahead level. Higher level may improve quality at the expense of performance. */
|
|
509
|
+
lookahead_level?: 'auto' | '0' | '1' | '2' | '3';
|
|
510
|
+
/** Specifies the split encoding mode */
|
|
511
|
+
split_encode_mode?: 'disabled' | 'auto' | 'forced' | '2' | '3' | '4';
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* AV1 (Intel Quick Sync Video acceleration)
|
|
515
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#av1_005fqsv
|
|
516
|
+
*/
|
|
517
|
+
av1_qsv: {
|
|
518
|
+
/** Maximum processing parallelism */
|
|
519
|
+
async_depth?: number;
|
|
520
|
+
preset?: 'veryfast' | 'faster' | 'fast' | 'medium' | 'slow' | 'slower' | 'veryslow';
|
|
521
|
+
/** Forcing I frames as IDR frames */
|
|
522
|
+
forced_idr?: boolean;
|
|
523
|
+
/** enable low power mode(experimental: many limitations by mfx version, BRC modes, etc.) */
|
|
524
|
+
low_power?: boolean;
|
|
525
|
+
/** Set QSV encoder parameters as key1=value1:key2=value2:... */
|
|
526
|
+
qsv_params?: string;
|
|
527
|
+
/** Strategy to choose between I/P/B-frames */
|
|
528
|
+
b_strategy?: number;
|
|
529
|
+
/** Adaptive I-frame placement */
|
|
530
|
+
adaptive_i?: number;
|
|
531
|
+
/** Adaptive B-frame placement */
|
|
532
|
+
adaptive_b?: number;
|
|
533
|
+
/** Extended bitrate control */
|
|
534
|
+
extbrc?: number;
|
|
535
|
+
/** Allow to strictly obey avg frame size */
|
|
536
|
+
low_delay_brc?: boolean;
|
|
537
|
+
/** Maximum encoded frame size in bytes */
|
|
538
|
+
max_frame_size?: number;
|
|
539
|
+
/** Maximum encoded I frame size in bytes */
|
|
540
|
+
max_frame_size_i?: number;
|
|
541
|
+
/** Maximum encoded P frame size in bytes */
|
|
542
|
+
max_frame_size_p?: number;
|
|
543
|
+
profile?: 'unknown' | 'main';
|
|
544
|
+
/** Number of columns for tiled encoding */
|
|
545
|
+
tile_cols?: number;
|
|
546
|
+
/** Number of rows for tiled encoding */
|
|
547
|
+
tile_rows?: number;
|
|
548
|
+
/** Depth of look ahead in number frames, available when extbrc option is enabled */
|
|
549
|
+
look_ahead_depth?: number;
|
|
550
|
+
};
|
|
551
|
+
/**
|
|
552
|
+
* AV1 (VAAPI)
|
|
553
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#av1_005fvaapi
|
|
554
|
+
*/
|
|
555
|
+
av1_vaapi: {
|
|
556
|
+
/** Distance (in I-frames) between key frames */
|
|
557
|
+
idr_interval?: number;
|
|
558
|
+
/** Maximum B-frame reference depth */
|
|
559
|
+
b_depth?: number;
|
|
560
|
+
/** Maximum processing parallelism. */
|
|
561
|
+
async_depth?: number;
|
|
562
|
+
/** Use low-power encoding mode (only available on some platforms; */
|
|
563
|
+
low_power?: boolean;
|
|
564
|
+
/** Maximum frame size (in bytes) */
|
|
565
|
+
max_frame_size?: number;
|
|
566
|
+
/** Set rate control mode */
|
|
567
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'ICQ' | 'QVBR' | 'AVBR';
|
|
568
|
+
/** Block level based bitrate control */
|
|
569
|
+
blbrc?: boolean;
|
|
570
|
+
/** Set profile (seq_profile) */
|
|
571
|
+
profile?: 'main' | 'high' | 'professional';
|
|
572
|
+
/** Set tier (seq_tier) */
|
|
573
|
+
tier?: 'main' | 'high';
|
|
574
|
+
/** Set level (seq_level_idx) */
|
|
575
|
+
level?: '2.0' | '2.1' | '3.0' | '3.1' | '4.0' | '4.1' | '5.0' | '5.1' | '5.2' | '5.3' | '6.0' | '6.1' | '6.2' | '6.3';
|
|
576
|
+
/** Tile columns x rows (Use minimal tile column/row number automatically by default) */
|
|
577
|
+
tiles?: string;
|
|
578
|
+
/** Number of tile groups for encoding */
|
|
579
|
+
tile_groups?: number;
|
|
580
|
+
};
|
|
581
|
+
/**
|
|
582
|
+
* AV1 (Vulkan)
|
|
583
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#av1_005fvulkan
|
|
584
|
+
*/
|
|
585
|
+
av1_vulkan: {
|
|
586
|
+
/** Distance (in I-frames) between key frames */
|
|
587
|
+
idr_interval?: number;
|
|
588
|
+
/** Maximum B-frame reference depth */
|
|
589
|
+
b_depth?: number;
|
|
590
|
+
/** Maximum processing parallelism. */
|
|
591
|
+
async_depth?: number;
|
|
592
|
+
/** Use an explicit constant quantizer for the whole stream */
|
|
593
|
+
qp?: number;
|
|
594
|
+
/** Set encode quality (trades off against speed, higher is slower) */
|
|
595
|
+
quality?: number;
|
|
596
|
+
/** Select rate control type */
|
|
597
|
+
rc_mode?: number;
|
|
598
|
+
/** Select tuning type */
|
|
599
|
+
tune?: number;
|
|
600
|
+
/** Select usage type */
|
|
601
|
+
usage?: string;
|
|
602
|
+
/** Select content type */
|
|
603
|
+
content?: string;
|
|
604
|
+
/** Set profile */
|
|
605
|
+
profile?: 'main' | 'high' | 'professional';
|
|
606
|
+
/** Set tier (seq_tier) */
|
|
607
|
+
tier?: 'main' | 'high';
|
|
608
|
+
/** Set level (level_idc) */
|
|
609
|
+
level?: '20' | '21' | '22' | '23' | '30' | '31' | '32' | '33' | '40' | '41' | '42' | '43' | '50' | '51' | '52' | '53' | '60' | '61' | '62' | '63' | '70' | '71' | '72' | '73';
|
|
610
|
+
/** Set units to include */
|
|
611
|
+
units?: string;
|
|
612
|
+
};
|
|
613
|
+
/**
|
|
614
|
+
* GoPro CineForm HD
|
|
615
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#cfhd
|
|
616
|
+
*/
|
|
617
|
+
cfhd: {
|
|
618
|
+
/** set quality */
|
|
619
|
+
quality?: 'film3+' | 'film3' | 'film2+' | 'film2' | 'film1.5' | 'film1+' | 'film1' | 'high+' | 'high' | 'medium+' | 'medium' | 'low+' | 'low';
|
|
620
|
+
};
|
|
621
|
+
/**
|
|
622
|
+
* Cinepak
|
|
623
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#cinepak
|
|
624
|
+
*/
|
|
625
|
+
cinepak: {
|
|
626
|
+
/** Max extra codebook recalculation passes, more is better and slower */
|
|
627
|
+
max_extra_cb_iterations?: number;
|
|
628
|
+
/** Avoid wasting bytes, ignore vintage MacOS decoder */
|
|
629
|
+
skip_empty_cb?: boolean;
|
|
630
|
+
/** Limit strips/frame, vintage compatible is 1..3, otherwise the more the better */
|
|
631
|
+
max_strips?: number;
|
|
632
|
+
/** Enforce min strips/frame, more is worse and faster, must be <= max_strips */
|
|
633
|
+
min_strips?: number;
|
|
634
|
+
/** How fast the strip number adapts, more is slightly better, much slower */
|
|
635
|
+
strip_number_adaptivity?: number;
|
|
636
|
+
};
|
|
637
|
+
/**
|
|
638
|
+
* Cirrus Logic AccuPak
|
|
639
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#cljr
|
|
640
|
+
*/
|
|
641
|
+
cljr: {
|
|
642
|
+
/** Dither type */
|
|
643
|
+
dither_type?: number;
|
|
644
|
+
};
|
|
645
|
+
/**
|
|
646
|
+
* DCA (DTS Coherent Acoustics)
|
|
647
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dca
|
|
648
|
+
*/
|
|
649
|
+
dca: {
|
|
650
|
+
/** Use ADPCM encoding */
|
|
651
|
+
dca_adpcm?: boolean;
|
|
652
|
+
};
|
|
653
|
+
/**
|
|
654
|
+
* VC3/DNxHD
|
|
655
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dnxhd
|
|
656
|
+
*/
|
|
657
|
+
dnxhd: {
|
|
658
|
+
/** encode with Avid Nitris compatibility */
|
|
659
|
+
nitris_compat?: boolean;
|
|
660
|
+
/** intra quant bias */
|
|
661
|
+
ibias?: number;
|
|
662
|
+
profile?: 'dnxhd' | 'dnxhr_444' | 'dnxhr_hqx' | 'dnxhr_hq' | 'dnxhr_sq' | 'dnxhr_lb';
|
|
663
|
+
};
|
|
664
|
+
/**
|
|
665
|
+
* DVB subtitles
|
|
666
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dvbsub
|
|
667
|
+
*/
|
|
668
|
+
dvbsub: {
|
|
669
|
+
/** minimum bits-per-pixel for subtitle colors (2, 4 or 8) */
|
|
670
|
+
min_bpp?: number;
|
|
671
|
+
};
|
|
672
|
+
/**
|
|
673
|
+
* DVD subtitles
|
|
674
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dvdsub
|
|
675
|
+
*/
|
|
676
|
+
dvdsub: {
|
|
677
|
+
/** set the global palette */
|
|
678
|
+
palette?: string;
|
|
679
|
+
/** Make number of rows even (workaround for some players) */
|
|
680
|
+
even_rows_fix?: boolean;
|
|
681
|
+
};
|
|
682
|
+
/**
|
|
683
|
+
* DV (Digital Video)
|
|
684
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dvvideo
|
|
685
|
+
*/
|
|
686
|
+
dvvideo: {
|
|
687
|
+
/** Quantizer dead zone */
|
|
688
|
+
quant_deadzone?: number;
|
|
689
|
+
};
|
|
690
|
+
/**
|
|
691
|
+
* Resolume DXV
|
|
692
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dxv
|
|
693
|
+
*/
|
|
694
|
+
dxv: {
|
|
695
|
+
format?: 'dxt1';
|
|
696
|
+
};
|
|
697
|
+
/**
|
|
698
|
+
* OpenEXR image
|
|
699
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#exr
|
|
700
|
+
*/
|
|
701
|
+
exr: {
|
|
702
|
+
/** set compression type */
|
|
703
|
+
compression?: 'none' | 'rle' | 'zip1' | 'zip16';
|
|
704
|
+
/** set pixel type */
|
|
705
|
+
format?: 'half' | 'float';
|
|
706
|
+
/** set gamma */
|
|
707
|
+
gamma?: number;
|
|
708
|
+
};
|
|
709
|
+
/**
|
|
710
|
+
* FFmpeg video codec #1
|
|
711
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#ffv1
|
|
712
|
+
*/
|
|
713
|
+
ffv1: {
|
|
714
|
+
/** Protect slices with CRCs */
|
|
715
|
+
slicecrc?: number;
|
|
716
|
+
/** Coder type */
|
|
717
|
+
coder?: 'rice' | 'range_def' | 'range_tab' | 'ac';
|
|
718
|
+
/** Context model */
|
|
719
|
+
context?: number;
|
|
720
|
+
/** Quantization table */
|
|
721
|
+
qtable?: 'default' | '8bit' | 'greater8bit';
|
|
722
|
+
/** Remap Mode */
|
|
723
|
+
remap_mode?: 'auto' | 'off' | 'dualrle' | 'flipdualrle';
|
|
724
|
+
/** Remap Optimizer */
|
|
725
|
+
remap_optimizer?: number;
|
|
726
|
+
};
|
|
727
|
+
/**
|
|
728
|
+
* FFmpeg video codec #1 (Vulkan)
|
|
729
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#ffv1_005fvulkan
|
|
730
|
+
*/
|
|
731
|
+
ffv1_vulkan: {
|
|
732
|
+
/** Protect slices with CRCs */
|
|
733
|
+
slicecrc?: number;
|
|
734
|
+
/** Context model */
|
|
735
|
+
context?: number;
|
|
736
|
+
/** Coder type */
|
|
737
|
+
coder?: 'rice' | 'range_def' | 'range_tab';
|
|
738
|
+
/** Quantization table */
|
|
739
|
+
qtable?: 'default' | '8bit' | 'greater8bit';
|
|
740
|
+
/** Number of horizontal slices */
|
|
741
|
+
slices_h?: number;
|
|
742
|
+
/** Number of vertical slices */
|
|
743
|
+
slices_v?: number;
|
|
744
|
+
/** Code all slices with no prediction */
|
|
745
|
+
force_pcm?: boolean;
|
|
746
|
+
/** Run a search for RCT parameters (level 4 only) */
|
|
747
|
+
rct_search?: boolean;
|
|
748
|
+
/** Internal parallelization depth */
|
|
749
|
+
async_depth?: number;
|
|
750
|
+
/** Remap Mode */
|
|
751
|
+
remap_mode?: 'auto' | 'off' | 'dualrle' | 'flipdualrle';
|
|
752
|
+
};
|
|
753
|
+
/**
|
|
754
|
+
* Huffyuv FFmpeg variant
|
|
755
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#ffvhuff
|
|
756
|
+
*/
|
|
757
|
+
ffvhuff: {
|
|
758
|
+
/** Set per-frame huffman tables */
|
|
759
|
+
context?: number;
|
|
760
|
+
/** Allow multithreading for e.g. context=1 at the expense of determinism */
|
|
761
|
+
non_deterministic?: boolean;
|
|
762
|
+
/** Prediction method */
|
|
763
|
+
pred?: 'left' | 'plane' | 'median';
|
|
764
|
+
};
|
|
765
|
+
/**
|
|
766
|
+
* FLAC (Free Lossless Audio Codec)
|
|
767
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#flac
|
|
768
|
+
*/
|
|
769
|
+
flac: {
|
|
770
|
+
/** LPC coefficient precision */
|
|
771
|
+
lpc_coeff_precision?: number;
|
|
772
|
+
/** LPC algorithm */
|
|
773
|
+
lpc_type?: 'none' | 'fixed' | 'levinson' | 'cholesky';
|
|
774
|
+
/** Number of passes to use for Cholesky factorization during LPC analysis */
|
|
775
|
+
lpc_passes?: number;
|
|
776
|
+
min_partition_order?: number;
|
|
777
|
+
max_partition_order?: number;
|
|
778
|
+
/** Search method for selecting prediction order */
|
|
779
|
+
prediction_order_method?: 'estimation' | '2level' | '4level' | '8level' | 'search' | 'log';
|
|
780
|
+
/** Stereo decorrelation mode */
|
|
781
|
+
ch_mode?: 'auto' | 'indep' | 'left_side' | 'right_side' | 'mid_side';
|
|
782
|
+
/** Calculate rice parameters exactly */
|
|
783
|
+
exact_rice_parameters?: boolean;
|
|
784
|
+
/** Multi-dimensional quantization */
|
|
785
|
+
multi_dim_quant?: boolean;
|
|
786
|
+
min_prediction_order?: number;
|
|
787
|
+
max_prediction_order?: number;
|
|
788
|
+
};
|
|
789
|
+
/**
|
|
790
|
+
* G.726 ADPCM
|
|
791
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#g726
|
|
792
|
+
*/
|
|
793
|
+
g726: {
|
|
794
|
+
/** Bits per code */
|
|
795
|
+
code_size?: number;
|
|
796
|
+
};
|
|
797
|
+
/**
|
|
798
|
+
* G.726 little endian ADPCM (\"right-justified\")
|
|
799
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#g726le
|
|
800
|
+
*/
|
|
801
|
+
g726le: {
|
|
802
|
+
/** Bits per code */
|
|
803
|
+
code_size?: number;
|
|
804
|
+
};
|
|
805
|
+
/**
|
|
806
|
+
* GIF (Graphics Interchange Format)
|
|
807
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#gif
|
|
808
|
+
*/
|
|
809
|
+
gif: {
|
|
810
|
+
/** set GIF flags */
|
|
811
|
+
gifflags?: 'offsetting' | 'transdiff' | (string & {});
|
|
812
|
+
/** enable encoding only images per frame */
|
|
813
|
+
gifimage?: boolean;
|
|
814
|
+
/** write a palette to the global gif header where feasible */
|
|
815
|
+
global_palette?: boolean;
|
|
816
|
+
};
|
|
817
|
+
/**
|
|
818
|
+
* H.263 / H.263-1996
|
|
819
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h263
|
|
820
|
+
*/
|
|
821
|
+
h263: {
|
|
822
|
+
/** use overlapped block motion compensation. */
|
|
823
|
+
obmc?: boolean;
|
|
824
|
+
/** emit macroblock info for RFC 2190 packetization, the parameter value is the maximum payload size */
|
|
825
|
+
mb_info?: number;
|
|
826
|
+
/** Flags common for all mpegvideo-based encoders. */
|
|
827
|
+
mpv_flags?: 'skip_rd' | 'strict_gop' | 'qp_rd' | 'cbp_rd' | 'naq' | 'mv0' | (string & {});
|
|
828
|
+
/** single coefficient elimination threshold for luminance (negative values also consider dc coefficient) */
|
|
829
|
+
luma_elim_threshold?: number;
|
|
830
|
+
/** single coefficient elimination threshold for chrominance (negative values also consider dc coefficient) */
|
|
831
|
+
chroma_elim_threshold?: number;
|
|
832
|
+
quantizer_noise_shaping?: number;
|
|
833
|
+
/** Simulate errors in the bitstream to test error concealment. */
|
|
834
|
+
error_rate?: number;
|
|
835
|
+
/** how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function) */
|
|
836
|
+
qsquish?: number;
|
|
837
|
+
/** experimental quantizer modulation */
|
|
838
|
+
rc_qmod_amp?: number;
|
|
839
|
+
/** experimental quantizer modulation */
|
|
840
|
+
rc_qmod_freq?: number;
|
|
841
|
+
/** Set rate control equation. When computing the expression, besides the standard functions */
|
|
842
|
+
rc_eq?: string;
|
|
843
|
+
/** initial complexity for 1-pass encoding */
|
|
844
|
+
rc_init_cplx?: number;
|
|
845
|
+
/** currently useless */
|
|
846
|
+
rc_buf_aggressivity?: number;
|
|
847
|
+
/** increase the quantizer for macroblocks close to borders */
|
|
848
|
+
border_mask?: number;
|
|
849
|
+
/** minimum Lagrange factor (VBR) */
|
|
850
|
+
lmin?: number;
|
|
851
|
+
/** maximum Lagrange factor (VBR) */
|
|
852
|
+
lmax?: number;
|
|
853
|
+
/** Frame skip threshold */
|
|
854
|
+
skip_threshold?: number;
|
|
855
|
+
/** Frame skip factor */
|
|
856
|
+
skip_factor?: number;
|
|
857
|
+
/** Frame skip exponent */
|
|
858
|
+
skip_exp?: number;
|
|
859
|
+
/** Frame skip compare function */
|
|
860
|
+
skip_cmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'dct264' | 'dctmax' | 'chroma' | 'msad';
|
|
861
|
+
/** Noise reduction */
|
|
862
|
+
noise_reduction?: number;
|
|
863
|
+
/** RTP payload size in bytes */
|
|
864
|
+
ps?: number;
|
|
865
|
+
/** motion estimation algorithm */
|
|
866
|
+
motion_est?: 'zero' | 'epzs' | 'xone';
|
|
867
|
+
/** Motion estimation bitrate penalty compensation (1.0 = 256) */
|
|
868
|
+
mepc?: number;
|
|
869
|
+
/** pre motion estimation */
|
|
870
|
+
mepre?: number;
|
|
871
|
+
/** Penalty for intra blocks in block decision */
|
|
872
|
+
intra_penalty?: number;
|
|
873
|
+
/** Scene change threshold */
|
|
874
|
+
sc_threshold?: number;
|
|
875
|
+
};
|
|
876
|
+
/**
|
|
877
|
+
* H.263+ / H.263-1998 / H.263 version 2
|
|
878
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h263p
|
|
879
|
+
*/
|
|
880
|
+
h263p: {
|
|
881
|
+
/** Use unlimited motion vectors. */
|
|
882
|
+
umv?: boolean;
|
|
883
|
+
/** Use alternative inter VLC. */
|
|
884
|
+
aiv?: boolean;
|
|
885
|
+
/** use overlapped block motion compensation. */
|
|
886
|
+
obmc?: boolean;
|
|
887
|
+
/** Write slice start position at every GOB header instead of just GOB number. */
|
|
888
|
+
structured_slices?: boolean;
|
|
889
|
+
/** Flags common for all mpegvideo-based encoders. */
|
|
890
|
+
mpv_flags?: 'skip_rd' | 'strict_gop' | 'qp_rd' | 'cbp_rd' | 'naq' | 'mv0' | (string & {});
|
|
891
|
+
/** single coefficient elimination threshold for luminance (negative values also consider dc coefficient) */
|
|
892
|
+
luma_elim_threshold?: number;
|
|
893
|
+
/** single coefficient elimination threshold for chrominance (negative values also consider dc coefficient) */
|
|
894
|
+
chroma_elim_threshold?: number;
|
|
895
|
+
quantizer_noise_shaping?: number;
|
|
896
|
+
/** Simulate errors in the bitstream to test error concealment. */
|
|
897
|
+
error_rate?: number;
|
|
898
|
+
/** how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function) */
|
|
899
|
+
qsquish?: number;
|
|
900
|
+
/** experimental quantizer modulation */
|
|
901
|
+
rc_qmod_amp?: number;
|
|
902
|
+
/** experimental quantizer modulation */
|
|
903
|
+
rc_qmod_freq?: number;
|
|
904
|
+
/** Set rate control equation. When computing the expression, besides the standard functions */
|
|
905
|
+
rc_eq?: string;
|
|
906
|
+
/** initial complexity for 1-pass encoding */
|
|
907
|
+
rc_init_cplx?: number;
|
|
908
|
+
/** currently useless */
|
|
909
|
+
rc_buf_aggressivity?: number;
|
|
910
|
+
/** increase the quantizer for macroblocks close to borders */
|
|
911
|
+
border_mask?: number;
|
|
912
|
+
/** minimum Lagrange factor (VBR) */
|
|
913
|
+
lmin?: number;
|
|
914
|
+
/** maximum Lagrange factor (VBR) */
|
|
915
|
+
lmax?: number;
|
|
916
|
+
/** Frame skip threshold */
|
|
917
|
+
skip_threshold?: number;
|
|
918
|
+
/** Frame skip factor */
|
|
919
|
+
skip_factor?: number;
|
|
920
|
+
/** Frame skip exponent */
|
|
921
|
+
skip_exp?: number;
|
|
922
|
+
/** Frame skip compare function */
|
|
923
|
+
skip_cmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'dct264' | 'dctmax' | 'chroma' | 'msad';
|
|
924
|
+
/** Noise reduction */
|
|
925
|
+
noise_reduction?: number;
|
|
926
|
+
/** RTP payload size in bytes */
|
|
927
|
+
ps?: number;
|
|
928
|
+
/** motion estimation algorithm */
|
|
929
|
+
motion_est?: 'zero' | 'epzs' | 'xone';
|
|
930
|
+
/** Motion estimation bitrate penalty compensation (1.0 = 256) */
|
|
931
|
+
mepc?: number;
|
|
932
|
+
/** pre motion estimation */
|
|
933
|
+
mepre?: number;
|
|
934
|
+
/** Penalty for intra blocks in block decision */
|
|
935
|
+
intra_penalty?: number;
|
|
936
|
+
/** Scene change threshold */
|
|
937
|
+
sc_threshold?: number;
|
|
938
|
+
};
|
|
939
|
+
/**
|
|
940
|
+
* AMD AMF H.264 Encoder
|
|
941
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264_005famf
|
|
942
|
+
*/
|
|
943
|
+
h264_amf: {
|
|
944
|
+
/** Encoder Usage */
|
|
945
|
+
usage?: 'transcoding' | 'ultralowlatency' | 'lowlatency' | 'webcam' | 'high_quality' | 'lowlatency_high_quality';
|
|
946
|
+
/** Profile */
|
|
947
|
+
profile?: 'main' | 'high' | 'constrained_baseline' | 'constrained_high';
|
|
948
|
+
/** Profile Level */
|
|
949
|
+
level?: 'auto' | '1.0' | '1.1' | '1.2' | '1.3' | '2.0' | '2.1' | '2.2' | '3.0' | '3.1' | '3.2' | '4.0' | '4.1' | '4.2' | '5.0' | '5.1' | '5.2' | '6.0' | '6.1' | '6.2';
|
|
950
|
+
/** enables low latency mode */
|
|
951
|
+
latency?: boolean;
|
|
952
|
+
/** Set the encoding quality preset */
|
|
953
|
+
quality?: 'balanced' | 'speed' | 'quality';
|
|
954
|
+
/** Set the encoding quality preset */
|
|
955
|
+
preset?: 'balanced' | 'speed' | 'quality';
|
|
956
|
+
/** Rate Control Method */
|
|
957
|
+
rc?: 'cqp' | 'cbr' | 'vbr_peak' | 'vbr_latency' | 'qvbr' | 'hqvbr' | 'hqcbr';
|
|
958
|
+
/** Sets the QVBR quality level */
|
|
959
|
+
qvbr_quality_level?: number;
|
|
960
|
+
/** Enforce HRD */
|
|
961
|
+
enforce_hrd?: boolean;
|
|
962
|
+
/** Filler Data Enable */
|
|
963
|
+
filler_data?: boolean;
|
|
964
|
+
/** Enable VBAQ */
|
|
965
|
+
vbaq?: boolean;
|
|
966
|
+
/** Rate Control Based Frame Skip */
|
|
967
|
+
frame_skipping?: boolean;
|
|
968
|
+
/** Quantization Parameter for I-Frame */
|
|
969
|
+
qp_i?: number;
|
|
970
|
+
/** Quantization Parameter for P-Frame */
|
|
971
|
+
qp_p?: number;
|
|
972
|
+
/** Quantization Parameter for B-Frame */
|
|
973
|
+
qp_b?: number;
|
|
974
|
+
/** Pre-encode assisted rate control */
|
|
975
|
+
preencode?: boolean;
|
|
976
|
+
/** Maximum Access Unit Size for rate control (in bits) */
|
|
977
|
+
max_au_size?: number;
|
|
978
|
+
/** Header Insertion Spacing */
|
|
979
|
+
header_spacing?: number;
|
|
980
|
+
/** Set maximum encoding parallelism. Higher values increase output latency. */
|
|
981
|
+
async_depth?: number;
|
|
982
|
+
/** B-Picture Delta QP */
|
|
983
|
+
bf_delta_qp?: number;
|
|
984
|
+
/** Enable Reference to B-Frames */
|
|
985
|
+
bf_ref?: boolean;
|
|
986
|
+
/** Reference B-Picture Delta QP */
|
|
987
|
+
bf_ref_delta_qp?: number;
|
|
988
|
+
/** Maximum number of consecutive B Pictures */
|
|
989
|
+
max_b_frames?: number;
|
|
990
|
+
/** B Picture Pattern */
|
|
991
|
+
bf?: number;
|
|
992
|
+
/** Intra Refresh MBs Number Per Slot in Macroblocks */
|
|
993
|
+
intra_refresh_mb?: number;
|
|
994
|
+
/** Coding Type */
|
|
995
|
+
coder?: 'auto' | 'cavlc' | 'cabac';
|
|
996
|
+
/** Enable High motion quality boost mode */
|
|
997
|
+
high_motion_quality_boost_enable?: boolean;
|
|
998
|
+
/** Enable ME Half Pixel */
|
|
999
|
+
me_half_pel?: boolean;
|
|
1000
|
+
/** Enable ME Quarter Pixel */
|
|
1001
|
+
me_quarter_pel?: boolean;
|
|
1002
|
+
/** Force I frames to be IDR frames */
|
|
1003
|
+
forced_idr?: boolean;
|
|
1004
|
+
/** Inserts AU Delimiter NAL unit */
|
|
1005
|
+
aud?: boolean;
|
|
1006
|
+
/** Enable Smart Access Video to enhance performance by utilizing both APU and dGPU memory access */
|
|
1007
|
+
smart_access_video?: boolean;
|
|
1008
|
+
/** Enable preanalysis */
|
|
1009
|
+
preanalysis?: boolean;
|
|
1010
|
+
/** Set the type of activity analysis */
|
|
1011
|
+
pa_activity_type?: 'y' | 'yuv';
|
|
1012
|
+
/** Enable scene change detection */
|
|
1013
|
+
pa_scene_change_detection_enable?: boolean;
|
|
1014
|
+
/** Set the sensitivity of scene change detection */
|
|
1015
|
+
pa_scene_change_detection_sensitivity?: 'low' | 'medium' | 'high';
|
|
1016
|
+
/** Enable static scene detection */
|
|
1017
|
+
pa_static_scene_detection_enable?: boolean;
|
|
1018
|
+
/** Set the sensitivity of static scene detection */
|
|
1019
|
+
pa_static_scene_detection_sensitivity?: 'low' | 'medium' | 'high';
|
|
1020
|
+
/** The QP value that is used immediately after a scene change */
|
|
1021
|
+
pa_initial_qp_after_scene_change?: number;
|
|
1022
|
+
/** The QP threshold to allow a skip frame */
|
|
1023
|
+
pa_max_qp_before_force_skip?: number;
|
|
1024
|
+
/** Content Adaptive Quantization strength */
|
|
1025
|
+
pa_caq_strength?: 'low' | 'medium' | 'high';
|
|
1026
|
+
/** Enable Frame SAD algorithm */
|
|
1027
|
+
pa_frame_sad_enable?: boolean;
|
|
1028
|
+
/** Enable long term reference frame management */
|
|
1029
|
+
pa_ltr_enable?: boolean;
|
|
1030
|
+
/** Sets the PA lookahead buffer size */
|
|
1031
|
+
pa_lookahead_buffer_depth?: number;
|
|
1032
|
+
/** Sets the perceptual adaptive quantization mode */
|
|
1033
|
+
pa_paq_mode?: 'none' | 'caq';
|
|
1034
|
+
/** Sets the temporal adaptive quantization mode */
|
|
1035
|
+
pa_taq_mode?: 'none' | '1' | '2';
|
|
1036
|
+
/** Sets the PA high motion quality boost mode */
|
|
1037
|
+
pa_high_motion_quality_boost_mode?: 'none' | 'auto';
|
|
1038
|
+
/** Enable Adaptive MiniGOP */
|
|
1039
|
+
pa_adaptive_mini_gop?: boolean;
|
|
1040
|
+
};
|
|
1041
|
+
/**
|
|
1042
|
+
* D3D12VA h264 encoder
|
|
1043
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264_005fd3d12va
|
|
1044
|
+
*/
|
|
1045
|
+
h264_d3d12va: {
|
|
1046
|
+
/** Distance (in I-frames) between key frames */
|
|
1047
|
+
idr_interval?: number;
|
|
1048
|
+
/** Maximum B-frame reference depth */
|
|
1049
|
+
b_depth?: number;
|
|
1050
|
+
/** Maximum processing parallelism. */
|
|
1051
|
+
async_depth?: number;
|
|
1052
|
+
/** Maximum frame size (in bytes) */
|
|
1053
|
+
max_frame_size?: number;
|
|
1054
|
+
/** Set intra refresh mode */
|
|
1055
|
+
intra_refresh_mode?: 'none' | 'row_based';
|
|
1056
|
+
/** Number of frames over which to spread intra refresh (0 = GOP size) */
|
|
1057
|
+
intra_refresh_duration?: number;
|
|
1058
|
+
/** Motion estimation precision mode */
|
|
1059
|
+
me_precision?: 'maximum' | 'full_pixel' | 'half_pixel' | 'quarter_pixel' | 'eighth_pixel';
|
|
1060
|
+
/** Set rate control mode */
|
|
1061
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'QVBR';
|
|
1062
|
+
/** Constant QP (for P-frames; scaled by qfactor/qoffset for I/B) */
|
|
1063
|
+
qp?: number;
|
|
1064
|
+
/** Set profile (general_profile_idc) */
|
|
1065
|
+
profile?: number;
|
|
1066
|
+
/** Set level (general_level_idc) */
|
|
1067
|
+
level?: number;
|
|
1068
|
+
/** Deblocking filter mode */
|
|
1069
|
+
deblock?: boolean;
|
|
1070
|
+
/** Entropy coder type */
|
|
1071
|
+
coder?: number;
|
|
1072
|
+
};
|
|
1073
|
+
/**
|
|
1074
|
+
* NVIDIA NVENC H.264 encoder
|
|
1075
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264_005fnvenc
|
|
1076
|
+
*/
|
|
1077
|
+
h264_nvenc: {
|
|
1078
|
+
/** Set the encoding preset */
|
|
1079
|
+
preset?: 'default' | 'slow' | 'medium' | 'fast' | 'hp' | 'hq' | 'bd' | 'll' | 'llhq' | 'llhp' | 'lossless' | 'losslesshp' | 'p1' | 'p2' | 'p3' | 'p4' | 'p5' | 'p6' | 'p7';
|
|
1080
|
+
/** Set the encoding tuning info */
|
|
1081
|
+
tune?: 'hq' | 'll' | 'ull' | 'lossless';
|
|
1082
|
+
/** Set the encoding profile */
|
|
1083
|
+
profile?: 'baseline' | 'main' | 'high' | 'high10' | 'high422' | 'high444p';
|
|
1084
|
+
/** Set the encoding level restriction */
|
|
1085
|
+
level?: 'auto' | '1' | '1.0' | '1b' | '1.0b' | '1.1' | '1.2' | '1.3' | '2' | '2.0' | '2.1' | '2.2' | '3' | '3.0' | '3.1' | '3.2' | '4' | '4.0' | '4.1' | '4.2' | '5' | '5.0' | '5.1' | '5.2' | '6.0' | '6.1' | '6.2';
|
|
1086
|
+
/** Override the preset rate-control */
|
|
1087
|
+
rc?: 'constqp' | 'vbr' | 'cbr' | 'vbr_minqp' | 'll_2pass_quality' | 'll_2pass_size' | 'vbr_2pass' | 'cbr_ld_hq' | 'cbr_hq' | 'vbr_hq';
|
|
1088
|
+
/** Number of frames to look ahead for rate-control */
|
|
1089
|
+
'rc-lookahead'?: number;
|
|
1090
|
+
/** Number of concurrent surfaces */
|
|
1091
|
+
surfaces?: number;
|
|
1092
|
+
/** Use cbr encoding mode */
|
|
1093
|
+
cbr?: boolean;
|
|
1094
|
+
/** Use 2pass encoding mode */
|
|
1095
|
+
'2pass'?: boolean;
|
|
1096
|
+
/** Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. */
|
|
1097
|
+
gpu?: 'any' | 'list';
|
|
1098
|
+
/** Configure how nvenc handles packed RGB input. */
|
|
1099
|
+
rgb_mode?: 'yuv420' | 'yuv444' | 'disabled';
|
|
1100
|
+
/** Delay frame output by the given amount of frames */
|
|
1101
|
+
delay?: number;
|
|
1102
|
+
/** When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts */
|
|
1103
|
+
'no-scenecut'?: boolean;
|
|
1104
|
+
/** If forcing keyframes, force them as IDR frames. */
|
|
1105
|
+
'forced-idr'?: boolean;
|
|
1106
|
+
/** When lookahead is enabled, set this to 0 to disable adaptive B-frame decision */
|
|
1107
|
+
b_adapt?: boolean;
|
|
1108
|
+
/** set to 1 to enable Spatial AQ */
|
|
1109
|
+
'spatial-aq'?: boolean;
|
|
1110
|
+
/** set to 1 to enable Spatial AQ */
|
|
1111
|
+
spatial_aq?: boolean;
|
|
1112
|
+
/** set to 1 to enable Temporal AQ */
|
|
1113
|
+
'temporal-aq'?: boolean;
|
|
1114
|
+
/** set to 1 to enable Temporal AQ */
|
|
1115
|
+
temporal_aq?: boolean;
|
|
1116
|
+
/** Set 1 to indicate zero latency operation (no reordering delay) */
|
|
1117
|
+
zerolatency?: boolean;
|
|
1118
|
+
/** Set this to 1 to enable automatic insertion of non-reference P-frames */
|
|
1119
|
+
nonref_p?: boolean;
|
|
1120
|
+
/** Set 1 to minimize GOP-to-GOP rate fluctuations */
|
|
1121
|
+
strict_gop?: boolean;
|
|
1122
|
+
/** When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) */
|
|
1123
|
+
'aq-strength'?: number;
|
|
1124
|
+
/** Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control */
|
|
1125
|
+
cq?: number;
|
|
1126
|
+
/** Use access unit delimiters */
|
|
1127
|
+
aud?: boolean;
|
|
1128
|
+
/** Bluray compatibility workarounds */
|
|
1129
|
+
'bluray-compat'?: boolean;
|
|
1130
|
+
/** Initial QP value for P frame */
|
|
1131
|
+
init_qpP?: number;
|
|
1132
|
+
/** Initial QP value for B frame */
|
|
1133
|
+
init_qpB?: number;
|
|
1134
|
+
/** Initial QP value for I frame */
|
|
1135
|
+
init_qpI?: number;
|
|
1136
|
+
/** Constant quantization parameter rate control method */
|
|
1137
|
+
qp?: number;
|
|
1138
|
+
/** Quantization parameter offset for cb channel */
|
|
1139
|
+
qp_cb_offset?: number;
|
|
1140
|
+
/** Quantization parameter offset for cr channel */
|
|
1141
|
+
qp_cr_offset?: number;
|
|
1142
|
+
/** Specifies the minimum QP used for rate control */
|
|
1143
|
+
qmin?: number;
|
|
1144
|
+
/** Specifies the maximum QP used for rate control */
|
|
1145
|
+
qmax?: number;
|
|
1146
|
+
/** Set 1 to enable weighted prediction */
|
|
1147
|
+
weighted_pred?: number;
|
|
1148
|
+
/** Coder type */
|
|
1149
|
+
coder?: 'default' | 'auto' | 'cabac' | 'cavlc' | 'ac' | 'vlc';
|
|
1150
|
+
/** Use B frames as references */
|
|
1151
|
+
b_ref_mode?: 'disabled' | 'each' | 'middle';
|
|
1152
|
+
/** Use A53 Closed Captions (if available) */
|
|
1153
|
+
a53cc?: boolean;
|
|
1154
|
+
/** Use timecode (if available) */
|
|
1155
|
+
s12m_tc?: boolean;
|
|
1156
|
+
/** Specifies the DPB size used for encoding (0 means automatic) */
|
|
1157
|
+
dpb_size?: number;
|
|
1158
|
+
/** Set the multipass encoding */
|
|
1159
|
+
multipass?: 'disabled' | 'qres' | 'fullres';
|
|
1160
|
+
/** Enable 10 bit encode for 8 bit input */
|
|
1161
|
+
highbitdepth?: boolean;
|
|
1162
|
+
/** Low delay key frame scale; Specifies the Scene Change frame size increase allowed in case of single frame VBV and CBR */
|
|
1163
|
+
ldkfs?: number;
|
|
1164
|
+
/** Pass on extra SEI data (e.g. a53 cc) to be included in the bitstream */
|
|
1165
|
+
extra_sei?: boolean;
|
|
1166
|
+
/** Pass on user data unregistered SEI if available */
|
|
1167
|
+
udu_sei?: boolean;
|
|
1168
|
+
/** Use Periodic Intra Refresh instead of IDR frames */
|
|
1169
|
+
'intra-refresh'?: boolean;
|
|
1170
|
+
/** Use single slice intra refresh */
|
|
1171
|
+
'single-slice-intra-refresh'?: boolean;
|
|
1172
|
+
/** Maximum encoded slice size in bytes */
|
|
1173
|
+
max_slice_size?: number;
|
|
1174
|
+
/** Enable constrainedFrame encoding where each slice in the constrained picture is independent of other slices */
|
|
1175
|
+
'constrained-encoding'?: boolean;
|
|
1176
|
+
/** Pad the bitstream to ensure bitrate does not drop below the target in CBR mode */
|
|
1177
|
+
cbr_padding?: boolean;
|
|
1178
|
+
/** Specifies the strength of the temporal filtering */
|
|
1179
|
+
tf_level?: '0' | '4';
|
|
1180
|
+
/** Specifies the lookahead level. Higher level may improve quality at the expense of performance. */
|
|
1181
|
+
lookahead_level?: 'auto' | '0' | '1' | '2' | '3';
|
|
1182
|
+
};
|
|
1183
|
+
/**
|
|
1184
|
+
* OpenMAX IL H.264 video encoder
|
|
1185
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264_005fomx
|
|
1186
|
+
*/
|
|
1187
|
+
h264_omx: {
|
|
1188
|
+
/** OpenMAX library name */
|
|
1189
|
+
omx_libname?: string;
|
|
1190
|
+
/** OpenMAX library prefix */
|
|
1191
|
+
omx_libprefix?: string;
|
|
1192
|
+
/** Try to avoid copying input frames if possible */
|
|
1193
|
+
zerocopy?: number;
|
|
1194
|
+
/** Set the encoding profile */
|
|
1195
|
+
profile?: 'baseline' | 'main' | 'high';
|
|
1196
|
+
};
|
|
1197
|
+
/**
|
|
1198
|
+
* H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration)
|
|
1199
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264_005fqsv
|
|
1200
|
+
*/
|
|
1201
|
+
h264_qsv: {
|
|
1202
|
+
/** Maximum processing parallelism */
|
|
1203
|
+
async_depth?: number;
|
|
1204
|
+
preset?: 'veryfast' | 'faster' | 'fast' | 'medium' | 'slow' | 'slower' | 'veryslow';
|
|
1205
|
+
/** Forcing I frames as IDR frames */
|
|
1206
|
+
forced_idr?: boolean;
|
|
1207
|
+
/** enable low power mode(experimental: many limitations by mfx version, BRC modes, etc.) */
|
|
1208
|
+
low_power?: boolean;
|
|
1209
|
+
/** Set QSV encoder parameters as key1=value1:key2=value2:... */
|
|
1210
|
+
qsv_params?: string;
|
|
1211
|
+
/** Enable rate distortion optimization */
|
|
1212
|
+
rdo?: number;
|
|
1213
|
+
/** Maximum encoded frame size in bytes */
|
|
1214
|
+
max_frame_size?: number;
|
|
1215
|
+
/** Maximum encoded I frame size in bytes */
|
|
1216
|
+
max_frame_size_i?: number;
|
|
1217
|
+
/** Maximum encoded P frame size in bytes */
|
|
1218
|
+
max_frame_size_p?: number;
|
|
1219
|
+
/** Maximum encoded slice size in bytes */
|
|
1220
|
+
max_slice_size?: number;
|
|
1221
|
+
/** Toggle bitrate limitations */
|
|
1222
|
+
bitrate_limit?: number;
|
|
1223
|
+
/** MB level bitrate control */
|
|
1224
|
+
mbbrc?: number;
|
|
1225
|
+
/** Extended bitrate control */
|
|
1226
|
+
extbrc?: number;
|
|
1227
|
+
/** Adaptive I-frame placement */
|
|
1228
|
+
adaptive_i?: number;
|
|
1229
|
+
/** Adaptive B-frame placement */
|
|
1230
|
+
adaptive_b?: number;
|
|
1231
|
+
/** Enable P-pyramid: 0-default 1-simple 2-pyramid(bf need to be set to 0). */
|
|
1232
|
+
p_strategy?: number;
|
|
1233
|
+
/** Strategy to choose between I/P/B-frames */
|
|
1234
|
+
b_strategy?: number;
|
|
1235
|
+
/** This option disable deblocking. It has value in range 0~2. */
|
|
1236
|
+
dblk_idc?: number;
|
|
1237
|
+
/** Allow to strictly obey avg frame size */
|
|
1238
|
+
low_delay_brc?: boolean;
|
|
1239
|
+
/** Maximum video quantizer scale for I frame */
|
|
1240
|
+
max_qp_i?: number;
|
|
1241
|
+
/** Minimum video quantizer scale for I frame */
|
|
1242
|
+
min_qp_i?: number;
|
|
1243
|
+
/** Maximum video quantizer scale for P frame */
|
|
1244
|
+
max_qp_p?: number;
|
|
1245
|
+
/** Minimum video quantizer scale for P frame */
|
|
1246
|
+
min_qp_p?: number;
|
|
1247
|
+
/** Maximum video quantizer scale for B frame */
|
|
1248
|
+
max_qp_b?: number;
|
|
1249
|
+
/** Minimum video quantizer scale for B frame */
|
|
1250
|
+
min_qp_b?: number;
|
|
1251
|
+
/** A hint to encoder about the scenario for the encoding session */
|
|
1252
|
+
scenario?: 'unknown' | 'displayremoting' | 'videoconference' | 'archive' | 'livestreaming' | 'cameracapture' | 'videosurveillance' | 'gamestreaming' | 'remotegaming';
|
|
1253
|
+
/** Accuracy of the AVBR ratecontrol (unit of tenth of percent) */
|
|
1254
|
+
avbr_accuracy?: number;
|
|
1255
|
+
/** Convergence of the AVBR ratecontrol (unit of 100 frames) */
|
|
1256
|
+
avbr_convergence?: number;
|
|
1257
|
+
/** Allow frame skipping */
|
|
1258
|
+
skip_frame?: 'no_skip' | 'insert_dummy' | 'insert_nothing' | 'brc_only';
|
|
1259
|
+
/** Prefer processing on both iGfx and dGfx simultaneously */
|
|
1260
|
+
dual_gfx?: 'off' | 'on' | 'adaptive';
|
|
1261
|
+
/** Enable CAVLC */
|
|
1262
|
+
cavlc?: boolean;
|
|
1263
|
+
/** Use the video conferencing mode ratecontrol */
|
|
1264
|
+
vcm?: boolean;
|
|
1265
|
+
/** Distance (in I-frames) between IDR frames */
|
|
1266
|
+
idr_interval?: number;
|
|
1267
|
+
/** Insert picture timing SEI with pic_struct_syntax element */
|
|
1268
|
+
pic_timing_sei?: boolean;
|
|
1269
|
+
/** Put all the SEI messages into one NALU */
|
|
1270
|
+
single_sei_nal_unit?: number;
|
|
1271
|
+
/** Maximum number of frames buffered in the DPB */
|
|
1272
|
+
max_dec_frame_buffering?: number;
|
|
1273
|
+
/** Use VBR algorithm with look ahead */
|
|
1274
|
+
look_ahead?: boolean;
|
|
1275
|
+
/** Depth of look ahead in number frames */
|
|
1276
|
+
look_ahead_depth?: number;
|
|
1277
|
+
/** Downscaling factor for the frames saved for the lookahead analysis */
|
|
1278
|
+
look_ahead_downsampling?: 'unknown' | 'auto' | 'off' | '2x' | '4x';
|
|
1279
|
+
/** Intra refresh type. B frames should be set to 0. */
|
|
1280
|
+
int_ref_type?: 'none' | 'vertical' | 'horizontal' | 'slice';
|
|
1281
|
+
/** Number of frames in the intra refresh cycle */
|
|
1282
|
+
int_ref_cycle_size?: number;
|
|
1283
|
+
/** QP difference for the refresh MBs */
|
|
1284
|
+
int_ref_qp_delta?: number;
|
|
1285
|
+
/** Insert recovery point SEI messages */
|
|
1286
|
+
recovery_point_sei?: number;
|
|
1287
|
+
/** Distance between the beginnings of the intra-refresh cycles in frames */
|
|
1288
|
+
int_ref_cycle_dist?: number;
|
|
1289
|
+
profile?: 'unknown' | 'baseline' | 'main' | 'high';
|
|
1290
|
+
/** Use A53 Closed Captions (if available) */
|
|
1291
|
+
a53cc?: boolean;
|
|
1292
|
+
/** Insert the Access Unit Delimiter NAL */
|
|
1293
|
+
aud?: boolean;
|
|
1294
|
+
/** Multi-Frame Mode */
|
|
1295
|
+
mfmode?: 'off' | 'auto';
|
|
1296
|
+
/** repeat pps for every frame */
|
|
1297
|
+
repeat_pps?: boolean;
|
|
1298
|
+
};
|
|
1299
|
+
/**
|
|
1300
|
+
* H.264/AVC (VAAPI)
|
|
1301
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264_005fvaapi
|
|
1302
|
+
*/
|
|
1303
|
+
h264_vaapi: {
|
|
1304
|
+
/** Distance (in I-frames) between key frames */
|
|
1305
|
+
idr_interval?: number;
|
|
1306
|
+
/** Maximum B-frame reference depth */
|
|
1307
|
+
b_depth?: number;
|
|
1308
|
+
/** Maximum processing parallelism. */
|
|
1309
|
+
async_depth?: number;
|
|
1310
|
+
/** Use low-power encoding mode (only available on some platforms; */
|
|
1311
|
+
low_power?: boolean;
|
|
1312
|
+
/** Maximum frame size (in bytes) */
|
|
1313
|
+
max_frame_size?: number;
|
|
1314
|
+
/** Set rate control mode */
|
|
1315
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'ICQ' | 'QVBR' | 'AVBR';
|
|
1316
|
+
/** Block level based bitrate control */
|
|
1317
|
+
blbrc?: boolean;
|
|
1318
|
+
/** Constant QP (for P-frames; scaled by qfactor/qoffset for I/B) */
|
|
1319
|
+
qp?: number;
|
|
1320
|
+
/** Set encode quality (trades off against speed, higher is faster) */
|
|
1321
|
+
quality?: number;
|
|
1322
|
+
/** Entropy coder type */
|
|
1323
|
+
coder?: 'cavlc' | 'cabac' | 'vlc' | 'ac';
|
|
1324
|
+
/** Include AUD */
|
|
1325
|
+
aud?: boolean;
|
|
1326
|
+
/** Set SEI to include */
|
|
1327
|
+
sei?: 'identifier' | 'timing' | 'recovery_point' | 'a53_cc' | (string & {});
|
|
1328
|
+
/** Set profile (profile_idc and constraint_set*_flag) */
|
|
1329
|
+
profile?: 'constrained_baseline' | 'main' | 'high' | 'high10';
|
|
1330
|
+
/** Set level (level_idc) */
|
|
1331
|
+
level?: '1' | '1.1' | '1.2' | '1.3' | '2' | '2.1' | '2.2' | '3' | '3.1' | '3.2' | '4' | '4.1' | '4.2' | '5' | '5.1' | '5.2' | '6' | '6.1' | '6.2';
|
|
1332
|
+
};
|
|
1333
|
+
/**
|
|
1334
|
+
* VideoToolbox H.264 Encoder
|
|
1335
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264_005fvideotoolbox
|
|
1336
|
+
*/
|
|
1337
|
+
h264_videotoolbox: {
|
|
1338
|
+
/** Profile */
|
|
1339
|
+
profile?: 'baseline' | 'constrained_baseline' | 'main' | 'high' | 'constrained_high' | 'extended';
|
|
1340
|
+
/** Level */
|
|
1341
|
+
level?: '1.3' | '3.0' | '3.1' | '3.2' | '4.0' | '4.1' | '4.2' | '5.0' | '5.1' | '5.2';
|
|
1342
|
+
/** Entropy coding */
|
|
1343
|
+
coder?: 'cavlc' | 'vlc' | 'cabac' | 'ac';
|
|
1344
|
+
/** Use A53 Closed Captions (if available) */
|
|
1345
|
+
a53cc?: boolean;
|
|
1346
|
+
/** Require constant bit rate (macOS 13 or newer) */
|
|
1347
|
+
constant_bit_rate?: boolean;
|
|
1348
|
+
/** Set the maximum number of bytes in an H.264 slice. */
|
|
1349
|
+
max_slice_bytes?: number;
|
|
1350
|
+
/** Allow software encoding */
|
|
1351
|
+
allow_sw?: boolean;
|
|
1352
|
+
/** Require software encoding */
|
|
1353
|
+
require_sw?: boolean;
|
|
1354
|
+
/** Hint that encoding should happen in real-time if not faster (e.g. capturing from camera). */
|
|
1355
|
+
realtime?: boolean;
|
|
1356
|
+
/** Other frames will come before the frames in this session. This helps smooth concatenation issues. */
|
|
1357
|
+
frames_before?: boolean;
|
|
1358
|
+
/** Other frames will come after the frames in this session. This helps smooth concatenation issues. */
|
|
1359
|
+
frames_after?: boolean;
|
|
1360
|
+
/** prioritize encoding speed */
|
|
1361
|
+
prio_speed?: boolean;
|
|
1362
|
+
/** Set to 1 to enable more power-efficient encoding if supported. */
|
|
1363
|
+
power_efficient?: number;
|
|
1364
|
+
/** Set to 1 to enable spatial AQ if supported. */
|
|
1365
|
+
spatial_aq?: number;
|
|
1366
|
+
/** Sets the maximum number of reference frames. This only has an effect when the value is less than the maximum allowed by the profile/level. */
|
|
1367
|
+
max_ref_frames?: number;
|
|
1368
|
+
};
|
|
1369
|
+
/**
|
|
1370
|
+
* H.264/AVC (Vulkan)
|
|
1371
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264_005fvulkan
|
|
1372
|
+
*/
|
|
1373
|
+
h264_vulkan: {
|
|
1374
|
+
/** Distance (in I-frames) between key frames */
|
|
1375
|
+
idr_interval?: number;
|
|
1376
|
+
/** Maximum B-frame reference depth */
|
|
1377
|
+
b_depth?: number;
|
|
1378
|
+
/** Maximum processing parallelism. */
|
|
1379
|
+
async_depth?: number;
|
|
1380
|
+
/** Use an explicit constant quantizer for the whole stream */
|
|
1381
|
+
qp?: number;
|
|
1382
|
+
/** Set encode quality (trades off against speed, higher is slower) */
|
|
1383
|
+
quality?: number;
|
|
1384
|
+
/** Select rate control type */
|
|
1385
|
+
rc_mode?: number;
|
|
1386
|
+
/** Select tuning type */
|
|
1387
|
+
tune?: number;
|
|
1388
|
+
/** Select usage type */
|
|
1389
|
+
usage?: string;
|
|
1390
|
+
/** Select content type */
|
|
1391
|
+
content?: string;
|
|
1392
|
+
/** Set profile (profile_idc and constraint_set*_flag) */
|
|
1393
|
+
profile?: 'constrained_baseline' | 'main' | 'high' | 'high444p';
|
|
1394
|
+
/** Set level (level_idc) */
|
|
1395
|
+
level?: '1' | '1.1' | '1.2' | '1.3' | '2' | '2.1' | '2.2' | '3' | '3.1' | '3.2' | '4' | '4.1' | '4.2' | '5' | '5.1' | '5.2' | '6' | '6.1' | '6.2';
|
|
1396
|
+
/** Entropy coder type */
|
|
1397
|
+
coder?: number;
|
|
1398
|
+
/** Set units to include */
|
|
1399
|
+
units?: string;
|
|
1400
|
+
};
|
|
1401
|
+
/**
|
|
1402
|
+
* Vidvox Hap
|
|
1403
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hap
|
|
1404
|
+
*/
|
|
1405
|
+
hap: {
|
|
1406
|
+
format?: 'hap' | 'hap_alpha' | 'hap_q';
|
|
1407
|
+
/** chunk count */
|
|
1408
|
+
chunks?: number;
|
|
1409
|
+
/** second-stage compressor */
|
|
1410
|
+
compressor?: 'none' | 'snappy';
|
|
1411
|
+
};
|
|
1412
|
+
/**
|
|
1413
|
+
* AMD AMF HEVC encoder
|
|
1414
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hevc_005famf
|
|
1415
|
+
*/
|
|
1416
|
+
hevc_amf: {
|
|
1417
|
+
/** Set the encoding usage */
|
|
1418
|
+
usage?: 'transcoding' | 'ultralowlatency' | 'lowlatency' | 'webcam' | 'high_quality' | 'lowlatency_high_quality';
|
|
1419
|
+
/** Set color bit deph */
|
|
1420
|
+
bitdepth?: '8' | '10';
|
|
1421
|
+
/** Set the profile */
|
|
1422
|
+
profile?: 'main' | 'main10';
|
|
1423
|
+
/** Set the profile tier (default main) */
|
|
1424
|
+
profile_tier?: 'main' | 'high';
|
|
1425
|
+
/** Set the encoding level (default auto) */
|
|
1426
|
+
level?: 'auto' | '1.0' | '2.0' | '2.1' | '3.0' | '3.1' | '4.0' | '4.1' | '5.0' | '5.1' | '5.2' | '6.0' | '6.1' | '6.2';
|
|
1427
|
+
/** Set the encoding quality preset */
|
|
1428
|
+
quality?: 'quality' | 'balanced' | 'speed';
|
|
1429
|
+
/** Set the encoding quality preset */
|
|
1430
|
+
preset?: 'quality' | 'balanced' | 'speed';
|
|
1431
|
+
/** enables low latency mode */
|
|
1432
|
+
latency?: boolean;
|
|
1433
|
+
/** Set the rate control mode */
|
|
1434
|
+
rc?: 'cqp' | 'cbr' | 'vbr_peak' | 'vbr_latency' | 'qvbr' | 'hqvbr' | 'hqcbr';
|
|
1435
|
+
/** Sets the QVBR quality level */
|
|
1436
|
+
qvbr_quality_level?: number;
|
|
1437
|
+
/** Set header insertion mode */
|
|
1438
|
+
header_insertion_mode?: 'none' | 'gop' | 'idr';
|
|
1439
|
+
/** Set maximum encoding parallelism. Higher values increase output latency. */
|
|
1440
|
+
async_depth?: number;
|
|
1441
|
+
/** Enable High motion quality boost mode */
|
|
1442
|
+
high_motion_quality_boost_enable?: boolean;
|
|
1443
|
+
/** GOPs per IDR 0-no IDR will be inserted */
|
|
1444
|
+
gops_per_idr?: number;
|
|
1445
|
+
/** Enable preencode */
|
|
1446
|
+
preencode?: boolean;
|
|
1447
|
+
/** Enable VBAQ */
|
|
1448
|
+
vbaq?: boolean;
|
|
1449
|
+
/** Enforce HRD */
|
|
1450
|
+
enforce_hrd?: boolean;
|
|
1451
|
+
/** Filler Data Enable */
|
|
1452
|
+
filler_data?: boolean;
|
|
1453
|
+
/** Maximum Access Unit Size for rate control (in bits) */
|
|
1454
|
+
max_au_size?: number;
|
|
1455
|
+
/** min quantization parameter for I-frame */
|
|
1456
|
+
min_qp_i?: number;
|
|
1457
|
+
/** max quantization parameter for I-frame */
|
|
1458
|
+
max_qp_i?: number;
|
|
1459
|
+
/** min quantization parameter for P-frame */
|
|
1460
|
+
min_qp_p?: number;
|
|
1461
|
+
/** max quantization parameter for P-frame */
|
|
1462
|
+
max_qp_p?: number;
|
|
1463
|
+
/** quantization parameter for P-frame */
|
|
1464
|
+
qp_p?: number;
|
|
1465
|
+
/** quantization parameter for I-frame */
|
|
1466
|
+
qp_i?: number;
|
|
1467
|
+
/** Rate Control Based Frame Skip */
|
|
1468
|
+
skip_frame?: boolean;
|
|
1469
|
+
/** Enable ME Half Pixel */
|
|
1470
|
+
me_half_pel?: boolean;
|
|
1471
|
+
/** Enable ME Quarter Pixel */
|
|
1472
|
+
me_quarter_pel?: boolean;
|
|
1473
|
+
/** Force I frames to be IDR frames */
|
|
1474
|
+
forced_idr?: boolean;
|
|
1475
|
+
/** Inserts AU Delimiter NAL unit */
|
|
1476
|
+
aud?: boolean;
|
|
1477
|
+
/** Enable Smart Access Video to enhance performance by utilizing both APU and dGPU memory access */
|
|
1478
|
+
smart_access_video?: boolean;
|
|
1479
|
+
/** Enable preanalysis */
|
|
1480
|
+
preanalysis?: boolean;
|
|
1481
|
+
/** Set the type of activity analysis */
|
|
1482
|
+
pa_activity_type?: 'y' | 'yuv';
|
|
1483
|
+
/** Enable scene change detection */
|
|
1484
|
+
pa_scene_change_detection_enable?: boolean;
|
|
1485
|
+
/** Set the sensitivity of scene change detection */
|
|
1486
|
+
pa_scene_change_detection_sensitivity?: 'low' | 'medium' | 'high';
|
|
1487
|
+
/** Enable static scene detection */
|
|
1488
|
+
pa_static_scene_detection_enable?: boolean;
|
|
1489
|
+
/** Set the sensitivity of static scene detection */
|
|
1490
|
+
pa_static_scene_detection_sensitivity?: 'low' | 'medium' | 'high';
|
|
1491
|
+
/** The QP value that is used immediately after a scene change */
|
|
1492
|
+
pa_initial_qp_after_scene_change?: number;
|
|
1493
|
+
/** The QP threshold to allow a skip frame */
|
|
1494
|
+
pa_max_qp_before_force_skip?: number;
|
|
1495
|
+
/** Content Adaptive Quantization strength */
|
|
1496
|
+
pa_caq_strength?: 'low' | 'medium' | 'high';
|
|
1497
|
+
/** Enable Frame SAD algorithm */
|
|
1498
|
+
pa_frame_sad_enable?: boolean;
|
|
1499
|
+
/** Enable long term reference frame management */
|
|
1500
|
+
pa_ltr_enable?: boolean;
|
|
1501
|
+
/** Sets the PA lookahead buffer size */
|
|
1502
|
+
pa_lookahead_buffer_depth?: number;
|
|
1503
|
+
/** Sets the perceptual adaptive quantization mode */
|
|
1504
|
+
pa_paq_mode?: 'none' | 'caq';
|
|
1505
|
+
/** Sets the temporal adaptive quantization mode */
|
|
1506
|
+
pa_taq_mode?: 'none' | '1' | '2';
|
|
1507
|
+
/** Sets the PA high motion quality boost mode */
|
|
1508
|
+
pa_high_motion_quality_boost_mode?: 'none' | 'auto';
|
|
1509
|
+
};
|
|
1510
|
+
/**
|
|
1511
|
+
* D3D12VA hevc encoder
|
|
1512
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hevc_005fd3d12va
|
|
1513
|
+
*/
|
|
1514
|
+
hevc_d3d12va: {
|
|
1515
|
+
/** Distance (in I-frames) between key frames */
|
|
1516
|
+
idr_interval?: number;
|
|
1517
|
+
/** Maximum B-frame reference depth */
|
|
1518
|
+
b_depth?: number;
|
|
1519
|
+
/** Maximum processing parallelism. */
|
|
1520
|
+
async_depth?: number;
|
|
1521
|
+
/** Maximum frame size (in bytes) */
|
|
1522
|
+
max_frame_size?: number;
|
|
1523
|
+
/** Set intra refresh mode */
|
|
1524
|
+
intra_refresh_mode?: 'none' | 'row_based';
|
|
1525
|
+
/** Number of frames over which to spread intra refresh (0 = GOP size) */
|
|
1526
|
+
intra_refresh_duration?: number;
|
|
1527
|
+
/** Motion estimation precision mode */
|
|
1528
|
+
me_precision?: 'maximum' | 'full_pixel' | 'half_pixel' | 'quarter_pixel' | 'eighth_pixel';
|
|
1529
|
+
/** Set rate control mode */
|
|
1530
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'QVBR';
|
|
1531
|
+
/** Constant QP (for P-frames; scaled by qfactor/qoffset for I/B) */
|
|
1532
|
+
qp?: number;
|
|
1533
|
+
/** Set profile (general_profile_idc) */
|
|
1534
|
+
profile?: number;
|
|
1535
|
+
/** Set tier (general_tier_flag) */
|
|
1536
|
+
tier?: number;
|
|
1537
|
+
/** Set level (general_level_idc) */
|
|
1538
|
+
level?: number;
|
|
1539
|
+
};
|
|
1540
|
+
/**
|
|
1541
|
+
* NVIDIA NVENC hevc encoder
|
|
1542
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hevc_005fnvenc
|
|
1543
|
+
*/
|
|
1544
|
+
hevc_nvenc: {
|
|
1545
|
+
/** Set the encoding preset */
|
|
1546
|
+
preset?: 'default' | 'slow' | 'medium' | 'fast' | 'hp' | 'hq' | 'bd' | 'll' | 'llhq' | 'llhp' | 'lossless' | 'losslesshp' | 'p1' | 'p2' | 'p3' | 'p4' | 'p5' | 'p6' | 'p7';
|
|
1547
|
+
/** Set the encoding tuning info */
|
|
1548
|
+
tune?: 'hq' | 'uhq' | 'll' | 'ull' | 'lossless';
|
|
1549
|
+
/** Set the encoding profile */
|
|
1550
|
+
profile?: 'main' | 'main10' | 'rext' | 'mv';
|
|
1551
|
+
/** Set the encoding level restriction */
|
|
1552
|
+
level?: 'auto' | '1' | '1.0' | '2' | '2.0' | '2.1' | '3' | '3.0' | '3.1' | '4' | '4.0' | '4.1' | '5' | '5.0' | '5.1' | '5.2' | '6' | '6.0' | '6.1' | '6.2';
|
|
1553
|
+
/** Set the encoding tier */
|
|
1554
|
+
tier?: 'main' | 'high';
|
|
1555
|
+
/** Override the preset rate-control */
|
|
1556
|
+
rc?: 'constqp' | 'vbr' | 'cbr' | 'vbr_minqp' | 'll_2pass_quality' | 'll_2pass_size' | 'vbr_2pass' | 'cbr_ld_hq' | 'cbr_hq' | 'vbr_hq';
|
|
1557
|
+
/** Number of frames to look ahead for rate-control */
|
|
1558
|
+
'rc-lookahead'?: number;
|
|
1559
|
+
/** Number of concurrent surfaces */
|
|
1560
|
+
surfaces?: number;
|
|
1561
|
+
/** Use cbr encoding mode */
|
|
1562
|
+
cbr?: boolean;
|
|
1563
|
+
/** Use 2pass encoding mode */
|
|
1564
|
+
'2pass'?: boolean;
|
|
1565
|
+
/** Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. */
|
|
1566
|
+
gpu?: 'any' | 'list';
|
|
1567
|
+
/** Configure how nvenc handles packed RGB input. */
|
|
1568
|
+
rgb_mode?: 'yuv420' | 'yuv444' | 'disabled';
|
|
1569
|
+
/** Delay frame output by the given amount of frames */
|
|
1570
|
+
delay?: number;
|
|
1571
|
+
/** When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts */
|
|
1572
|
+
'no-scenecut'?: boolean;
|
|
1573
|
+
/** If forcing keyframes, force them as IDR frames. */
|
|
1574
|
+
'forced-idr'?: boolean;
|
|
1575
|
+
/** When lookahead is enabled, set this to 0 to disable adaptive B-frame decision */
|
|
1576
|
+
b_adapt?: boolean;
|
|
1577
|
+
/** set to 1 to enable Spatial AQ */
|
|
1578
|
+
spatial_aq?: boolean;
|
|
1579
|
+
/** set to 1 to enable Spatial AQ */
|
|
1580
|
+
'spatial-aq'?: boolean;
|
|
1581
|
+
/** set to 1 to enable Temporal AQ */
|
|
1582
|
+
temporal_aq?: boolean;
|
|
1583
|
+
/** set to 1 to enable Temporal AQ */
|
|
1584
|
+
'temporal-aq'?: boolean;
|
|
1585
|
+
/** Set 1 to indicate zero latency operation (no reordering delay) */
|
|
1586
|
+
zerolatency?: boolean;
|
|
1587
|
+
/** Set this to 1 to enable automatic insertion of non-reference P-frames */
|
|
1588
|
+
nonref_p?: boolean;
|
|
1589
|
+
/** Set 1 to minimize GOP-to-GOP rate fluctuations */
|
|
1590
|
+
strict_gop?: boolean;
|
|
1591
|
+
/** When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) */
|
|
1592
|
+
'aq-strength'?: number;
|
|
1593
|
+
/** Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control */
|
|
1594
|
+
cq?: number;
|
|
1595
|
+
/** Use access unit delimiters */
|
|
1596
|
+
aud?: boolean;
|
|
1597
|
+
/** Bluray compatibility workarounds */
|
|
1598
|
+
'bluray-compat'?: boolean;
|
|
1599
|
+
/** Initial QP value for P frame */
|
|
1600
|
+
init_qpP?: number;
|
|
1601
|
+
/** Initial QP value for B frame */
|
|
1602
|
+
init_qpB?: number;
|
|
1603
|
+
/** Initial QP value for I frame */
|
|
1604
|
+
init_qpI?: number;
|
|
1605
|
+
/** Constant quantization parameter rate control method */
|
|
1606
|
+
qp?: number;
|
|
1607
|
+
/** Quantization parameter offset for cb channel */
|
|
1608
|
+
qp_cb_offset?: number;
|
|
1609
|
+
/** Quantization parameter offset for cr channel */
|
|
1610
|
+
qp_cr_offset?: number;
|
|
1611
|
+
/** Specifies the minimum QP used for rate control */
|
|
1612
|
+
qmin?: number;
|
|
1613
|
+
/** Specifies the maximum QP used for rate control */
|
|
1614
|
+
qmax?: number;
|
|
1615
|
+
/** Set 1 to enable weighted prediction */
|
|
1616
|
+
weighted_pred?: number;
|
|
1617
|
+
/** Use B frames as references */
|
|
1618
|
+
b_ref_mode?: 'disabled' | 'each' | 'middle';
|
|
1619
|
+
/** Use A53 Closed Captions (if available) */
|
|
1620
|
+
a53cc?: boolean;
|
|
1621
|
+
/** Use timecode (if available) */
|
|
1622
|
+
s12m_tc?: boolean;
|
|
1623
|
+
/** Specifies the DPB size used for encoding (0 means automatic) */
|
|
1624
|
+
dpb_size?: number;
|
|
1625
|
+
/** Set the multipass encoding */
|
|
1626
|
+
multipass?: 'disabled' | 'qres' | 'fullres';
|
|
1627
|
+
/** Enable 10 bit encode for 8 bit input */
|
|
1628
|
+
highbitdepth?: boolean;
|
|
1629
|
+
/** Low delay key frame scale; Specifies the Scene Change frame size increase allowed in case of single frame VBV and CBR */
|
|
1630
|
+
ldkfs?: number;
|
|
1631
|
+
/** Pass on extra SEI data (e.g. a53 cc) to be included in the bitstream */
|
|
1632
|
+
extra_sei?: boolean;
|
|
1633
|
+
/** Pass on user data unregistered SEI if available */
|
|
1634
|
+
udu_sei?: boolean;
|
|
1635
|
+
/** Use Periodic Intra Refresh instead of IDR frames */
|
|
1636
|
+
'intra-refresh'?: boolean;
|
|
1637
|
+
/** Use single slice intra refresh */
|
|
1638
|
+
'single-slice-intra-refresh'?: boolean;
|
|
1639
|
+
/** Maximum encoded slice size in bytes */
|
|
1640
|
+
max_slice_size?: number;
|
|
1641
|
+
/** Enable constrainedFrame encoding where each slice in the constrained picture is independent of other slices */
|
|
1642
|
+
'constrained-encoding'?: boolean;
|
|
1643
|
+
/** Pad the bitstream to ensure bitrate does not drop below the target in CBR mode */
|
|
1644
|
+
cbr_padding?: boolean;
|
|
1645
|
+
/** Specifies the strength of the temporal filtering */
|
|
1646
|
+
tf_level?: '0' | '4';
|
|
1647
|
+
/** Specifies the lookahead level. Higher level may improve quality at the expense of performance. */
|
|
1648
|
+
lookahead_level?: 'auto' | '0' | '1' | '2' | '3';
|
|
1649
|
+
/** Enable use of unidirectional B-Frames. */
|
|
1650
|
+
unidir_b?: boolean;
|
|
1651
|
+
/** Specifies the split encoding mode */
|
|
1652
|
+
split_encode_mode?: 'disabled' | 'auto' | 'forced' | '2' | '3' | '4';
|
|
1653
|
+
};
|
|
1654
|
+
/**
|
|
1655
|
+
* HEVC (Intel Quick Sync Video acceleration)
|
|
1656
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hevc_005fqsv
|
|
1657
|
+
*/
|
|
1658
|
+
hevc_qsv: {
|
|
1659
|
+
/** Maximum processing parallelism */
|
|
1660
|
+
async_depth?: number;
|
|
1661
|
+
preset?: 'veryfast' | 'faster' | 'fast' | 'medium' | 'slow' | 'slower' | 'veryslow';
|
|
1662
|
+
/** Forcing I frames as IDR frames */
|
|
1663
|
+
forced_idr?: boolean;
|
|
1664
|
+
/** enable low power mode(experimental: many limitations by mfx version, BRC modes, etc.) */
|
|
1665
|
+
low_power?: boolean;
|
|
1666
|
+
/** Set QSV encoder parameters as key1=value1:key2=value2:... */
|
|
1667
|
+
qsv_params?: string;
|
|
1668
|
+
/** Enable rate distortion optimization */
|
|
1669
|
+
rdo?: number;
|
|
1670
|
+
/** Maximum encoded frame size in bytes */
|
|
1671
|
+
max_frame_size?: number;
|
|
1672
|
+
/** Maximum encoded I frame size in bytes */
|
|
1673
|
+
max_frame_size_i?: number;
|
|
1674
|
+
/** Maximum encoded P frame size in bytes */
|
|
1675
|
+
max_frame_size_p?: number;
|
|
1676
|
+
/** Maximum encoded slice size in bytes */
|
|
1677
|
+
max_slice_size?: number;
|
|
1678
|
+
/** MB level bitrate control */
|
|
1679
|
+
mbbrc?: number;
|
|
1680
|
+
/** Extended bitrate control */
|
|
1681
|
+
extbrc?: number;
|
|
1682
|
+
/** Enable P-pyramid: 0-default 1-simple 2-pyramid(bf need to be set to 0). */
|
|
1683
|
+
p_strategy?: number;
|
|
1684
|
+
/** Strategy to choose between I/P/B-frames */
|
|
1685
|
+
b_strategy?: number;
|
|
1686
|
+
/** This option disable deblocking. It has value in range 0~2. */
|
|
1687
|
+
dblk_idc?: number;
|
|
1688
|
+
/** Allow to strictly obey avg frame size */
|
|
1689
|
+
low_delay_brc?: boolean;
|
|
1690
|
+
/** Maximum video quantizer scale for I frame */
|
|
1691
|
+
max_qp_i?: number;
|
|
1692
|
+
/** Minimum video quantizer scale for I frame */
|
|
1693
|
+
min_qp_i?: number;
|
|
1694
|
+
/** Maximum video quantizer scale for P frame */
|
|
1695
|
+
max_qp_p?: number;
|
|
1696
|
+
/** Minimum video quantizer scale for P frame */
|
|
1697
|
+
min_qp_p?: number;
|
|
1698
|
+
/** Maximum video quantizer scale for B frame */
|
|
1699
|
+
max_qp_b?: number;
|
|
1700
|
+
/** Minimum video quantizer scale for B frame */
|
|
1701
|
+
min_qp_b?: number;
|
|
1702
|
+
/** Adaptive I-frame placement */
|
|
1703
|
+
adaptive_i?: number;
|
|
1704
|
+
/** Adaptive B-frame placement */
|
|
1705
|
+
adaptive_b?: number;
|
|
1706
|
+
/** A hint to encoder about the scenario for the encoding session */
|
|
1707
|
+
scenario?: 'unknown' | 'displayremoting' | 'videoconference' | 'archive' | 'livestreaming' | 'cameracapture' | 'videosurveillance' | 'gamestreaming' | 'remotegaming';
|
|
1708
|
+
/** Accuracy of the AVBR ratecontrol (unit of tenth of percent) */
|
|
1709
|
+
avbr_accuracy?: number;
|
|
1710
|
+
/** Convergence of the AVBR ratecontrol (unit of 100 frames) */
|
|
1711
|
+
avbr_convergence?: number;
|
|
1712
|
+
/** Allow frame skipping */
|
|
1713
|
+
skip_frame?: 'no_skip' | 'insert_dummy' | 'insert_nothing' | 'brc_only';
|
|
1714
|
+
/** Prefer processing on both iGfx and dGfx simultaneously */
|
|
1715
|
+
dual_gfx?: 'off' | 'on' | 'adaptive';
|
|
1716
|
+
/** Distance (in I-frames) between IDR frames */
|
|
1717
|
+
idr_interval?: 'begin_only';
|
|
1718
|
+
/** A user plugin to load in an internal session */
|
|
1719
|
+
load_plugin?: 'none' | 'hevc_sw' | 'hevc_hw';
|
|
1720
|
+
/** A :-separate list of hexadecimal plugin UIDs to load in an internal session */
|
|
1721
|
+
load_plugins?: string;
|
|
1722
|
+
/** Depth of look ahead in number frames, available when extbrc option is enabled */
|
|
1723
|
+
look_ahead_depth?: number;
|
|
1724
|
+
profile?: 'unknown' | 'main' | 'main10' | 'mainsp' | 'rext' | 'scc';
|
|
1725
|
+
/** Set the encoding tier (only level >= 4 can support high tier) */
|
|
1726
|
+
tier?: 'main' | 'high';
|
|
1727
|
+
/** 1: GPB (generalized P/B frame); 0: regular P frame */
|
|
1728
|
+
gpb?: boolean;
|
|
1729
|
+
/** Number of columns for tiled encoding */
|
|
1730
|
+
tile_cols?: number;
|
|
1731
|
+
/** Number of rows for tiled encoding */
|
|
1732
|
+
tile_rows?: number;
|
|
1733
|
+
/** Insert recovery point SEI messages */
|
|
1734
|
+
recovery_point_sei?: number;
|
|
1735
|
+
/** Insert the Access Unit Delimiter NAL */
|
|
1736
|
+
aud?: boolean;
|
|
1737
|
+
/** Insert picture timing SEI with pic_struct_syntax element */
|
|
1738
|
+
pic_timing_sei?: boolean;
|
|
1739
|
+
/** Turn this option ON to enable transformskip */
|
|
1740
|
+
transform_skip?: number;
|
|
1741
|
+
/** Intra refresh type. B frames should be set to 0 */
|
|
1742
|
+
int_ref_type?: 'none' | 'vertical' | 'horizontal' | 'slice';
|
|
1743
|
+
/** Number of frames in the intra refresh cycle */
|
|
1744
|
+
int_ref_cycle_size?: number;
|
|
1745
|
+
/** QP difference for the refresh MBs */
|
|
1746
|
+
int_ref_qp_delta?: number;
|
|
1747
|
+
/** Distance between the beginnings of the intra-refresh cycles in frames */
|
|
1748
|
+
int_ref_cycle_dist?: number;
|
|
1749
|
+
/** This profile allow to encode 10 bit single still picture */
|
|
1750
|
+
main10sp?: boolean;
|
|
1751
|
+
};
|
|
1752
|
+
/**
|
|
1753
|
+
* H.265/HEVC (VAAPI)
|
|
1754
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hevc_005fvaapi
|
|
1755
|
+
*/
|
|
1756
|
+
hevc_vaapi: {
|
|
1757
|
+
/** Distance (in I-frames) between key frames */
|
|
1758
|
+
idr_interval?: number;
|
|
1759
|
+
/** Maximum B-frame reference depth */
|
|
1760
|
+
b_depth?: number;
|
|
1761
|
+
/** Maximum processing parallelism. */
|
|
1762
|
+
async_depth?: number;
|
|
1763
|
+
/** Use low-power encoding mode (only available on some platforms; */
|
|
1764
|
+
low_power?: boolean;
|
|
1765
|
+
/** Maximum frame size (in bytes) */
|
|
1766
|
+
max_frame_size?: number;
|
|
1767
|
+
/** Set rate control mode */
|
|
1768
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'ICQ' | 'QVBR' | 'AVBR';
|
|
1769
|
+
/** Block level based bitrate control */
|
|
1770
|
+
blbrc?: boolean;
|
|
1771
|
+
/** Constant QP (for P-frames; scaled by qfactor/qoffset for I/B) */
|
|
1772
|
+
qp?: number;
|
|
1773
|
+
/** Include AUD */
|
|
1774
|
+
aud?: boolean;
|
|
1775
|
+
/** Set profile (general_profile_idc) */
|
|
1776
|
+
profile?: 'main' | 'main10' | 'rext';
|
|
1777
|
+
/** Set tier (general_tier_flag) */
|
|
1778
|
+
tier?: 'main' | 'high';
|
|
1779
|
+
/** Set level (general_level_idc) */
|
|
1780
|
+
level?: '1' | '2' | '2.1' | '3' | '3.1' | '4' | '4.1' | '5' | '5.1' | '5.2' | '6' | '6.1' | '6.2';
|
|
1781
|
+
/** Set SEI to include */
|
|
1782
|
+
sei?: 'hdr' | 'a53_cc' | (string & {});
|
|
1783
|
+
/** Tile columns x rows */
|
|
1784
|
+
tiles?: string;
|
|
1785
|
+
};
|
|
1786
|
+
/**
|
|
1787
|
+
* VideoToolbox H.265 Encoder
|
|
1788
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hevc_005fvideotoolbox
|
|
1789
|
+
*/
|
|
1790
|
+
hevc_videotoolbox: {
|
|
1791
|
+
/** Profile */
|
|
1792
|
+
profile?: 'main' | 'main10' | 'main42210' | 'rext';
|
|
1793
|
+
/** Compression quality for the alpha channel */
|
|
1794
|
+
alpha_quality?: number;
|
|
1795
|
+
/** Require constant bit rate (macOS 13 or newer) */
|
|
1796
|
+
constant_bit_rate?: boolean;
|
|
1797
|
+
/** Allow software encoding */
|
|
1798
|
+
allow_sw?: boolean;
|
|
1799
|
+
/** Require software encoding */
|
|
1800
|
+
require_sw?: boolean;
|
|
1801
|
+
/** Hint that encoding should happen in real-time if not faster (e.g. capturing from camera). */
|
|
1802
|
+
realtime?: boolean;
|
|
1803
|
+
/** Other frames will come before the frames in this session. This helps smooth concatenation issues. */
|
|
1804
|
+
frames_before?: boolean;
|
|
1805
|
+
/** Other frames will come after the frames in this session. This helps smooth concatenation issues. */
|
|
1806
|
+
frames_after?: boolean;
|
|
1807
|
+
/** prioritize encoding speed */
|
|
1808
|
+
prio_speed?: boolean;
|
|
1809
|
+
/** Set to 1 to enable more power-efficient encoding if supported. */
|
|
1810
|
+
power_efficient?: number;
|
|
1811
|
+
/** Set to 1 to enable spatial AQ if supported. */
|
|
1812
|
+
spatial_aq?: number;
|
|
1813
|
+
/** Sets the maximum number of reference frames. This only has an effect when the value is less than the maximum allowed by the profile/level. */
|
|
1814
|
+
max_ref_frames?: number;
|
|
1815
|
+
};
|
|
1816
|
+
/**
|
|
1817
|
+
* H.265/HEVC (Vulkan)
|
|
1818
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hevc_005fvulkan
|
|
1819
|
+
*/
|
|
1820
|
+
hevc_vulkan: {
|
|
1821
|
+
/** Distance (in I-frames) between key frames */
|
|
1822
|
+
idr_interval?: number;
|
|
1823
|
+
/** Maximum B-frame reference depth */
|
|
1824
|
+
b_depth?: number;
|
|
1825
|
+
/** Maximum processing parallelism. */
|
|
1826
|
+
async_depth?: number;
|
|
1827
|
+
/** Use an explicit constant quantizer for the whole stream */
|
|
1828
|
+
qp?: number;
|
|
1829
|
+
/** Set encode quality (trades off against speed, higher is slower) */
|
|
1830
|
+
quality?: number;
|
|
1831
|
+
/** Select rate control type */
|
|
1832
|
+
rc_mode?: number;
|
|
1833
|
+
/** Select tuning type */
|
|
1834
|
+
tune?: number;
|
|
1835
|
+
/** Select usage type */
|
|
1836
|
+
usage?: string;
|
|
1837
|
+
/** Select content type */
|
|
1838
|
+
content?: string;
|
|
1839
|
+
/** Set profile (profile_idc and constraint_set*_flag) */
|
|
1840
|
+
profile?: 'main' | 'main10' | 'rext';
|
|
1841
|
+
/** Set tier (general_tier_flag) */
|
|
1842
|
+
tier?: 'main' | 'high';
|
|
1843
|
+
/** Set level (general_level_idc) */
|
|
1844
|
+
level?: '1' | '2' | '2.1' | '3' | '3.1' | '4' | '4.1' | '5' | '5.1' | '5.2' | '6' | '6.1' | '6.2';
|
|
1845
|
+
/** Set units to include */
|
|
1846
|
+
units?: string;
|
|
1847
|
+
};
|
|
1848
|
+
/**
|
|
1849
|
+
* Huffyuv / HuffYUV
|
|
1850
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#huffyuv
|
|
1851
|
+
*/
|
|
1852
|
+
huffyuv: {
|
|
1853
|
+
/** Allow multithreading for e.g. context=1 at the expense of determinism */
|
|
1854
|
+
non_deterministic?: boolean;
|
|
1855
|
+
/** Prediction method */
|
|
1856
|
+
pred?: 'left' | 'plane' | 'median';
|
|
1857
|
+
};
|
|
1858
|
+
/**
|
|
1859
|
+
* JPEG 2000
|
|
1860
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#jpeg2000
|
|
1861
|
+
*/
|
|
1862
|
+
jpeg2000: {
|
|
1863
|
+
/** Codec Format */
|
|
1864
|
+
format?: 'j2k' | 'jp2';
|
|
1865
|
+
/** Tile Width */
|
|
1866
|
+
tile_width?: number;
|
|
1867
|
+
/** Tile Height */
|
|
1868
|
+
tile_height?: number;
|
|
1869
|
+
/** DWT Type */
|
|
1870
|
+
pred?: 'dwt97int' | 'dwt53';
|
|
1871
|
+
/** SOP marker */
|
|
1872
|
+
sop?: number;
|
|
1873
|
+
/** EPH marker */
|
|
1874
|
+
eph?: number;
|
|
1875
|
+
/** Progression Order */
|
|
1876
|
+
prog?: 'lrcp' | 'rlcp' | 'rpcl' | 'pcrl' | 'cprl';
|
|
1877
|
+
/** Layer Rates */
|
|
1878
|
+
layer_rates?: string;
|
|
1879
|
+
};
|
|
1880
|
+
/**
|
|
1881
|
+
* JPEG-LS
|
|
1882
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#jpegls
|
|
1883
|
+
*/
|
|
1884
|
+
jpegls: {
|
|
1885
|
+
/** Prediction method */
|
|
1886
|
+
pred?: 'left' | 'plane' | 'median';
|
|
1887
|
+
};
|
|
1888
|
+
/**
|
|
1889
|
+
* libaom AV1
|
|
1890
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libaom_002dav1
|
|
1891
|
+
*/
|
|
1892
|
+
'libaom-av1': {
|
|
1893
|
+
/** Quality/Speed ratio modifier */
|
|
1894
|
+
'cpu-used'?: number;
|
|
1895
|
+
/** Enable use of alternate reference */
|
|
1896
|
+
'auto-alt-ref'?: number;
|
|
1897
|
+
/** Number of frames to look ahead at for */
|
|
1898
|
+
'lag-in-frames'?: number;
|
|
1899
|
+
/** altref noise reduction max frame count */
|
|
1900
|
+
'arnr-max-frames'?: number;
|
|
1901
|
+
/** altref noise reduction filter strength */
|
|
1902
|
+
'arnr-strength'?: number;
|
|
1903
|
+
/** adaptive quantization mode */
|
|
1904
|
+
'aq-mode'?: 'none' | 'variance' | 'complexity' | 'cyclic';
|
|
1905
|
+
/** Error resilience configuration */
|
|
1906
|
+
'error-resilience'?: 'default' | (string & {});
|
|
1907
|
+
/** Select the quality for constant quality mode */
|
|
1908
|
+
crf?: number;
|
|
1909
|
+
/** A change threshold on blocks below which they will be skipped by the encoder */
|
|
1910
|
+
'static-thresh'?: number;
|
|
1911
|
+
/** Frame drop threshold */
|
|
1912
|
+
'drop-threshold'?: number;
|
|
1913
|
+
/** Amount of noise to be removed */
|
|
1914
|
+
'denoise-noise-level'?: number;
|
|
1915
|
+
/** Denoise block size */
|
|
1916
|
+
'denoise-block-size'?: number;
|
|
1917
|
+
/** Datarate undershoot (min) target (%) */
|
|
1918
|
+
'undershoot-pct'?: number;
|
|
1919
|
+
/** Datarate overshoot (max) target (%) */
|
|
1920
|
+
'overshoot-pct'?: number;
|
|
1921
|
+
/** GOP min bitrate (% of target) */
|
|
1922
|
+
'minsection-pct'?: number;
|
|
1923
|
+
/** GOP max bitrate (% of target) */
|
|
1924
|
+
'maxsection-pct'?: number;
|
|
1925
|
+
/** Enable frame parallel decodability features */
|
|
1926
|
+
'frame-parallel'?: boolean;
|
|
1927
|
+
/** Tile columns x rows */
|
|
1928
|
+
tiles?: string;
|
|
1929
|
+
/** Log2 of number of tile columns to use */
|
|
1930
|
+
'tile-columns'?: number;
|
|
1931
|
+
/** Log2 of number of tile rows to use */
|
|
1932
|
+
'tile-rows'?: number;
|
|
1933
|
+
/** Enable row based multi-threading */
|
|
1934
|
+
'row-mt'?: boolean;
|
|
1935
|
+
/** Enable CDEF filtering */
|
|
1936
|
+
'enable-cdef'?: boolean;
|
|
1937
|
+
/** Enable global motion */
|
|
1938
|
+
'enable-global-motion'?: boolean;
|
|
1939
|
+
/** Enable intra block copy prediction mode */
|
|
1940
|
+
'enable-intrabc'?: boolean;
|
|
1941
|
+
/** Enable Loop Restoration filtering */
|
|
1942
|
+
'enable-restoration'?: boolean;
|
|
1943
|
+
/** Quality and compression efficiency vs speed trade-off */
|
|
1944
|
+
usage?: 'good' | 'realtime' | 'allintra';
|
|
1945
|
+
/** The metric that the encoder tunes for. Automatically chosen by the encoder by default */
|
|
1946
|
+
tune?: 'psnr' | 'ssim';
|
|
1947
|
+
/** Encode in single frame mode (typically used for still AVIF images). */
|
|
1948
|
+
'still-picture'?: boolean;
|
|
1949
|
+
/** Enable Dolby Vision RPU coding */
|
|
1950
|
+
dolbyvision?: 'auto';
|
|
1951
|
+
/** Enable rectangular partitions */
|
|
1952
|
+
'enable-rect-partitions'?: boolean;
|
|
1953
|
+
/** Enable 1:4/4:1 partitions */
|
|
1954
|
+
'enable-1to4-partitions'?: boolean;
|
|
1955
|
+
/** Enable ab shape partitions */
|
|
1956
|
+
'enable-ab-partitions'?: boolean;
|
|
1957
|
+
/** Enable angle delta intra prediction */
|
|
1958
|
+
'enable-angle-delta'?: boolean;
|
|
1959
|
+
/** Enable chroma predicted from luma intra prediction */
|
|
1960
|
+
'enable-cfl-intra'?: boolean;
|
|
1961
|
+
/** Enable filter intra predictor */
|
|
1962
|
+
'enable-filter-intra'?: boolean;
|
|
1963
|
+
/** Enable intra edge filter */
|
|
1964
|
+
'enable-intra-edge-filter'?: boolean;
|
|
1965
|
+
/** Enable smooth intra prediction mode */
|
|
1966
|
+
'enable-smooth-intra'?: boolean;
|
|
1967
|
+
/** Enable paeth predictor in intra prediction */
|
|
1968
|
+
'enable-paeth-intra'?: boolean;
|
|
1969
|
+
/** Enable palette prediction mode */
|
|
1970
|
+
'enable-palette'?: boolean;
|
|
1971
|
+
/** Enable extended transform type */
|
|
1972
|
+
'enable-flip-idtx'?: boolean;
|
|
1973
|
+
/** Enable 64-pt transform */
|
|
1974
|
+
'enable-tx64'?: boolean;
|
|
1975
|
+
/** Use reduced set of transform types */
|
|
1976
|
+
'reduced-tx-type-set'?: boolean;
|
|
1977
|
+
/** Use DCT only for INTRA modes */
|
|
1978
|
+
'use-intra-dct-only'?: boolean;
|
|
1979
|
+
/** Use DCT only for INTER modes */
|
|
1980
|
+
'use-inter-dct-only'?: boolean;
|
|
1981
|
+
/** Use default-transform only for INTRA modes */
|
|
1982
|
+
'use-intra-default-tx-only'?: boolean;
|
|
1983
|
+
/** Enable temporal mv prediction */
|
|
1984
|
+
'enable-ref-frame-mvs'?: boolean;
|
|
1985
|
+
/** Use reduced set of single and compound references */
|
|
1986
|
+
'enable-reduced-reference-set'?: boolean;
|
|
1987
|
+
/** Enable obmc */
|
|
1988
|
+
'enable-obmc'?: boolean;
|
|
1989
|
+
/** Enable dual filter */
|
|
1990
|
+
'enable-dual-filter'?: boolean;
|
|
1991
|
+
/** Enable difference-weighted compound */
|
|
1992
|
+
'enable-diff-wtd-comp'?: boolean;
|
|
1993
|
+
/** Enable distance-weighted compound */
|
|
1994
|
+
'enable-dist-wtd-comp'?: boolean;
|
|
1995
|
+
/** Enable one sided compound */
|
|
1996
|
+
'enable-onesided-comp'?: boolean;
|
|
1997
|
+
/** Enable interinter wedge compound */
|
|
1998
|
+
'enable-interinter-wedge'?: boolean;
|
|
1999
|
+
/** Enable interintra wedge compound */
|
|
2000
|
+
'enable-interintra-wedge'?: boolean;
|
|
2001
|
+
/** Enable masked compound */
|
|
2002
|
+
'enable-masked-comp'?: boolean;
|
|
2003
|
+
/** Enable interintra compound */
|
|
2004
|
+
'enable-interintra-comp'?: boolean;
|
|
2005
|
+
/** Enable smooth interintra mode */
|
|
2006
|
+
'enable-smooth-interintra'?: boolean;
|
|
2007
|
+
/** Set libaom options using a :-separated list of key=value pairs */
|
|
2008
|
+
'aom-params'?: string;
|
|
2009
|
+
};
|
|
2010
|
+
/**
|
|
2011
|
+
* codec2 encoder using libcodec2
|
|
2012
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libcodec2
|
|
2013
|
+
*/
|
|
2014
|
+
libcodec2: {
|
|
2015
|
+
/** codec2 mode */
|
|
2016
|
+
mode?: '3200' | '2400' | '1600' | '1400' | '1300' | '1200' | '700' | '700B' | '700C';
|
|
2017
|
+
};
|
|
2018
|
+
/**
|
|
2019
|
+
* Fraunhofer FDK AAC
|
|
2020
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libfdk_005faac
|
|
2021
|
+
*/
|
|
2022
|
+
libfdk_aac: {
|
|
2023
|
+
/** Afterburner (improved quality) */
|
|
2024
|
+
afterburner?: number;
|
|
2025
|
+
/** Enable SBR for ELD (for SBR in other configurations, use the -profile parameter) */
|
|
2026
|
+
eld_sbr?: number;
|
|
2027
|
+
/** Enable ELDv2 (LD-MPS extension for ELD stereo signals) */
|
|
2028
|
+
eld_v2?: number;
|
|
2029
|
+
/** SBR/PS signaling style */
|
|
2030
|
+
signaling?: 'default' | 'implicit' | 'explicit_sbr' | 'explicit_hierarchical';
|
|
2031
|
+
/** Output LATM/LOAS encapsulated data */
|
|
2032
|
+
latm?: number;
|
|
2033
|
+
/** StreamMuxConfig and PCE repetition period (in frames) */
|
|
2034
|
+
header_period?: number;
|
|
2035
|
+
/** VBR mode (1-5) */
|
|
2036
|
+
vbr?: number;
|
|
2037
|
+
/** The desired compression profile for AAC DRC */
|
|
2038
|
+
drc_profile?: number;
|
|
2039
|
+
/** Expected target reference level at decoder side in dB (for clipping prevention/limiter) */
|
|
2040
|
+
drc_target_ref?: number;
|
|
2041
|
+
/** The desired compression profile for AAC DRC */
|
|
2042
|
+
comp_profile?: number;
|
|
2043
|
+
/** Expected target reference level at decoder side in dB (for clipping prevention/limiter) */
|
|
2044
|
+
comp_target_ref?: number;
|
|
2045
|
+
/** The program reference level or dialog level in dB */
|
|
2046
|
+
prog_ref?: number;
|
|
2047
|
+
/** The desired frame length */
|
|
2048
|
+
frame_length?: number;
|
|
2049
|
+
};
|
|
2050
|
+
/**
|
|
2051
|
+
* iLBC (Internet Low Bitrate Codec)
|
|
2052
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libilbc
|
|
2053
|
+
*/
|
|
2054
|
+
libilbc: {
|
|
2055
|
+
/** iLBC mode (20 or 30 ms frames) */
|
|
2056
|
+
mode?: number;
|
|
2057
|
+
};
|
|
2058
|
+
/**
|
|
2059
|
+
* libjxl JPEG XL
|
|
2060
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libjxl
|
|
2061
|
+
*/
|
|
2062
|
+
libjxl: {
|
|
2063
|
+
/** Encoding effort */
|
|
2064
|
+
effort?: number;
|
|
2065
|
+
/** Maximum Butteraugli distance (quality setting, */
|
|
2066
|
+
distance?: number;
|
|
2067
|
+
/** Force modular mode */
|
|
2068
|
+
modular?: number;
|
|
2069
|
+
/** Use XYB-encoding for lossy images */
|
|
2070
|
+
xyb?: number;
|
|
2071
|
+
};
|
|
2072
|
+
/**
|
|
2073
|
+
* libjxl JPEG XL animated
|
|
2074
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libjxl_005fanim
|
|
2075
|
+
*/
|
|
2076
|
+
libjxl_anim: {
|
|
2077
|
+
/** Encoding effort */
|
|
2078
|
+
effort?: number;
|
|
2079
|
+
/** Maximum Butteraugli distance (quality setting, */
|
|
2080
|
+
distance?: number;
|
|
2081
|
+
/** Force modular mode */
|
|
2082
|
+
modular?: number;
|
|
2083
|
+
/** Use XYB-encoding for lossy images */
|
|
2084
|
+
xyb?: number;
|
|
2085
|
+
};
|
|
2086
|
+
/**
|
|
2087
|
+
* libkvazaar H.265 / HEVC
|
|
2088
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libkvazaar
|
|
2089
|
+
*/
|
|
2090
|
+
libkvazaar: {
|
|
2091
|
+
/** Set kvazaar parameters as a comma-separated list of key=value pairs. */
|
|
2092
|
+
'kvazaar-params'?: string;
|
|
2093
|
+
};
|
|
2094
|
+
/**
|
|
2095
|
+
* LC3 (Low Complexity Communication Codec)
|
|
2096
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#liblc3
|
|
2097
|
+
*/
|
|
2098
|
+
liblc3: {
|
|
2099
|
+
/** Duration of a frame in milliseconds */
|
|
2100
|
+
frame_duration?: number;
|
|
2101
|
+
/** Enable High-Resolution mode (48 KHz or 96 KHz) */
|
|
2102
|
+
high_resolution?: boolean;
|
|
2103
|
+
};
|
|
2104
|
+
/**
|
|
2105
|
+
* libmp3lame MP3 (MPEG audio layer 3)
|
|
2106
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libmp3lame
|
|
2107
|
+
*/
|
|
2108
|
+
libmp3lame: {
|
|
2109
|
+
/** use bit reservoir */
|
|
2110
|
+
reservoir?: boolean;
|
|
2111
|
+
/** use joint stereo */
|
|
2112
|
+
joint_stereo?: boolean;
|
|
2113
|
+
/** use ABR */
|
|
2114
|
+
abr?: boolean;
|
|
2115
|
+
/** set copyright flag */
|
|
2116
|
+
copyright?: boolean;
|
|
2117
|
+
/** set original flag */
|
|
2118
|
+
original?: boolean;
|
|
2119
|
+
};
|
|
2120
|
+
/**
|
|
2121
|
+
* liboapv APV
|
|
2122
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#liboapv
|
|
2123
|
+
*/
|
|
2124
|
+
liboapv: {
|
|
2125
|
+
/** Encoding preset for setting encoding speed (optimization level control) */
|
|
2126
|
+
preset?: 'fastest' | 'fast' | 'medium' | 'slow' | 'placebo' | 'default';
|
|
2127
|
+
/** Quantization parameter value for CQP rate control mode */
|
|
2128
|
+
qp?: number;
|
|
2129
|
+
/** Override the apv configuration using a :-separated list of key=value parameters */
|
|
2130
|
+
'oapv-params'?: string;
|
|
2131
|
+
};
|
|
2132
|
+
/**
|
|
2133
|
+
* OpenCORE AMR-NB (Adaptive Multi-Rate Narrow-Band)
|
|
2134
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libopencore_005famrnb
|
|
2135
|
+
*/
|
|
2136
|
+
libopencore_amrnb: {
|
|
2137
|
+
/** Allow DTX (generate comfort noise) */
|
|
2138
|
+
dtx?: number;
|
|
2139
|
+
};
|
|
2140
|
+
/**
|
|
2141
|
+
* OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
|
|
2142
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libopenh264
|
|
2143
|
+
*/
|
|
2144
|
+
libopenh264: {
|
|
2145
|
+
/** enable loop filter */
|
|
2146
|
+
loopfilter?: number;
|
|
2147
|
+
/** set profile restrictions */
|
|
2148
|
+
profile?: 'constrained_baseline' | 'main' | 'high';
|
|
2149
|
+
/** set maximum NAL size in bytes */
|
|
2150
|
+
max_nal_size?: number;
|
|
2151
|
+
/** allow skipping frames to hit the target bitrate */
|
|
2152
|
+
allow_skip_frames?: boolean;
|
|
2153
|
+
/** Coder type */
|
|
2154
|
+
coder?: 'default' | 'cavlc' | 'cabac' | 'vlc' | 'ac';
|
|
2155
|
+
/** Select rate control mode */
|
|
2156
|
+
rc_mode?: 'off' | 'quality' | 'bitrate' | 'buffer' | 'timestamp';
|
|
2157
|
+
};
|
|
2158
|
+
/**
|
|
2159
|
+
* OpenJPEG JPEG 2000
|
|
2160
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libopenjpeg
|
|
2161
|
+
*/
|
|
2162
|
+
libopenjpeg: {
|
|
2163
|
+
/** Codec Format */
|
|
2164
|
+
format?: 'j2k' | 'jp2';
|
|
2165
|
+
profile?: 'jpeg2000' | 'cinema2k' | 'cinema4k';
|
|
2166
|
+
/** Digital Cinema */
|
|
2167
|
+
cinema_mode?: 'off' | '2k_24' | '2k_48' | '4k_24';
|
|
2168
|
+
/** Progression Order */
|
|
2169
|
+
prog_order?: 'lrcp' | 'rlcp' | 'rpcl' | 'pcrl' | 'cprl';
|
|
2170
|
+
numresolution?: number;
|
|
2171
|
+
irreversible?: number;
|
|
2172
|
+
disto_alloc?: number;
|
|
2173
|
+
fixed_quality?: number;
|
|
2174
|
+
};
|
|
2175
|
+
/**
|
|
2176
|
+
* libopus Opus
|
|
2177
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libopus
|
|
2178
|
+
*/
|
|
2179
|
+
libopus: {
|
|
2180
|
+
/** Intended application type */
|
|
2181
|
+
application?: 'voip' | 'audio' | 'lowdelay';
|
|
2182
|
+
/** Duration of a frame in milliseconds */
|
|
2183
|
+
frame_duration?: number;
|
|
2184
|
+
/** Expected packet loss percentage */
|
|
2185
|
+
packet_loss?: number;
|
|
2186
|
+
/** Enable inband FEC. Expected packet loss must be non-zero */
|
|
2187
|
+
fec?: boolean;
|
|
2188
|
+
/** Variable bit rate mode */
|
|
2189
|
+
vbr?: 'off' | 'on' | 'constrained';
|
|
2190
|
+
/** Channel Mapping Family */
|
|
2191
|
+
mapping_family?: number;
|
|
2192
|
+
/** Enable DTX (Discontinuous transmission) */
|
|
2193
|
+
dtx?: boolean;
|
|
2194
|
+
/** Apply intensity stereo phase inversion */
|
|
2195
|
+
apply_phase_inv?: boolean;
|
|
2196
|
+
};
|
|
2197
|
+
/**
|
|
2198
|
+
* librav1e AV1
|
|
2199
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#librav1e
|
|
2200
|
+
*/
|
|
2201
|
+
librav1e: {
|
|
2202
|
+
/** use constant quantizer mode */
|
|
2203
|
+
qp?: number;
|
|
2204
|
+
/** what speed preset to use */
|
|
2205
|
+
speed?: number;
|
|
2206
|
+
/** number of tiles encode with */
|
|
2207
|
+
tiles?: number;
|
|
2208
|
+
/** number of tiles rows to encode with */
|
|
2209
|
+
'tile-rows'?: number;
|
|
2210
|
+
/** number of tiles columns to encode with */
|
|
2211
|
+
'tile-columns'?: number;
|
|
2212
|
+
/** set the rav1e configuration using a :-separated list of key=value parameters */
|
|
2213
|
+
'rav1e-params'?: string;
|
|
2214
|
+
};
|
|
2215
|
+
/**
|
|
2216
|
+
* libspeex Speex
|
|
2217
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libspeex
|
|
2218
|
+
*/
|
|
2219
|
+
libspeex: {
|
|
2220
|
+
/** Use average bit rate */
|
|
2221
|
+
abr?: number;
|
|
2222
|
+
/** Set quality value (0 to 10) for CBR */
|
|
2223
|
+
cbr_quality?: number;
|
|
2224
|
+
/** Number of frames to encode in each packet */
|
|
2225
|
+
frames_per_packet?: number;
|
|
2226
|
+
/** Voice Activity Detection */
|
|
2227
|
+
vad?: number;
|
|
2228
|
+
/** Discontinuous Transmission */
|
|
2229
|
+
dtx?: number;
|
|
2230
|
+
};
|
|
2231
|
+
/**
|
|
2232
|
+
* SVT-AV1(Scalable Video Technology for AV1) encoder
|
|
2233
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libsvtav1
|
|
2234
|
+
*/
|
|
2235
|
+
libsvtav1: {
|
|
2236
|
+
/** Encoding preset */
|
|
2237
|
+
preset?: number;
|
|
2238
|
+
/** Constant Rate Factor value */
|
|
2239
|
+
crf?: number;
|
|
2240
|
+
/** Initial Quantizer level value */
|
|
2241
|
+
qp?: number;
|
|
2242
|
+
/** Set the SVT-AV1 configuration using a :-separated list of key=value parameters */
|
|
2243
|
+
'svtav1-params'?: string;
|
|
2244
|
+
/** Enable Dolby Vision RPU coding */
|
|
2245
|
+
dolbyvision?: 'auto';
|
|
2246
|
+
};
|
|
2247
|
+
/**
|
|
2248
|
+
* SVT JPEG XS(Scalable Video Technology for JPEG XS) encoder
|
|
2249
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libsvtjpegxs
|
|
2250
|
+
*/
|
|
2251
|
+
libsvtjpegxs: {
|
|
2252
|
+
/** vertical decomposition level */
|
|
2253
|
+
decomp_v?: number;
|
|
2254
|
+
/** horizontal decomposition level */
|
|
2255
|
+
decomp_h?: number;
|
|
2256
|
+
/** Quantization algorithm */
|
|
2257
|
+
quantization?: 'deadzone' | 'uniform';
|
|
2258
|
+
/** Enable Signs handling strategy */
|
|
2259
|
+
'coding-signs'?: 'disable' | 'fast' | 'full';
|
|
2260
|
+
/** Enable Significance coding */
|
|
2261
|
+
'coding-sigf'?: boolean;
|
|
2262
|
+
/** Enable Vertical Prediction coding */
|
|
2263
|
+
'coding-vpred'?: 'disable' | 'no_residuals' | 'no_coeffs';
|
|
2264
|
+
};
|
|
2265
|
+
/**
|
|
2266
|
+
* libtheora Theora
|
|
2267
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libtheora
|
|
2268
|
+
*/
|
|
2269
|
+
libtheora: {
|
|
2270
|
+
/** Sets the encoding speed level */
|
|
2271
|
+
speed_level?: number;
|
|
2272
|
+
};
|
|
2273
|
+
/**
|
|
2274
|
+
* libtwolame MP2 (MPEG audio layer 2)
|
|
2275
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libtwolame
|
|
2276
|
+
*/
|
|
2277
|
+
libtwolame: {
|
|
2278
|
+
/** Mpeg Mode */
|
|
2279
|
+
mode?: 'auto' | 'stereo' | 'joint_stereo' | 'dual_channel' | 'mono';
|
|
2280
|
+
/** Psychoacoustic Model */
|
|
2281
|
+
psymodel?: number;
|
|
2282
|
+
/** enable energy levels */
|
|
2283
|
+
energy_levels?: number;
|
|
2284
|
+
/** enable CRC error protection */
|
|
2285
|
+
error_protection?: number;
|
|
2286
|
+
/** set MPEG Audio Copyright flag */
|
|
2287
|
+
copyright?: number;
|
|
2288
|
+
/** set MPEG Audio Original flag */
|
|
2289
|
+
original?: number;
|
|
2290
|
+
/** set library optput level (0-10) */
|
|
2291
|
+
verbosity?: number;
|
|
2292
|
+
};
|
|
2293
|
+
/**
|
|
2294
|
+
* Android VisualOn AMR-WB (Adaptive Multi-Rate Wide-Band)
|
|
2295
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libvo_005famrwbenc
|
|
2296
|
+
*/
|
|
2297
|
+
libvo_amrwbenc: {
|
|
2298
|
+
/** Allow DTX (generate comfort noise) */
|
|
2299
|
+
dtx?: number;
|
|
2300
|
+
};
|
|
2301
|
+
/**
|
|
2302
|
+
* libvorbis
|
|
2303
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libvorbis
|
|
2304
|
+
*/
|
|
2305
|
+
libvorbis: {
|
|
2306
|
+
/** Sets the impulse block bias */
|
|
2307
|
+
iblock?: number;
|
|
2308
|
+
};
|
|
2309
|
+
/**
|
|
2310
|
+
* libvpx VP8
|
|
2311
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libvpx
|
|
2312
|
+
*/
|
|
2313
|
+
libvpx: {
|
|
2314
|
+
/** Number of frames to look ahead for */
|
|
2315
|
+
'lag-in-frames'?: number;
|
|
2316
|
+
/** altref noise reduction max frame count */
|
|
2317
|
+
'arnr-maxframes'?: number;
|
|
2318
|
+
/** altref noise reduction filter strength */
|
|
2319
|
+
'arnr-strength'?: number;
|
|
2320
|
+
/** altref noise reduction filter type */
|
|
2321
|
+
'arnr-type'?: 'backward' | 'forward' | 'centered';
|
|
2322
|
+
/** Tune the encoding to a specific scenario */
|
|
2323
|
+
tune?: 'psnr' | 'ssim';
|
|
2324
|
+
/** Time to spend encoding, in microseconds. */
|
|
2325
|
+
deadline?: 'best' | 'good' | 'realtime';
|
|
2326
|
+
/** Error resilience configuration */
|
|
2327
|
+
'error-resilient'?: 'default' | 'partitions' | (string & {});
|
|
2328
|
+
/** Maximum I-frame bitrate (pct) 0=unlimited */
|
|
2329
|
+
'max-intra-rate'?: number;
|
|
2330
|
+
/** Select the quality for constant quality mode */
|
|
2331
|
+
crf?: number;
|
|
2332
|
+
/** A change threshold on blocks below which they will be skipped by the encoder */
|
|
2333
|
+
'static-thresh'?: number;
|
|
2334
|
+
/** Frame drop threshold */
|
|
2335
|
+
'drop-threshold'?: number;
|
|
2336
|
+
/** Noise sensitivity */
|
|
2337
|
+
'noise-sensitivity'?: number;
|
|
2338
|
+
/** Datarate undershoot (min) target (%) */
|
|
2339
|
+
'undershoot-pct'?: number;
|
|
2340
|
+
/** Datarate overshoot (max) target (%) */
|
|
2341
|
+
'overshoot-pct'?: number;
|
|
2342
|
+
/** Temporal scaling configuration using a :-separated list of key=value parameters */
|
|
2343
|
+
'ts-parameters'?: string;
|
|
2344
|
+
/** Enable use of alternate reference */
|
|
2345
|
+
'auto-alt-ref'?: number;
|
|
2346
|
+
/** Quality/Speed ratio modifier */
|
|
2347
|
+
'cpu-used'?: number;
|
|
2348
|
+
/** Encoder screen content mode */
|
|
2349
|
+
'screen-content-mode'?: number;
|
|
2350
|
+
speed?: number;
|
|
2351
|
+
quality?: 'best' | 'good' | 'realtime';
|
|
2352
|
+
vp8flags?: 'error_resilient' | 'altref' | (string & {});
|
|
2353
|
+
/** altref noise reduction max frame count */
|
|
2354
|
+
arnr_max_frames?: number;
|
|
2355
|
+
/** altref noise reduction filter strength */
|
|
2356
|
+
arnr_strength?: number;
|
|
2357
|
+
/** altref noise reduction filter type */
|
|
2358
|
+
arnr_type?: number;
|
|
2359
|
+
/** Number of frames to look ahead for alternate reference frame selection */
|
|
2360
|
+
rc_lookahead?: number;
|
|
2361
|
+
/** Increase sharpness at the expense of lower PSNR */
|
|
2362
|
+
sharpness?: number;
|
|
2363
|
+
};
|
|
2364
|
+
/**
|
|
2365
|
+
* libvpx VP9
|
|
2366
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libvpx_002dvp9
|
|
2367
|
+
*/
|
|
2368
|
+
'libvpx-vp9': {
|
|
2369
|
+
/** Number of frames to look ahead for */
|
|
2370
|
+
'lag-in-frames'?: number;
|
|
2371
|
+
/** altref noise reduction max frame count */
|
|
2372
|
+
'arnr-maxframes'?: number;
|
|
2373
|
+
/** altref noise reduction filter strength */
|
|
2374
|
+
'arnr-strength'?: number;
|
|
2375
|
+
/** altref noise reduction filter type */
|
|
2376
|
+
'arnr-type'?: 'backward' | 'forward' | 'centered';
|
|
2377
|
+
/** Tune the encoding to a specific scenario */
|
|
2378
|
+
tune?: 'psnr' | 'ssim';
|
|
2379
|
+
/** Time to spend encoding, in microseconds. */
|
|
2380
|
+
deadline?: 'best' | 'good' | 'realtime';
|
|
2381
|
+
/** Error resilience configuration */
|
|
2382
|
+
'error-resilient'?: 'default' | 'partitions' | (string & {});
|
|
2383
|
+
/** Maximum I-frame bitrate (pct) 0=unlimited */
|
|
2384
|
+
'max-intra-rate'?: number;
|
|
2385
|
+
/** Select the quality for constant quality mode */
|
|
2386
|
+
crf?: number;
|
|
2387
|
+
/** A change threshold on blocks below which they will be skipped by the encoder */
|
|
2388
|
+
'static-thresh'?: number;
|
|
2389
|
+
/** Frame drop threshold */
|
|
2390
|
+
'drop-threshold'?: number;
|
|
2391
|
+
/** Noise sensitivity */
|
|
2392
|
+
'noise-sensitivity'?: number;
|
|
2393
|
+
/** Datarate undershoot (min) target (%) */
|
|
2394
|
+
'undershoot-pct'?: number;
|
|
2395
|
+
/** Datarate overshoot (max) target (%) */
|
|
2396
|
+
'overshoot-pct'?: number;
|
|
2397
|
+
/** Temporal scaling configuration using a :-separated list of key=value parameters */
|
|
2398
|
+
'ts-parameters'?: string;
|
|
2399
|
+
/** Enable use of alternate reference */
|
|
2400
|
+
'auto-alt-ref'?: number;
|
|
2401
|
+
/** Quality/Speed ratio modifier */
|
|
2402
|
+
'cpu-used'?: number;
|
|
2403
|
+
/** Lossless mode */
|
|
2404
|
+
lossless?: number;
|
|
2405
|
+
/** Number of tile columns to use, log2 */
|
|
2406
|
+
'tile-columns'?: number;
|
|
2407
|
+
/** Number of tile rows to use, log2 */
|
|
2408
|
+
'tile-rows'?: number;
|
|
2409
|
+
/** Enable frame parallel decodability features */
|
|
2410
|
+
'frame-parallel'?: boolean;
|
|
2411
|
+
/** adaptive quantization mode */
|
|
2412
|
+
'aq-mode'?: 'none' | 'variance' | 'complexity' | 'cyclic' | 'equator360';
|
|
2413
|
+
/** Specify level */
|
|
2414
|
+
level?: number;
|
|
2415
|
+
/** Row based multi-threading */
|
|
2416
|
+
'row-mt'?: boolean;
|
|
2417
|
+
/** Tune content type */
|
|
2418
|
+
'tune-content'?: 'default' | 'screen' | 'film';
|
|
2419
|
+
/** corpus vbr complexity midpoint */
|
|
2420
|
+
'corpus-complexity'?: number;
|
|
2421
|
+
/** Enable temporal dependency model */
|
|
2422
|
+
'enable-tpl'?: boolean;
|
|
2423
|
+
/** Minimum golden/alternate reference frame interval */
|
|
2424
|
+
'min-gf-interval'?: number;
|
|
2425
|
+
speed?: number;
|
|
2426
|
+
quality?: 'best' | 'good' | 'realtime';
|
|
2427
|
+
vp8flags?: 'error_resilient' | 'altref' | (string & {});
|
|
2428
|
+
/** altref noise reduction max frame count */
|
|
2429
|
+
arnr_max_frames?: number;
|
|
2430
|
+
/** altref noise reduction filter strength */
|
|
2431
|
+
arnr_strength?: number;
|
|
2432
|
+
/** altref noise reduction filter type */
|
|
2433
|
+
arnr_type?: number;
|
|
2434
|
+
/** Number of frames to look ahead for alternate reference frame selection */
|
|
2435
|
+
rc_lookahead?: number;
|
|
2436
|
+
/** Increase sharpness at the expense of lower PSNR */
|
|
2437
|
+
sharpness?: number;
|
|
2438
|
+
};
|
|
2439
|
+
/**
|
|
2440
|
+
* libvvenc H.266 / VVC
|
|
2441
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libvvenc
|
|
2442
|
+
*/
|
|
2443
|
+
libvvenc: {
|
|
2444
|
+
/** set encoding preset */
|
|
2445
|
+
preset?: number;
|
|
2446
|
+
/** set quantization */
|
|
2447
|
+
qp?: number;
|
|
2448
|
+
/** set subjective (perceptually motivated) optimization */
|
|
2449
|
+
qpa?: boolean;
|
|
2450
|
+
/** Filename for 2 pass stats */
|
|
2451
|
+
passlogfile?: string;
|
|
2452
|
+
/** Filename for 2 pass stats */
|
|
2453
|
+
stats?: string;
|
|
2454
|
+
/** set (intra) refresh period in seconds */
|
|
2455
|
+
period?: number;
|
|
2456
|
+
/** set the vvenc configuration using a :-separated list of key=value parameters */
|
|
2457
|
+
'vvenc-params'?: string;
|
|
2458
|
+
/** Specify level (as defined by Annex A) */
|
|
2459
|
+
level?: string;
|
|
2460
|
+
/** set vvc tier */
|
|
2461
|
+
tier?: number;
|
|
2462
|
+
};
|
|
2463
|
+
/**
|
|
2464
|
+
* libx262 MPEG2VIDEO
|
|
2465
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libx262
|
|
2466
|
+
*/
|
|
2467
|
+
libx262: {
|
|
2468
|
+
/** Set the encoding preset (cf. x264 --fullhelp) */
|
|
2469
|
+
preset?: string;
|
|
2470
|
+
/** Tune the encoding params (cf. x264 --fullhelp) */
|
|
2471
|
+
tune?: string;
|
|
2472
|
+
/** Set profile restrictions (cf. x264 --fullhelp) */
|
|
2473
|
+
profile?: string;
|
|
2474
|
+
/** Use fast settings when encoding first pass */
|
|
2475
|
+
fastfirstpass?: boolean;
|
|
2476
|
+
/** Specify level (as defined by Annex A) */
|
|
2477
|
+
level?: string;
|
|
2478
|
+
/** Filename for 2 pass stats */
|
|
2479
|
+
passlogfile?: string;
|
|
2480
|
+
/** Weighted prediction for P-frames */
|
|
2481
|
+
wpredp?: string;
|
|
2482
|
+
/** Use A53 Closed Captions (if available) */
|
|
2483
|
+
a53cc?: boolean;
|
|
2484
|
+
/** x264 options */
|
|
2485
|
+
x264opts?: string;
|
|
2486
|
+
/** Select the quality for constant quality mode */
|
|
2487
|
+
crf?: number;
|
|
2488
|
+
/** In CRF mode, prevents VBV from lowering quality beyond this point. */
|
|
2489
|
+
crf_max?: number;
|
|
2490
|
+
/** Constant quantization parameter rate control method */
|
|
2491
|
+
qp?: number;
|
|
2492
|
+
/** AQ method */
|
|
2493
|
+
'aq-mode'?: 'none' | 'variance' | 'autovariance' | 'autovariance-biased';
|
|
2494
|
+
/** AQ strength. Reduces blocking and blurring in flat and textured areas. */
|
|
2495
|
+
'aq-strength'?: number;
|
|
2496
|
+
/** Use psychovisual optimizations. */
|
|
2497
|
+
psy?: boolean;
|
|
2498
|
+
/** Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format. */
|
|
2499
|
+
'psy-rd'?: string;
|
|
2500
|
+
/** Number of frames to look ahead for frametype and ratecontrol */
|
|
2501
|
+
'rc-lookahead'?: number;
|
|
2502
|
+
/** Weighted prediction for B-frames. */
|
|
2503
|
+
weightb?: boolean;
|
|
2504
|
+
/** Weighted prediction analysis method. */
|
|
2505
|
+
weightp?: 'none' | 'simple' | 'smart';
|
|
2506
|
+
/** Calculate and print SSIM stats. */
|
|
2507
|
+
ssim?: boolean;
|
|
2508
|
+
/** Use Periodic Intra Refresh instead of IDR frames. */
|
|
2509
|
+
'intra-refresh'?: boolean;
|
|
2510
|
+
/** Bluray compatibility workarounds. */
|
|
2511
|
+
'bluray-compat'?: boolean;
|
|
2512
|
+
/** Influences how often B-frames are used */
|
|
2513
|
+
'b-bias'?: number;
|
|
2514
|
+
/** Keep some B-frames as references. */
|
|
2515
|
+
'b-pyramid'?: 'none' | 'strict' | 'normal';
|
|
2516
|
+
/** One reference per partition, as opposed to one reference per macroblock */
|
|
2517
|
+
'mixed-refs'?: boolean;
|
|
2518
|
+
/** High profile 8x8 transform. */
|
|
2519
|
+
'8x8dct'?: boolean;
|
|
2520
|
+
'fast-pskip'?: boolean;
|
|
2521
|
+
/** Use access unit delimiters. */
|
|
2522
|
+
aud?: boolean;
|
|
2523
|
+
/** Use macroblock tree ratecontrol. */
|
|
2524
|
+
mbtree?: boolean;
|
|
2525
|
+
/** Loop filter parameters, in <alpha:beta> form. */
|
|
2526
|
+
deblock?: string;
|
|
2527
|
+
/** Reduce fluctuations in QP (before curve compression) */
|
|
2528
|
+
cplxblur?: number;
|
|
2529
|
+
/** A comma-separated list of partitions to consider. */
|
|
2530
|
+
partitions?: string;
|
|
2531
|
+
/** Direct MV prediction mode */
|
|
2532
|
+
'direct-pred'?: 'none' | 'spatial' | 'temporal' | 'auto';
|
|
2533
|
+
/** Limit the size of each slice in bytes */
|
|
2534
|
+
'slice-max-size'?: number;
|
|
2535
|
+
/** Filename for 2 pass stats */
|
|
2536
|
+
stats?: string;
|
|
2537
|
+
/** Signal HRD information (requires vbv-bufsize; */
|
|
2538
|
+
'nal-hrd'?: 'none' | 'vbr' | 'cbr';
|
|
2539
|
+
/** AVC-Intra class 50/100/200/300/480 */
|
|
2540
|
+
'avcintra-class'?: number;
|
|
2541
|
+
/** Set motion estimation method */
|
|
2542
|
+
me_method?: 'dia' | 'hex' | 'umh' | 'esa' | 'tesa';
|
|
2543
|
+
/** Set motion estimation method */
|
|
2544
|
+
'motion-est'?: 'dia' | 'hex' | 'umh' | 'esa' | 'tesa';
|
|
2545
|
+
/** If forcing keyframes, force them as IDR frames. */
|
|
2546
|
+
'forced-idr'?: boolean;
|
|
2547
|
+
/** Coder type */
|
|
2548
|
+
coder?: 'default' | 'cavlc' | 'cabac' | 'vlc' | 'ac';
|
|
2549
|
+
/** Strategy to choose between I/P/B-frames */
|
|
2550
|
+
b_strategy?: number;
|
|
2551
|
+
/** QP difference between chroma and luma */
|
|
2552
|
+
chromaoffset?: number;
|
|
2553
|
+
/** Scene change threshold */
|
|
2554
|
+
sc_threshold?: number;
|
|
2555
|
+
/** Noise reduction */
|
|
2556
|
+
noise_reduction?: number;
|
|
2557
|
+
/** Use user data unregistered SEI if available */
|
|
2558
|
+
udu_sei?: boolean;
|
|
2559
|
+
/** Override the x264 configuration using a :-separated list of key=value parameters */
|
|
2560
|
+
'x264-params'?: string;
|
|
2561
|
+
/** Set mb_info data through AVSideData, only useful when used from the API */
|
|
2562
|
+
mb_info?: boolean;
|
|
2563
|
+
};
|
|
2564
|
+
/**
|
|
2565
|
+
* libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
|
|
2566
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libx264
|
|
2567
|
+
*/
|
|
2568
|
+
libx264: {
|
|
2569
|
+
/** Set the encoding preset (cf. x264 --fullhelp) */
|
|
2570
|
+
preset?: string;
|
|
2571
|
+
/** Tune the encoding params (cf. x264 --fullhelp) */
|
|
2572
|
+
tune?: string;
|
|
2573
|
+
/** Set profile restrictions (cf. x264 --fullhelp) */
|
|
2574
|
+
profile?: string;
|
|
2575
|
+
/** Use fast settings when encoding first pass */
|
|
2576
|
+
fastfirstpass?: boolean;
|
|
2577
|
+
/** Specify level (as defined by Annex A) */
|
|
2578
|
+
level?: string;
|
|
2579
|
+
/** Filename for 2 pass stats */
|
|
2580
|
+
passlogfile?: string;
|
|
2581
|
+
/** Weighted prediction for P-frames */
|
|
2582
|
+
wpredp?: string;
|
|
2583
|
+
/** Use A53 Closed Captions (if available) */
|
|
2584
|
+
a53cc?: boolean;
|
|
2585
|
+
/** x264 options */
|
|
2586
|
+
x264opts?: string;
|
|
2587
|
+
/** Select the quality for constant quality mode */
|
|
2588
|
+
crf?: number;
|
|
2589
|
+
/** In CRF mode, prevents VBV from lowering quality beyond this point. */
|
|
2590
|
+
crf_max?: number;
|
|
2591
|
+
/** Constant quantization parameter rate control method */
|
|
2592
|
+
qp?: number;
|
|
2593
|
+
/** AQ method */
|
|
2594
|
+
'aq-mode'?: 'none' | 'variance' | 'autovariance' | 'autovariance-biased';
|
|
2595
|
+
/** AQ strength. Reduces blocking and blurring in flat and textured areas. */
|
|
2596
|
+
'aq-strength'?: number;
|
|
2597
|
+
/** Use psychovisual optimizations. */
|
|
2598
|
+
psy?: boolean;
|
|
2599
|
+
/** Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format. */
|
|
2600
|
+
'psy-rd'?: string;
|
|
2601
|
+
/** Number of frames to look ahead for frametype and ratecontrol */
|
|
2602
|
+
'rc-lookahead'?: number;
|
|
2603
|
+
/** Weighted prediction for B-frames. */
|
|
2604
|
+
weightb?: boolean;
|
|
2605
|
+
/** Weighted prediction analysis method. */
|
|
2606
|
+
weightp?: 'none' | 'simple' | 'smart';
|
|
2607
|
+
/** Calculate and print SSIM stats. */
|
|
2608
|
+
ssim?: boolean;
|
|
2609
|
+
/** Use Periodic Intra Refresh instead of IDR frames. */
|
|
2610
|
+
'intra-refresh'?: boolean;
|
|
2611
|
+
/** Bluray compatibility workarounds. */
|
|
2612
|
+
'bluray-compat'?: boolean;
|
|
2613
|
+
/** Influences how often B-frames are used */
|
|
2614
|
+
'b-bias'?: number;
|
|
2615
|
+
/** Keep some B-frames as references. */
|
|
2616
|
+
'b-pyramid'?: 'none' | 'strict' | 'normal';
|
|
2617
|
+
/** One reference per partition, as opposed to one reference per macroblock */
|
|
2618
|
+
'mixed-refs'?: boolean;
|
|
2619
|
+
/** High profile 8x8 transform. */
|
|
2620
|
+
'8x8dct'?: boolean;
|
|
2621
|
+
'fast-pskip'?: boolean;
|
|
2622
|
+
/** Use access unit delimiters. */
|
|
2623
|
+
aud?: boolean;
|
|
2624
|
+
/** Use macroblock tree ratecontrol. */
|
|
2625
|
+
mbtree?: boolean;
|
|
2626
|
+
/** Loop filter parameters, in <alpha:beta> form. */
|
|
2627
|
+
deblock?: string;
|
|
2628
|
+
/** Reduce fluctuations in QP (before curve compression) */
|
|
2629
|
+
cplxblur?: number;
|
|
2630
|
+
/** A comma-separated list of partitions to consider. */
|
|
2631
|
+
partitions?: string;
|
|
2632
|
+
/** Direct MV prediction mode */
|
|
2633
|
+
'direct-pred'?: 'none' | 'spatial' | 'temporal' | 'auto';
|
|
2634
|
+
/** Limit the size of each slice in bytes */
|
|
2635
|
+
'slice-max-size'?: number;
|
|
2636
|
+
/** Filename for 2 pass stats */
|
|
2637
|
+
stats?: string;
|
|
2638
|
+
/** Signal HRD information (requires vbv-bufsize; */
|
|
2639
|
+
'nal-hrd'?: 'none' | 'vbr' | 'cbr';
|
|
2640
|
+
/** AVC-Intra class 50/100/200/300/480 */
|
|
2641
|
+
'avcintra-class'?: number;
|
|
2642
|
+
/** Set motion estimation method */
|
|
2643
|
+
me_method?: 'dia' | 'hex' | 'umh' | 'esa' | 'tesa';
|
|
2644
|
+
/** Set motion estimation method */
|
|
2645
|
+
'motion-est'?: 'dia' | 'hex' | 'umh' | 'esa' | 'tesa';
|
|
2646
|
+
/** If forcing keyframes, force them as IDR frames. */
|
|
2647
|
+
'forced-idr'?: boolean;
|
|
2648
|
+
/** Coder type */
|
|
2649
|
+
coder?: 'default' | 'cavlc' | 'cabac' | 'vlc' | 'ac';
|
|
2650
|
+
/** Strategy to choose between I/P/B-frames */
|
|
2651
|
+
b_strategy?: number;
|
|
2652
|
+
/** QP difference between chroma and luma */
|
|
2653
|
+
chromaoffset?: number;
|
|
2654
|
+
/** Scene change threshold */
|
|
2655
|
+
sc_threshold?: number;
|
|
2656
|
+
/** Noise reduction */
|
|
2657
|
+
noise_reduction?: number;
|
|
2658
|
+
/** Use user data unregistered SEI if available */
|
|
2659
|
+
udu_sei?: boolean;
|
|
2660
|
+
/** Override the x264 configuration using a :-separated list of key=value parameters */
|
|
2661
|
+
'x264-params'?: string;
|
|
2662
|
+
/** Set mb_info data through AVSideData, only useful when used from the API */
|
|
2663
|
+
mb_info?: boolean;
|
|
2664
|
+
};
|
|
2665
|
+
/**
|
|
2666
|
+
* libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB
|
|
2667
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libx264rgb
|
|
2668
|
+
*/
|
|
2669
|
+
libx264rgb: {
|
|
2670
|
+
/** Set the encoding preset (cf. x264 --fullhelp) */
|
|
2671
|
+
preset?: string;
|
|
2672
|
+
/** Tune the encoding params (cf. x264 --fullhelp) */
|
|
2673
|
+
tune?: string;
|
|
2674
|
+
/** Set profile restrictions (cf. x264 --fullhelp) */
|
|
2675
|
+
profile?: string;
|
|
2676
|
+
/** Use fast settings when encoding first pass */
|
|
2677
|
+
fastfirstpass?: boolean;
|
|
2678
|
+
/** Specify level (as defined by Annex A) */
|
|
2679
|
+
level?: string;
|
|
2680
|
+
/** Filename for 2 pass stats */
|
|
2681
|
+
passlogfile?: string;
|
|
2682
|
+
/** Weighted prediction for P-frames */
|
|
2683
|
+
wpredp?: string;
|
|
2684
|
+
/** Use A53 Closed Captions (if available) */
|
|
2685
|
+
a53cc?: boolean;
|
|
2686
|
+
/** x264 options */
|
|
2687
|
+
x264opts?: string;
|
|
2688
|
+
/** Select the quality for constant quality mode */
|
|
2689
|
+
crf?: number;
|
|
2690
|
+
/** In CRF mode, prevents VBV from lowering quality beyond this point. */
|
|
2691
|
+
crf_max?: number;
|
|
2692
|
+
/** Constant quantization parameter rate control method */
|
|
2693
|
+
qp?: number;
|
|
2694
|
+
/** AQ method */
|
|
2695
|
+
'aq-mode'?: 'none' | 'variance' | 'autovariance' | 'autovariance-biased';
|
|
2696
|
+
/** AQ strength. Reduces blocking and blurring in flat and textured areas. */
|
|
2697
|
+
'aq-strength'?: number;
|
|
2698
|
+
/** Use psychovisual optimizations. */
|
|
2699
|
+
psy?: boolean;
|
|
2700
|
+
/** Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format. */
|
|
2701
|
+
'psy-rd'?: string;
|
|
2702
|
+
/** Number of frames to look ahead for frametype and ratecontrol */
|
|
2703
|
+
'rc-lookahead'?: number;
|
|
2704
|
+
/** Weighted prediction for B-frames. */
|
|
2705
|
+
weightb?: boolean;
|
|
2706
|
+
/** Weighted prediction analysis method. */
|
|
2707
|
+
weightp?: 'none' | 'simple' | 'smart';
|
|
2708
|
+
/** Calculate and print SSIM stats. */
|
|
2709
|
+
ssim?: boolean;
|
|
2710
|
+
/** Use Periodic Intra Refresh instead of IDR frames. */
|
|
2711
|
+
'intra-refresh'?: boolean;
|
|
2712
|
+
/** Bluray compatibility workarounds. */
|
|
2713
|
+
'bluray-compat'?: boolean;
|
|
2714
|
+
/** Influences how often B-frames are used */
|
|
2715
|
+
'b-bias'?: number;
|
|
2716
|
+
/** Keep some B-frames as references. */
|
|
2717
|
+
'b-pyramid'?: 'none' | 'strict' | 'normal';
|
|
2718
|
+
/** One reference per partition, as opposed to one reference per macroblock */
|
|
2719
|
+
'mixed-refs'?: boolean;
|
|
2720
|
+
/** High profile 8x8 transform. */
|
|
2721
|
+
'8x8dct'?: boolean;
|
|
2722
|
+
'fast-pskip'?: boolean;
|
|
2723
|
+
/** Use access unit delimiters. */
|
|
2724
|
+
aud?: boolean;
|
|
2725
|
+
/** Use macroblock tree ratecontrol. */
|
|
2726
|
+
mbtree?: boolean;
|
|
2727
|
+
/** Loop filter parameters, in <alpha:beta> form. */
|
|
2728
|
+
deblock?: string;
|
|
2729
|
+
/** Reduce fluctuations in QP (before curve compression) */
|
|
2730
|
+
cplxblur?: number;
|
|
2731
|
+
/** A comma-separated list of partitions to consider. */
|
|
2732
|
+
partitions?: string;
|
|
2733
|
+
/** Direct MV prediction mode */
|
|
2734
|
+
'direct-pred'?: 'none' | 'spatial' | 'temporal' | 'auto';
|
|
2735
|
+
/** Limit the size of each slice in bytes */
|
|
2736
|
+
'slice-max-size'?: number;
|
|
2737
|
+
/** Filename for 2 pass stats */
|
|
2738
|
+
stats?: string;
|
|
2739
|
+
/** Signal HRD information (requires vbv-bufsize; */
|
|
2740
|
+
'nal-hrd'?: 'none' | 'vbr' | 'cbr';
|
|
2741
|
+
/** AVC-Intra class 50/100/200/300/480 */
|
|
2742
|
+
'avcintra-class'?: number;
|
|
2743
|
+
/** Set motion estimation method */
|
|
2744
|
+
me_method?: 'dia' | 'hex' | 'umh' | 'esa' | 'tesa';
|
|
2745
|
+
/** Set motion estimation method */
|
|
2746
|
+
'motion-est'?: 'dia' | 'hex' | 'umh' | 'esa' | 'tesa';
|
|
2747
|
+
/** If forcing keyframes, force them as IDR frames. */
|
|
2748
|
+
'forced-idr'?: boolean;
|
|
2749
|
+
/** Coder type */
|
|
2750
|
+
coder?: 'default' | 'cavlc' | 'cabac' | 'vlc' | 'ac';
|
|
2751
|
+
/** Strategy to choose between I/P/B-frames */
|
|
2752
|
+
b_strategy?: number;
|
|
2753
|
+
/** QP difference between chroma and luma */
|
|
2754
|
+
chromaoffset?: number;
|
|
2755
|
+
/** Scene change threshold */
|
|
2756
|
+
sc_threshold?: number;
|
|
2757
|
+
/** Noise reduction */
|
|
2758
|
+
noise_reduction?: number;
|
|
2759
|
+
/** Use user data unregistered SEI if available */
|
|
2760
|
+
udu_sei?: boolean;
|
|
2761
|
+
/** Override the x264 configuration using a :-separated list of key=value parameters */
|
|
2762
|
+
'x264-params'?: string;
|
|
2763
|
+
/** Set mb_info data through AVSideData, only useful when used from the API */
|
|
2764
|
+
mb_info?: boolean;
|
|
2765
|
+
};
|
|
2766
|
+
/**
|
|
2767
|
+
* libx265 H.265 / HEVC
|
|
2768
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libx265
|
|
2769
|
+
*/
|
|
2770
|
+
libx265: {
|
|
2771
|
+
/** set the x265 crf */
|
|
2772
|
+
crf?: number;
|
|
2773
|
+
/** set the x265 qp */
|
|
2774
|
+
qp?: number;
|
|
2775
|
+
/** if forcing keyframes, force them as IDR frames */
|
|
2776
|
+
'forced-idr'?: boolean;
|
|
2777
|
+
/** set the x265 preset */
|
|
2778
|
+
preset?: string;
|
|
2779
|
+
/** set the x265 tune parameter */
|
|
2780
|
+
tune?: string;
|
|
2781
|
+
/** set the x265 profile */
|
|
2782
|
+
profile?: string;
|
|
2783
|
+
/** Filename for 2 pass stats */
|
|
2784
|
+
'x265-stats'?: string;
|
|
2785
|
+
/** Use user data unregistered SEI if available */
|
|
2786
|
+
udu_sei?: boolean;
|
|
2787
|
+
/** Use A53 Closed Captions (if available) */
|
|
2788
|
+
a53cc?: boolean;
|
|
2789
|
+
/** set the x265 configuration using a :-separated list of key=value parameters */
|
|
2790
|
+
'x265-params'?: string;
|
|
2791
|
+
/** Enable Dolby Vision RPU coding */
|
|
2792
|
+
dolbyvision?: 'auto';
|
|
2793
|
+
};
|
|
2794
|
+
/**
|
|
2795
|
+
* libxavs Chinese AVS (Audio Video Standard)
|
|
2796
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libxavs
|
|
2797
|
+
*/
|
|
2798
|
+
libxavs: {
|
|
2799
|
+
/** Select the quality for constant quality mode */
|
|
2800
|
+
crf?: number;
|
|
2801
|
+
/** Constant quantization parameter rate control method */
|
|
2802
|
+
qp?: number;
|
|
2803
|
+
/** Influences how often B-frames are used */
|
|
2804
|
+
'b-bias'?: number;
|
|
2805
|
+
/** Reduce fluctuations in QP (before curve compression) */
|
|
2806
|
+
cplxblur?: number;
|
|
2807
|
+
/** Direct MV prediction mode */
|
|
2808
|
+
'direct-pred'?: 'none' | 'spatial' | 'temporal' | 'auto';
|
|
2809
|
+
/** Use access unit delimiters. */
|
|
2810
|
+
aud?: boolean;
|
|
2811
|
+
/** Use macroblock tree ratecontrol. */
|
|
2812
|
+
mbtree?: boolean;
|
|
2813
|
+
/** One reference per partition, as opposed to one reference per macroblock */
|
|
2814
|
+
'mixed-refs'?: boolean;
|
|
2815
|
+
'fast-pskip'?: boolean;
|
|
2816
|
+
/** Set motion estimation method */
|
|
2817
|
+
'motion-est'?: 'dia' | 'hex' | 'umh' | 'esa' | 'tesa';
|
|
2818
|
+
/** Strategy to choose between I/P/B-frames */
|
|
2819
|
+
b_strategy?: number;
|
|
2820
|
+
/** QP difference between chroma and luma */
|
|
2821
|
+
chromaoffset?: number;
|
|
2822
|
+
/** Scene change threshold */
|
|
2823
|
+
sc_threshold?: number;
|
|
2824
|
+
/** Noise reduction */
|
|
2825
|
+
noise_reduction?: number;
|
|
2826
|
+
};
|
|
2827
|
+
/**
|
|
2828
|
+
* libxavs2 AVS2-P2/IEEE1857.4
|
|
2829
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libxavs2
|
|
2830
|
+
*/
|
|
2831
|
+
libxavs2: {
|
|
2832
|
+
/** number of parallel threads for rows */
|
|
2833
|
+
lcu_row_threads?: number;
|
|
2834
|
+
/** Quantization initial parameter */
|
|
2835
|
+
initial_qp?: number;
|
|
2836
|
+
/** Quantization parameter */
|
|
2837
|
+
qp?: number;
|
|
2838
|
+
/** max qp for rate control */
|
|
2839
|
+
max_qp?: number;
|
|
2840
|
+
/** min qp for rate control */
|
|
2841
|
+
min_qp?: number;
|
|
2842
|
+
/** Speed level, higher is better but slower */
|
|
2843
|
+
speed_level?: number;
|
|
2844
|
+
/** log level: -1: none, 0: error, 1: warning, 2: info, 3: debug */
|
|
2845
|
+
log_level?: number;
|
|
2846
|
+
/** set the xavs2 configuration using a :-separated list of key=value parameters */
|
|
2847
|
+
'xavs2-params'?: string;
|
|
2848
|
+
};
|
|
2849
|
+
/**
|
|
2850
|
+
* libxeve MPEG-5 EVC
|
|
2851
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libxeve
|
|
2852
|
+
*/
|
|
2853
|
+
libxeve: {
|
|
2854
|
+
/** Encoding preset for setting encoding speed */
|
|
2855
|
+
preset?: 'default' | 'fast' | 'medium' | 'slow' | 'placebo';
|
|
2856
|
+
/** Tuning parameter for special purpose operation */
|
|
2857
|
+
tune?: 'none' | 'zerolatency' | 'psnr';
|
|
2858
|
+
/** Encoding profile */
|
|
2859
|
+
profile?: 'baseline' | 'main';
|
|
2860
|
+
/** Rate control mode */
|
|
2861
|
+
rc_mode?: 'CQP' | 'ABR' | 'CRF';
|
|
2862
|
+
/** Quantization parameter value for CQP rate control mode */
|
|
2863
|
+
qp?: number;
|
|
2864
|
+
/** Constant rate factor value for CRF rate control mode */
|
|
2865
|
+
crf?: number;
|
|
2866
|
+
/** Embed picture signature (HASH) for conformance checking in decoding */
|
|
2867
|
+
hash?: number;
|
|
2868
|
+
/** Embed SEI messages identifying encoder parameters and command line arguments */
|
|
2869
|
+
sei_info?: number;
|
|
2870
|
+
/** Override the xeve configuration using a :-separated list of key=value parameters */
|
|
2871
|
+
'xeve-params'?: string;
|
|
2872
|
+
};
|
|
2873
|
+
/**
|
|
2874
|
+
* libxvidcore MPEG-4 part 2
|
|
2875
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libxvid
|
|
2876
|
+
*/
|
|
2877
|
+
libxvid: {
|
|
2878
|
+
/** Luminance masking AQ */
|
|
2879
|
+
lumi_aq?: number;
|
|
2880
|
+
/** Variance AQ */
|
|
2881
|
+
variance_aq?: number;
|
|
2882
|
+
/** Show SSIM information to stdout */
|
|
2883
|
+
ssim?: 'off' | 'avg' | 'frame';
|
|
2884
|
+
/** SSIM accuracy */
|
|
2885
|
+
ssim_acc?: number;
|
|
2886
|
+
/** use GMC */
|
|
2887
|
+
gmc?: number;
|
|
2888
|
+
/** Motion estimation quality */
|
|
2889
|
+
me_quality?: number;
|
|
2890
|
+
/** Use MPEG quantizers instead of H.263 */
|
|
2891
|
+
mpeg_quant?: number;
|
|
2892
|
+
};
|
|
2893
|
+
/**
|
|
2894
|
+
* Lossless JPEG
|
|
2895
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#ljpeg
|
|
2896
|
+
*/
|
|
2897
|
+
ljpeg: {
|
|
2898
|
+
/** Prediction method */
|
|
2899
|
+
pred?: 'left' | 'plane' | 'median';
|
|
2900
|
+
};
|
|
2901
|
+
/**
|
|
2902
|
+
* MagicYUV video
|
|
2903
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#magicyuv
|
|
2904
|
+
*/
|
|
2905
|
+
magicyuv: {
|
|
2906
|
+
/** Prediction method */
|
|
2907
|
+
pred?: 'left' | 'gradient' | 'median';
|
|
2908
|
+
};
|
|
2909
|
+
/**
|
|
2910
|
+
* MJPEG (Motion JPEG)
|
|
2911
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mjpeg
|
|
2912
|
+
*/
|
|
2913
|
+
mjpeg: {
|
|
2914
|
+
/** Huffman table strategy */
|
|
2915
|
+
huffman?: 'default' | 'optimal';
|
|
2916
|
+
/** Always write luma and chroma matrix for mjpeg, useful for rtp streaming. */
|
|
2917
|
+
force_duplicated_matrix?: boolean;
|
|
2918
|
+
/** Flags common for all mpegvideo-based encoders. */
|
|
2919
|
+
mpv_flags?: 'skip_rd' | 'strict_gop' | 'qp_rd' | 'cbp_rd' | 'naq' | (string & {});
|
|
2920
|
+
/** single coefficient elimination threshold for luminance (negative values also consider dc coefficient) */
|
|
2921
|
+
luma_elim_threshold?: number;
|
|
2922
|
+
/** single coefficient elimination threshold for chrominance (negative values also consider dc coefficient) */
|
|
2923
|
+
chroma_elim_threshold?: number;
|
|
2924
|
+
quantizer_noise_shaping?: number;
|
|
2925
|
+
/** Simulate errors in the bitstream to test error concealment. */
|
|
2926
|
+
error_rate?: number;
|
|
2927
|
+
/** how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function) */
|
|
2928
|
+
qsquish?: number;
|
|
2929
|
+
/** experimental quantizer modulation */
|
|
2930
|
+
rc_qmod_amp?: number;
|
|
2931
|
+
/** experimental quantizer modulation */
|
|
2932
|
+
rc_qmod_freq?: number;
|
|
2933
|
+
/** Set rate control equation. When computing the expression, besides the standard functions */
|
|
2934
|
+
rc_eq?: string;
|
|
2935
|
+
/** initial complexity for 1-pass encoding */
|
|
2936
|
+
rc_init_cplx?: number;
|
|
2937
|
+
/** currently useless */
|
|
2938
|
+
rc_buf_aggressivity?: number;
|
|
2939
|
+
/** increase the quantizer for macroblocks close to borders */
|
|
2940
|
+
border_mask?: number;
|
|
2941
|
+
/** minimum Lagrange factor (VBR) */
|
|
2942
|
+
lmin?: number;
|
|
2943
|
+
/** maximum Lagrange factor (VBR) */
|
|
2944
|
+
lmax?: number;
|
|
2945
|
+
/** Frame skip threshold */
|
|
2946
|
+
skip_threshold?: number;
|
|
2947
|
+
/** Frame skip factor */
|
|
2948
|
+
skip_factor?: number;
|
|
2949
|
+
/** Frame skip exponent */
|
|
2950
|
+
skip_exp?: number;
|
|
2951
|
+
/** Frame skip compare function */
|
|
2952
|
+
skip_cmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'dct264' | 'dctmax' | 'chroma' | 'msad';
|
|
2953
|
+
/** Noise reduction */
|
|
2954
|
+
noise_reduction?: number;
|
|
2955
|
+
/** RTP payload size in bytes */
|
|
2956
|
+
ps?: number;
|
|
2957
|
+
};
|
|
2958
|
+
/**
|
|
2959
|
+
* MJPEG (Intel Quick Sync Video acceleration)
|
|
2960
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mjpeg_005fqsv
|
|
2961
|
+
*/
|
|
2962
|
+
mjpeg_qsv: {
|
|
2963
|
+
/** Maximum processing parallelism */
|
|
2964
|
+
async_depth?: number;
|
|
2965
|
+
};
|
|
2966
|
+
/**
|
|
2967
|
+
* MJPEG (VAAPI)
|
|
2968
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mjpeg_005fvaapi
|
|
2969
|
+
*/
|
|
2970
|
+
mjpeg_vaapi: {
|
|
2971
|
+
/** Distance (in I-frames) between key frames */
|
|
2972
|
+
idr_interval?: number;
|
|
2973
|
+
/** Maximum B-frame reference depth */
|
|
2974
|
+
b_depth?: number;
|
|
2975
|
+
/** Maximum processing parallelism. */
|
|
2976
|
+
async_depth?: number;
|
|
2977
|
+
/** Use low-power encoding mode (only available on some platforms; */
|
|
2978
|
+
low_power?: boolean;
|
|
2979
|
+
/** Maximum frame size (in bytes) */
|
|
2980
|
+
max_frame_size?: number;
|
|
2981
|
+
/** Include JFIF header */
|
|
2982
|
+
jfif?: boolean;
|
|
2983
|
+
/** Include huffman tables */
|
|
2984
|
+
huffman?: boolean;
|
|
2985
|
+
};
|
|
2986
|
+
/**
|
|
2987
|
+
* VideoToolbox MJPEG Encoder
|
|
2988
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mjpeg_005fvideotoolbox
|
|
2989
|
+
*/
|
|
2990
|
+
mjpeg_videotoolbox: {
|
|
2991
|
+
/** Allow software encoding */
|
|
2992
|
+
allow_sw?: boolean;
|
|
2993
|
+
};
|
|
2994
|
+
/**
|
|
2995
|
+
* MLP (Meridian Lossless Packing)
|
|
2996
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mlp
|
|
2997
|
+
*/
|
|
2998
|
+
mlp: {
|
|
2999
|
+
/** Max number of frames between each new header */
|
|
3000
|
+
max_interval?: number;
|
|
3001
|
+
/** LPC coefficient precision */
|
|
3002
|
+
lpc_coeff_precision?: number;
|
|
3003
|
+
/** LPC algorithm */
|
|
3004
|
+
lpc_type?: 'levinson' | 'cholesky';
|
|
3005
|
+
/** Number of passes to use for Cholesky factorization during LPC analysis */
|
|
3006
|
+
lpc_passes?: number;
|
|
3007
|
+
/** Max number of codebook searches */
|
|
3008
|
+
codebook_search?: number;
|
|
3009
|
+
/** Search method for selecting prediction order */
|
|
3010
|
+
prediction_order?: 'estimation' | 'search';
|
|
3011
|
+
/** Rematrix coefficient precision */
|
|
3012
|
+
rematrix_precision?: number;
|
|
3013
|
+
};
|
|
3014
|
+
/**
|
|
3015
|
+
* 3GPP Timed Text subtitle
|
|
3016
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mov_005ftext
|
|
3017
|
+
*/
|
|
3018
|
+
mov_text: {
|
|
3019
|
+
/** Frame height, usually video height */
|
|
3020
|
+
height?: number;
|
|
3021
|
+
};
|
|
3022
|
+
/**
|
|
3023
|
+
* MPEG-2 video (Intel Quick Sync Video acceleration)
|
|
3024
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mpeg2_005fqsv
|
|
3025
|
+
*/
|
|
3026
|
+
mpeg2_qsv: {
|
|
3027
|
+
/** Maximum processing parallelism */
|
|
3028
|
+
async_depth?: number;
|
|
3029
|
+
preset?: 'veryfast' | 'faster' | 'fast' | 'medium' | 'slow' | 'slower' | 'veryslow';
|
|
3030
|
+
/** Forcing I frames as IDR frames */
|
|
3031
|
+
forced_idr?: boolean;
|
|
3032
|
+
/** enable low power mode(experimental: many limitations by mfx version, BRC modes, etc.) */
|
|
3033
|
+
low_power?: boolean;
|
|
3034
|
+
/** Set QSV encoder parameters as key1=value1:key2=value2:... */
|
|
3035
|
+
qsv_params?: string;
|
|
3036
|
+
/** Enable rate distortion optimization */
|
|
3037
|
+
rdo?: number;
|
|
3038
|
+
profile?: 'unknown' | 'simple' | 'main' | 'high';
|
|
3039
|
+
};
|
|
3040
|
+
/**
|
|
3041
|
+
* MPEG-2 (VAAPI)
|
|
3042
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mpeg2_005fvaapi
|
|
3043
|
+
*/
|
|
3044
|
+
mpeg2_vaapi: {
|
|
3045
|
+
/** Distance (in I-frames) between key frames */
|
|
3046
|
+
idr_interval?: number;
|
|
3047
|
+
/** Maximum B-frame reference depth */
|
|
3048
|
+
b_depth?: number;
|
|
3049
|
+
/** Maximum processing parallelism. */
|
|
3050
|
+
async_depth?: number;
|
|
3051
|
+
/** Use low-power encoding mode (only available on some platforms; */
|
|
3052
|
+
low_power?: boolean;
|
|
3053
|
+
/** Maximum frame size (in bytes) */
|
|
3054
|
+
max_frame_size?: number;
|
|
3055
|
+
/** Set rate control mode */
|
|
3056
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'ICQ' | 'QVBR' | 'AVBR';
|
|
3057
|
+
/** Block level based bitrate control */
|
|
3058
|
+
blbrc?: boolean;
|
|
3059
|
+
/** Set profile (in profile_and_level_indication) */
|
|
3060
|
+
profile?: 'simple' | 'main';
|
|
3061
|
+
/** Set level (in profile_and_level_indication) */
|
|
3062
|
+
level?: 'low' | 'main' | 'high_1440' | 'high';
|
|
3063
|
+
};
|
|
3064
|
+
/**
|
|
3065
|
+
* MPEG-4 part 2
|
|
3066
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mpeg4
|
|
3067
|
+
*/
|
|
3068
|
+
mpeg4: {
|
|
3069
|
+
/** Use data partitioning. */
|
|
3070
|
+
data_partitioning?: boolean;
|
|
3071
|
+
/** Enable alternate scantable. */
|
|
3072
|
+
alternate_scan?: boolean;
|
|
3073
|
+
/** Use MPEG quantizers instead of H.263 */
|
|
3074
|
+
mpeg_quant?: number;
|
|
3075
|
+
/** Strategy to choose between I/P/B-frames */
|
|
3076
|
+
b_strategy?: number;
|
|
3077
|
+
/** Adjust sensitivity of b_frame_strategy 1 */
|
|
3078
|
+
b_sensitivity?: number;
|
|
3079
|
+
/** Downscale frames for dynamic B-frame decision */
|
|
3080
|
+
brd_scale?: number;
|
|
3081
|
+
/** Flags common for all mpegvideo-based encoders. */
|
|
3082
|
+
mpv_flags?: 'skip_rd' | 'strict_gop' | 'qp_rd' | 'cbp_rd' | 'naq' | 'mv0' | (string & {});
|
|
3083
|
+
/** single coefficient elimination threshold for luminance (negative values also consider dc coefficient) */
|
|
3084
|
+
luma_elim_threshold?: number;
|
|
3085
|
+
/** single coefficient elimination threshold for chrominance (negative values also consider dc coefficient) */
|
|
3086
|
+
chroma_elim_threshold?: number;
|
|
3087
|
+
quantizer_noise_shaping?: number;
|
|
3088
|
+
/** Simulate errors in the bitstream to test error concealment. */
|
|
3089
|
+
error_rate?: number;
|
|
3090
|
+
/** how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function) */
|
|
3091
|
+
qsquish?: number;
|
|
3092
|
+
/** experimental quantizer modulation */
|
|
3093
|
+
rc_qmod_amp?: number;
|
|
3094
|
+
/** experimental quantizer modulation */
|
|
3095
|
+
rc_qmod_freq?: number;
|
|
3096
|
+
/** Set rate control equation. When computing the expression, besides the standard functions */
|
|
3097
|
+
rc_eq?: string;
|
|
3098
|
+
/** initial complexity for 1-pass encoding */
|
|
3099
|
+
rc_init_cplx?: number;
|
|
3100
|
+
/** currently useless */
|
|
3101
|
+
rc_buf_aggressivity?: number;
|
|
3102
|
+
/** increase the quantizer for macroblocks close to borders */
|
|
3103
|
+
border_mask?: number;
|
|
3104
|
+
/** minimum Lagrange factor (VBR) */
|
|
3105
|
+
lmin?: number;
|
|
3106
|
+
/** maximum Lagrange factor (VBR) */
|
|
3107
|
+
lmax?: number;
|
|
3108
|
+
/** Frame skip threshold */
|
|
3109
|
+
skip_threshold?: number;
|
|
3110
|
+
/** Frame skip factor */
|
|
3111
|
+
skip_factor?: number;
|
|
3112
|
+
/** Frame skip exponent */
|
|
3113
|
+
skip_exp?: number;
|
|
3114
|
+
/** Frame skip compare function */
|
|
3115
|
+
skip_cmp?: 'sad' | 'sse' | 'satd' | 'dct' | 'psnr' | 'bit' | 'rd' | 'zero' | 'vsad' | 'vsse' | 'nsse' | 'dct264' | 'dctmax' | 'chroma' | 'msad';
|
|
3116
|
+
/** Noise reduction */
|
|
3117
|
+
noise_reduction?: number;
|
|
3118
|
+
/** RTP payload size in bytes */
|
|
3119
|
+
ps?: number;
|
|
3120
|
+
/** motion estimation algorithm */
|
|
3121
|
+
motion_est?: 'zero' | 'epzs' | 'xone';
|
|
3122
|
+
/** Motion estimation bitrate penalty compensation (1.0 = 256) */
|
|
3123
|
+
mepc?: number;
|
|
3124
|
+
/** pre motion estimation */
|
|
3125
|
+
mepre?: number;
|
|
3126
|
+
/** Penalty for intra blocks in block decision */
|
|
3127
|
+
intra_penalty?: number;
|
|
3128
|
+
/** Scene change threshold */
|
|
3129
|
+
sc_threshold?: number;
|
|
3130
|
+
};
|
|
3131
|
+
/**
|
|
3132
|
+
* OpenMAX IL MPEG-4 video encoder
|
|
3133
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mpeg4_005fomx
|
|
3134
|
+
*/
|
|
3135
|
+
mpeg4_omx: {
|
|
3136
|
+
/** OpenMAX library name */
|
|
3137
|
+
omx_libname?: string;
|
|
3138
|
+
/** OpenMAX library prefix */
|
|
3139
|
+
omx_libprefix?: string;
|
|
3140
|
+
/** Try to avoid copying input frames if possible */
|
|
3141
|
+
zerocopy?: number;
|
|
3142
|
+
/** Set the encoding profile */
|
|
3143
|
+
profile?: 'baseline' | 'main' | 'high';
|
|
3144
|
+
};
|
|
3145
|
+
/**
|
|
3146
|
+
* Opus
|
|
3147
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#opus
|
|
3148
|
+
*/
|
|
3149
|
+
opus: {
|
|
3150
|
+
/** Maximum delay in milliseconds */
|
|
3151
|
+
opus_delay?: number;
|
|
3152
|
+
/** Apply intensity stereo phase inversion */
|
|
3153
|
+
apply_phase_inv?: boolean;
|
|
3154
|
+
};
|
|
3155
|
+
/**
|
|
3156
|
+
* PNG (Portable Network Graphics) image
|
|
3157
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#png
|
|
3158
|
+
*/
|
|
3159
|
+
png: {
|
|
3160
|
+
/** Set image resolution (in dots per inch) */
|
|
3161
|
+
dpi?: number;
|
|
3162
|
+
/** Set image resolution (in dots per meter) */
|
|
3163
|
+
dpm?: number;
|
|
3164
|
+
/** Prediction method */
|
|
3165
|
+
pred?: 'none' | 'sub' | 'up' | 'avg' | 'paeth' | 'mixed';
|
|
3166
|
+
};
|
|
3167
|
+
/**
|
|
3168
|
+
* Apple ProRes
|
|
3169
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#prores
|
|
3170
|
+
*/
|
|
3171
|
+
prores: {
|
|
3172
|
+
/** vendor ID */
|
|
3173
|
+
vendor?: string;
|
|
3174
|
+
};
|
|
3175
|
+
/**
|
|
3176
|
+
* Apple ProRes
|
|
3177
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#prores_005faw
|
|
3178
|
+
*/
|
|
3179
|
+
prores_aw: {
|
|
3180
|
+
/** vendor ID */
|
|
3181
|
+
vendor?: string;
|
|
3182
|
+
};
|
|
3183
|
+
/**
|
|
3184
|
+
* Apple ProRes (iCodec Pro)
|
|
3185
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#prores_005fks
|
|
3186
|
+
*/
|
|
3187
|
+
prores_ks: {
|
|
3188
|
+
/** macroblocks per slice */
|
|
3189
|
+
mbs_per_slice?: number;
|
|
3190
|
+
profile?: 'auto' | 'proxy' | 'lt' | 'standard' | 'hq' | '4444' | '4444xq';
|
|
3191
|
+
/** vendor ID */
|
|
3192
|
+
vendor?: string;
|
|
3193
|
+
/** desired bits per macroblock */
|
|
3194
|
+
bits_per_mb?: number;
|
|
3195
|
+
/** quantiser matrix */
|
|
3196
|
+
quant_mat?: 'auto' | 'proxy' | 'lt' | 'standard' | 'hq' | 'default';
|
|
3197
|
+
/** bits for alpha plane */
|
|
3198
|
+
alpha_bits?: number;
|
|
3199
|
+
};
|
|
3200
|
+
/**
|
|
3201
|
+
* Apple ProRes (iCodec Pro)
|
|
3202
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#prores_005fks_005fvulkan
|
|
3203
|
+
*/
|
|
3204
|
+
prores_ks_vulkan: {
|
|
3205
|
+
/** macroblocks per slice */
|
|
3206
|
+
mbs_per_slice?: number;
|
|
3207
|
+
profile?: 'auto' | 'proxy' | 'lt' | 'standard' | 'hq' | '4444' | '4444xq';
|
|
3208
|
+
/** vendor ID */
|
|
3209
|
+
vendor?: string;
|
|
3210
|
+
/** desired bits per macroblock */
|
|
3211
|
+
bits_per_mb?: number;
|
|
3212
|
+
/** quantiser matrix */
|
|
3213
|
+
quant_mat?: 'auto' | 'proxy' | 'lt' | 'standard' | 'hq' | 'default';
|
|
3214
|
+
/** bits for alpha plane */
|
|
3215
|
+
alpha_bits?: number;
|
|
3216
|
+
/** Internal parallelization depth */
|
|
3217
|
+
async_depth?: number;
|
|
3218
|
+
};
|
|
3219
|
+
/**
|
|
3220
|
+
* VideoToolbox ProRes Encoder
|
|
3221
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#prores_005fvideotoolbox
|
|
3222
|
+
*/
|
|
3223
|
+
prores_videotoolbox: {
|
|
3224
|
+
/** Profile */
|
|
3225
|
+
profile?: 'auto' | 'proxy' | 'lt' | 'standard' | 'hq' | '4444' | 'xq';
|
|
3226
|
+
/** Allow software encoding */
|
|
3227
|
+
allow_sw?: boolean;
|
|
3228
|
+
/** Require software encoding */
|
|
3229
|
+
require_sw?: boolean;
|
|
3230
|
+
/** Hint that encoding should happen in real-time if not faster (e.g. capturing from camera). */
|
|
3231
|
+
realtime?: boolean;
|
|
3232
|
+
/** Other frames will come before the frames in this session. This helps smooth concatenation issues. */
|
|
3233
|
+
frames_before?: boolean;
|
|
3234
|
+
/** Other frames will come after the frames in this session. This helps smooth concatenation issues. */
|
|
3235
|
+
frames_after?: boolean;
|
|
3236
|
+
/** prioritize encoding speed */
|
|
3237
|
+
prio_speed?: boolean;
|
|
3238
|
+
/** Set to 1 to enable more power-efficient encoding if supported. */
|
|
3239
|
+
power_efficient?: number;
|
|
3240
|
+
/** Set to 1 to enable spatial AQ if supported. */
|
|
3241
|
+
spatial_aq?: number;
|
|
3242
|
+
/** Sets the maximum number of reference frames. This only has an effect when the value is less than the maximum allowed by the profile/level. */
|
|
3243
|
+
max_ref_frames?: number;
|
|
3244
|
+
};
|
|
3245
|
+
/**
|
|
3246
|
+
* id RoQ video
|
|
3247
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#roqvideo
|
|
3248
|
+
*/
|
|
3249
|
+
roqvideo: {
|
|
3250
|
+
/** Whether to respect known limitations in Quake 3 decoder */
|
|
3251
|
+
quake3_compat?: boolean;
|
|
3252
|
+
};
|
|
3253
|
+
/**
|
|
3254
|
+
* QuickTime video (RPZA)
|
|
3255
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#rpza
|
|
3256
|
+
*/
|
|
3257
|
+
rpza: {
|
|
3258
|
+
skip_frame_thresh?: number;
|
|
3259
|
+
start_one_color_thresh?: number;
|
|
3260
|
+
continue_one_color_thresh?: number;
|
|
3261
|
+
sixteen_color_thresh?: number;
|
|
3262
|
+
};
|
|
3263
|
+
/**
|
|
3264
|
+
* SBC (low-complexity subband codec)
|
|
3265
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#sbc
|
|
3266
|
+
*/
|
|
3267
|
+
sbc: {
|
|
3268
|
+
/** set maximum algorithmic latency */
|
|
3269
|
+
sbc_delay?: string;
|
|
3270
|
+
/** use mSBC mode (wideband speech mono SBC) */
|
|
3271
|
+
msbc?: boolean;
|
|
3272
|
+
};
|
|
3273
|
+
/**
|
|
3274
|
+
* SGI image
|
|
3275
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#sgi
|
|
3276
|
+
*/
|
|
3277
|
+
sgi: {
|
|
3278
|
+
/** Use run-length compression */
|
|
3279
|
+
rle?: number;
|
|
3280
|
+
};
|
|
3281
|
+
/**
|
|
3282
|
+
* Snow
|
|
3283
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#snow
|
|
3284
|
+
*/
|
|
3285
|
+
snow: {
|
|
3286
|
+
/** motion estimation algorithm */
|
|
3287
|
+
motion_est?: 'zero' | 'epzs' | 'xone' | 'iter';
|
|
3288
|
+
/** Only do ME/MC (I frames -> ref, P frame -> ME+MC). */
|
|
3289
|
+
memc_only?: boolean;
|
|
3290
|
+
/** Skip final bitstream writeout. */
|
|
3291
|
+
no_bitstream?: boolean;
|
|
3292
|
+
/** Penalty for intra blocks in block decision */
|
|
3293
|
+
intra_penalty?: number;
|
|
3294
|
+
/** Dia size for the iterative ME */
|
|
3295
|
+
iterative_dia_size?: number;
|
|
3296
|
+
/** Scene change threshold */
|
|
3297
|
+
sc_threshold?: number;
|
|
3298
|
+
/** Spatial decomposition type */
|
|
3299
|
+
pred?: 'dwt97' | 'dwt53';
|
|
3300
|
+
/** Set rate control equation. When computing the expression, besides the standard functions */
|
|
3301
|
+
rc_eq?: string;
|
|
3302
|
+
};
|
|
3303
|
+
/**
|
|
3304
|
+
* Sun Rasterfile image
|
|
3305
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#sunrast
|
|
3306
|
+
*/
|
|
3307
|
+
sunrast: {
|
|
3308
|
+
/** Use run-length compression */
|
|
3309
|
+
rle?: number;
|
|
3310
|
+
};
|
|
3311
|
+
/**
|
|
3312
|
+
* Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
|
|
3313
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#svq1
|
|
3314
|
+
*/
|
|
3315
|
+
svq1: {
|
|
3316
|
+
/** Motion estimation algorithm */
|
|
3317
|
+
'motion-est'?: 'zero' | 'epzs' | 'xone';
|
|
3318
|
+
};
|
|
3319
|
+
/**
|
|
3320
|
+
* Truevision Targa image
|
|
3321
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#targa
|
|
3322
|
+
*/
|
|
3323
|
+
targa: {
|
|
3324
|
+
/** Use run-length compression */
|
|
3325
|
+
rle?: number;
|
|
3326
|
+
};
|
|
3327
|
+
/**
|
|
3328
|
+
* TIFF image
|
|
3329
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#tiff
|
|
3330
|
+
*/
|
|
3331
|
+
tiff: {
|
|
3332
|
+
/** set the image resolution (in dpi) */
|
|
3333
|
+
dpi?: number;
|
|
3334
|
+
compression_algo?: 'packbits' | 'raw' | 'lzw' | 'deflate';
|
|
3335
|
+
};
|
|
3336
|
+
/**
|
|
3337
|
+
* TrueHD
|
|
3338
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#truehd
|
|
3339
|
+
*/
|
|
3340
|
+
truehd: {
|
|
3341
|
+
/** Max number of frames between each new header */
|
|
3342
|
+
max_interval?: number;
|
|
3343
|
+
/** LPC coefficient precision */
|
|
3344
|
+
lpc_coeff_precision?: number;
|
|
3345
|
+
/** LPC algorithm */
|
|
3346
|
+
lpc_type?: 'levinson' | 'cholesky';
|
|
3347
|
+
/** Number of passes to use for Cholesky factorization during LPC analysis */
|
|
3348
|
+
lpc_passes?: number;
|
|
3349
|
+
/** Max number of codebook searches */
|
|
3350
|
+
codebook_search?: number;
|
|
3351
|
+
/** Search method for selecting prediction order */
|
|
3352
|
+
prediction_order?: 'estimation' | 'search';
|
|
3353
|
+
/** Rematrix coefficient precision */
|
|
3354
|
+
rematrix_precision?: number;
|
|
3355
|
+
};
|
|
3356
|
+
/**
|
|
3357
|
+
* Ut Video
|
|
3358
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#utvideo
|
|
3359
|
+
*/
|
|
3360
|
+
utvideo: {
|
|
3361
|
+
/** Prediction method */
|
|
3362
|
+
pred?: 'none' | 'left' | 'median';
|
|
3363
|
+
};
|
|
3364
|
+
/**
|
|
3365
|
+
* Vizrt Binary Image
|
|
3366
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#vbn
|
|
3367
|
+
*/
|
|
3368
|
+
vbn: {
|
|
3369
|
+
/** Texture format */
|
|
3370
|
+
format?: 'raw' | 'dxt1' | 'dxt5';
|
|
3371
|
+
};
|
|
3372
|
+
/**
|
|
3373
|
+
* SMPTE VC-2
|
|
3374
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#vc2
|
|
3375
|
+
*/
|
|
3376
|
+
vc2: {
|
|
3377
|
+
/** Max undershoot in percent */
|
|
3378
|
+
tolerance?: number;
|
|
3379
|
+
/** Slice width */
|
|
3380
|
+
slice_width?: number;
|
|
3381
|
+
/** Slice height */
|
|
3382
|
+
slice_height?: number;
|
|
3383
|
+
/** Transform depth */
|
|
3384
|
+
wavelet_depth?: number;
|
|
3385
|
+
/** Transform type */
|
|
3386
|
+
wavelet_type?: '9_7' | '5_3' | 'haar' | 'haar_noshift';
|
|
3387
|
+
/** Custom quantization matrix */
|
|
3388
|
+
qm?: 'default' | 'color' | 'flat';
|
|
3389
|
+
};
|
|
3390
|
+
/**
|
|
3391
|
+
* VP8 (VAAPI)
|
|
3392
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#vp8_005fvaapi
|
|
3393
|
+
*/
|
|
3394
|
+
vp8_vaapi: {
|
|
3395
|
+
/** Distance (in I-frames) between key frames */
|
|
3396
|
+
idr_interval?: number;
|
|
3397
|
+
/** Maximum B-frame reference depth */
|
|
3398
|
+
b_depth?: number;
|
|
3399
|
+
/** Maximum processing parallelism. */
|
|
3400
|
+
async_depth?: number;
|
|
3401
|
+
/** Use low-power encoding mode (only available on some platforms; */
|
|
3402
|
+
low_power?: boolean;
|
|
3403
|
+
/** Maximum frame size (in bytes) */
|
|
3404
|
+
max_frame_size?: number;
|
|
3405
|
+
/** Set rate control mode */
|
|
3406
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'ICQ' | 'QVBR' | 'AVBR';
|
|
3407
|
+
/** Block level based bitrate control */
|
|
3408
|
+
blbrc?: boolean;
|
|
3409
|
+
/** Loop filter level */
|
|
3410
|
+
loop_filter_level?: number;
|
|
3411
|
+
/** Loop filter sharpness */
|
|
3412
|
+
loop_filter_sharpness?: number;
|
|
3413
|
+
};
|
|
3414
|
+
/**
|
|
3415
|
+
* VP9 video (Intel Quick Sync Video acceleration)
|
|
3416
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#vp9_005fqsv
|
|
3417
|
+
*/
|
|
3418
|
+
vp9_qsv: {
|
|
3419
|
+
/** Maximum processing parallelism */
|
|
3420
|
+
async_depth?: number;
|
|
3421
|
+
preset?: 'veryfast' | 'faster' | 'fast' | 'medium' | 'slow' | 'slower' | 'veryslow';
|
|
3422
|
+
/** Forcing I frames as IDR frames */
|
|
3423
|
+
forced_idr?: boolean;
|
|
3424
|
+
/** enable low power mode(experimental: many limitations by mfx version, BRC modes, etc.) */
|
|
3425
|
+
low_power?: boolean;
|
|
3426
|
+
/** Set QSV encoder parameters as key1=value1:key2=value2:... */
|
|
3427
|
+
qsv_params?: string;
|
|
3428
|
+
profile?: 'unknown' | 'profile0' | 'profile1' | 'profile2' | 'profile3';
|
|
3429
|
+
/** Number of columns for tiled encoding */
|
|
3430
|
+
tile_cols?: number;
|
|
3431
|
+
/** Number of rows for tiled encoding */
|
|
3432
|
+
tile_rows?: number;
|
|
3433
|
+
};
|
|
3434
|
+
/**
|
|
3435
|
+
* VP9 (VAAPI)
|
|
3436
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#vp9_005fvaapi
|
|
3437
|
+
*/
|
|
3438
|
+
vp9_vaapi: {
|
|
3439
|
+
/** Distance (in I-frames) between key frames */
|
|
3440
|
+
idr_interval?: number;
|
|
3441
|
+
/** Maximum B-frame reference depth */
|
|
3442
|
+
b_depth?: number;
|
|
3443
|
+
/** Maximum processing parallelism. */
|
|
3444
|
+
async_depth?: number;
|
|
3445
|
+
/** Use low-power encoding mode (only available on some platforms; */
|
|
3446
|
+
low_power?: boolean;
|
|
3447
|
+
/** Maximum frame size (in bytes) */
|
|
3448
|
+
max_frame_size?: number;
|
|
3449
|
+
/** Set rate control mode */
|
|
3450
|
+
rc_mode?: 'auto' | 'CQP' | 'CBR' | 'VBR' | 'ICQ' | 'QVBR' | 'AVBR';
|
|
3451
|
+
/** Block level based bitrate control */
|
|
3452
|
+
blbrc?: boolean;
|
|
3453
|
+
/** Loop filter level */
|
|
3454
|
+
loop_filter_level?: number;
|
|
3455
|
+
/** Loop filter sharpness */
|
|
3456
|
+
loop_filter_sharpness?: number;
|
|
3457
|
+
};
|
|
3458
|
+
/**
|
|
3459
|
+
* WavPack
|
|
3460
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#wavpack
|
|
3461
|
+
*/
|
|
3462
|
+
wavpack: {
|
|
3463
|
+
joint_stereo?: boolean;
|
|
3464
|
+
optimize_mono?: boolean;
|
|
3465
|
+
};
|
|
3466
|
+
}
|
|
3467
|
+
export interface DecoderOptionsMap {
|
|
3468
|
+
/**
|
|
3469
|
+
* AAC (Advanced Audio Coding)
|
|
3470
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#aac
|
|
3471
|
+
*/
|
|
3472
|
+
aac: {
|
|
3473
|
+
/** Select the channel to decode for dual mono */
|
|
3474
|
+
dual_mono_mode?: 'auto' | 'main' | 'sub' | 'both';
|
|
3475
|
+
/** Order in which the channels are to be exported */
|
|
3476
|
+
channel_order?: 'default' | 'coded';
|
|
3477
|
+
};
|
|
3478
|
+
/**
|
|
3479
|
+
* AAC (Advanced Audio Coding)
|
|
3480
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#aac_005ffixed
|
|
3481
|
+
*/
|
|
3482
|
+
aac_fixed: {
|
|
3483
|
+
/** Select the channel to decode for dual mono */
|
|
3484
|
+
dual_mono_mode?: 'auto' | 'main' | 'sub' | 'both';
|
|
3485
|
+
/** Order in which the channels are to be exported */
|
|
3486
|
+
channel_order?: 'default' | 'coded';
|
|
3487
|
+
};
|
|
3488
|
+
/**
|
|
3489
|
+
* ATSC A/52A (AC-3)
|
|
3490
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#ac3
|
|
3491
|
+
*/
|
|
3492
|
+
ac3: {
|
|
3493
|
+
/** enable consistent noise generation */
|
|
3494
|
+
cons_noisegen?: boolean;
|
|
3495
|
+
/** percentage of dynamic range compression to apply */
|
|
3496
|
+
drc_scale?: number;
|
|
3497
|
+
/** enable heavy dynamic range compression */
|
|
3498
|
+
heavy_compr?: boolean;
|
|
3499
|
+
/** target level in -dBFS (0 not applied) */
|
|
3500
|
+
target_level?: number;
|
|
3501
|
+
/** Preferred Stereo Downmix Mode */
|
|
3502
|
+
dmix_mode?: number;
|
|
3503
|
+
/** Lt/Rt Center Mix Level */
|
|
3504
|
+
ltrt_cmixlev?: number;
|
|
3505
|
+
/** Lt/Rt Surround Mix Level */
|
|
3506
|
+
ltrt_surmixlev?: number;
|
|
3507
|
+
/** Lo/Ro Center Mix Level */
|
|
3508
|
+
loro_cmixlev?: number;
|
|
3509
|
+
/** Lo/Ro Surround Mix Level */
|
|
3510
|
+
loro_surmixlev?: number;
|
|
3511
|
+
/** Request a specific channel layout from the decoder */
|
|
3512
|
+
downmix?: string;
|
|
3513
|
+
};
|
|
3514
|
+
/**
|
|
3515
|
+
* ATSC A/52A (AC-3)
|
|
3516
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#ac3_005ffixed
|
|
3517
|
+
*/
|
|
3518
|
+
ac3_fixed: {
|
|
3519
|
+
/** enable consistent noise generation */
|
|
3520
|
+
cons_noisegen?: boolean;
|
|
3521
|
+
/** percentage of dynamic range compression to apply */
|
|
3522
|
+
drc_scale?: number;
|
|
3523
|
+
/** enable heavy dynamic range compression */
|
|
3524
|
+
heavy_compr?: boolean;
|
|
3525
|
+
/** Request a specific channel layout from the decoder */
|
|
3526
|
+
downmix?: string;
|
|
3527
|
+
};
|
|
3528
|
+
/**
|
|
3529
|
+
* Dolby AC-4
|
|
3530
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#ac4
|
|
3531
|
+
*/
|
|
3532
|
+
ac4: {
|
|
3533
|
+
/** select presentation */
|
|
3534
|
+
presentation?: number;
|
|
3535
|
+
};
|
|
3536
|
+
/**
|
|
3537
|
+
* ALAC (Apple Lossless Audio Codec)
|
|
3538
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#alac
|
|
3539
|
+
*/
|
|
3540
|
+
alac: {
|
|
3541
|
+
/** Force non-standard decoding process */
|
|
3542
|
+
extra_bits_bug?: boolean;
|
|
3543
|
+
};
|
|
3544
|
+
/**
|
|
3545
|
+
* MPEG-4 Audio Lossless Coding (ALS)
|
|
3546
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#als
|
|
3547
|
+
*/
|
|
3548
|
+
als: {
|
|
3549
|
+
/** Sets the maximum order (ALS simple profile allows max 15) */
|
|
3550
|
+
max_order?: number;
|
|
3551
|
+
};
|
|
3552
|
+
/**
|
|
3553
|
+
* Monkey's Audio
|
|
3554
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#ape
|
|
3555
|
+
*/
|
|
3556
|
+
ape: {
|
|
3557
|
+
/** maximum number of samples decoded per call */
|
|
3558
|
+
max_samples?: 'all';
|
|
3559
|
+
};
|
|
3560
|
+
/**
|
|
3561
|
+
* Alliance for Open Media AV1
|
|
3562
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#av1
|
|
3563
|
+
*/
|
|
3564
|
+
av1: {
|
|
3565
|
+
/** Select an operating point of the scalable bitstream */
|
|
3566
|
+
operating_point?: number;
|
|
3567
|
+
};
|
|
3568
|
+
/**
|
|
3569
|
+
* Closed Captions (EIA-608 / CEA-708)
|
|
3570
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#cc_005fdec
|
|
3571
|
+
*/
|
|
3572
|
+
cc_dec: {
|
|
3573
|
+
/** emit subtitle events as they are decoded for real-time display */
|
|
3574
|
+
real_time?: boolean;
|
|
3575
|
+
/** minimum elapsed time between emitting real-time subtitle events */
|
|
3576
|
+
real_time_latency_msec?: number;
|
|
3577
|
+
/** select data field */
|
|
3578
|
+
data_field?: 'auto' | 'first' | 'second';
|
|
3579
|
+
};
|
|
3580
|
+
/**
|
|
3581
|
+
* DCA (DTS Coherent Acoustics)
|
|
3582
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dca
|
|
3583
|
+
*/
|
|
3584
|
+
dca: {
|
|
3585
|
+
/** Decode core only without extensions */
|
|
3586
|
+
core_only?: boolean;
|
|
3587
|
+
/** Order in which the channels are to be exported */
|
|
3588
|
+
channel_order?: 'default' | 'coded';
|
|
3589
|
+
/** Request a specific channel layout from the decoder */
|
|
3590
|
+
downmix?: string;
|
|
3591
|
+
};
|
|
3592
|
+
/**
|
|
3593
|
+
* Dolby E
|
|
3594
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dolby_005fe
|
|
3595
|
+
*/
|
|
3596
|
+
dolby_e: {
|
|
3597
|
+
/** Order in which the channels are to be exported */
|
|
3598
|
+
channel_order?: 'default' | 'coded';
|
|
3599
|
+
};
|
|
3600
|
+
/**
|
|
3601
|
+
* DVB subtitles
|
|
3602
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dvbsub
|
|
3603
|
+
*/
|
|
3604
|
+
dvbsub: {
|
|
3605
|
+
/** compute end of time using pts or timeout */
|
|
3606
|
+
compute_edt?: boolean;
|
|
3607
|
+
/** compute clut when not available(-1) or only once (-2) or always(1) or never(0) */
|
|
3608
|
+
compute_clut?: boolean;
|
|
3609
|
+
dvb_substream?: number;
|
|
3610
|
+
};
|
|
3611
|
+
/**
|
|
3612
|
+
* DVD subtitles
|
|
3613
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#dvdsub
|
|
3614
|
+
*/
|
|
3615
|
+
dvdsub: {
|
|
3616
|
+
/** set the global palette */
|
|
3617
|
+
palette?: string;
|
|
3618
|
+
/** obtain the global palette from .IFO file */
|
|
3619
|
+
ifo_palette?: string;
|
|
3620
|
+
/** Only show forced subtitles */
|
|
3621
|
+
forced_subs_only?: boolean;
|
|
3622
|
+
};
|
|
3623
|
+
/**
|
|
3624
|
+
* ATSC A/52B (AC-3, E-AC-3)
|
|
3625
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#eac3
|
|
3626
|
+
*/
|
|
3627
|
+
eac3: {
|
|
3628
|
+
/** enable consistent noise generation */
|
|
3629
|
+
cons_noisegen?: boolean;
|
|
3630
|
+
/** percentage of dynamic range compression to apply */
|
|
3631
|
+
drc_scale?: number;
|
|
3632
|
+
/** enable heavy dynamic range compression */
|
|
3633
|
+
heavy_compr?: boolean;
|
|
3634
|
+
/** target level in -dBFS (0 not applied) */
|
|
3635
|
+
target_level?: number;
|
|
3636
|
+
/** Preferred Stereo Downmix Mode */
|
|
3637
|
+
dmix_mode?: number;
|
|
3638
|
+
/** Lt/Rt Center Mix Level */
|
|
3639
|
+
ltrt_cmixlev?: number;
|
|
3640
|
+
/** Lt/Rt Surround Mix Level */
|
|
3641
|
+
ltrt_surmixlev?: number;
|
|
3642
|
+
/** Lo/Ro Center Mix Level */
|
|
3643
|
+
loro_cmixlev?: number;
|
|
3644
|
+
/** Lo/Ro Surround Mix Level */
|
|
3645
|
+
loro_surmixlev?: number;
|
|
3646
|
+
/** Request a specific channel layout from the decoder */
|
|
3647
|
+
downmix?: string;
|
|
3648
|
+
};
|
|
3649
|
+
/**
|
|
3650
|
+
* EVRC (Enhanced Variable Rate Codec)
|
|
3651
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#evrc
|
|
3652
|
+
*/
|
|
3653
|
+
evrc: {
|
|
3654
|
+
/** enable postfilter */
|
|
3655
|
+
postfilter?: boolean;
|
|
3656
|
+
};
|
|
3657
|
+
/**
|
|
3658
|
+
* OpenEXR image
|
|
3659
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#exr
|
|
3660
|
+
*/
|
|
3661
|
+
exr: {
|
|
3662
|
+
/** Set the decoding layer */
|
|
3663
|
+
layer?: string;
|
|
3664
|
+
/** Set the decoding part */
|
|
3665
|
+
part?: number;
|
|
3666
|
+
/** Set the float gamma value when decoding (deprecated, use a scaler) */
|
|
3667
|
+
gamma?: number;
|
|
3668
|
+
/** color transfer characteristics to apply to EXR linear input (deprecated, use a scaler) */
|
|
3669
|
+
apply_trc?: 'bt709' | 'gamma' | 'gamma22' | 'gamma28' | 'smpte170m' | 'smpte240m' | 'linear' | 'log' | 'log_sqrt' | 'iec61966_2_4' | 'bt1361' | 'iec61966_2_1' | 'bt2020_10bit' | 'bt2020_12bit' | 'smpte2084' | 'smpte428_1';
|
|
3670
|
+
};
|
|
3671
|
+
/**
|
|
3672
|
+
* Mirillis FIC
|
|
3673
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#fic
|
|
3674
|
+
*/
|
|
3675
|
+
fic: {
|
|
3676
|
+
/** skip the cursor */
|
|
3677
|
+
skip_cursor?: boolean;
|
|
3678
|
+
};
|
|
3679
|
+
/**
|
|
3680
|
+
* Flexible Image Transport System
|
|
3681
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#fits
|
|
3682
|
+
*/
|
|
3683
|
+
fits: {
|
|
3684
|
+
/** value that is used to replace BLANK pixels in data array */
|
|
3685
|
+
blank_value?: number;
|
|
3686
|
+
};
|
|
3687
|
+
/**
|
|
3688
|
+
* FLAC (Free Lossless Audio Codec)
|
|
3689
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#flac
|
|
3690
|
+
*/
|
|
3691
|
+
flac: {
|
|
3692
|
+
/** emulate old buggy lavc behavior */
|
|
3693
|
+
use_buggy_lpc?: boolean;
|
|
3694
|
+
};
|
|
3695
|
+
/**
|
|
3696
|
+
* Forward Uncompressed
|
|
3697
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#frwu
|
|
3698
|
+
*/
|
|
3699
|
+
frwu: {
|
|
3700
|
+
/** Change field order */
|
|
3701
|
+
change_field_order?: boolean;
|
|
3702
|
+
};
|
|
3703
|
+
/**
|
|
3704
|
+
* G.722 ADPCM
|
|
3705
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#g722
|
|
3706
|
+
*/
|
|
3707
|
+
g722: {
|
|
3708
|
+
/** Bits per G722 codeword */
|
|
3709
|
+
bits_per_codeword?: number;
|
|
3710
|
+
};
|
|
3711
|
+
/**
|
|
3712
|
+
* G.723.1
|
|
3713
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#g723_005f1
|
|
3714
|
+
*/
|
|
3715
|
+
g723_1: {
|
|
3716
|
+
/** enable postfilter */
|
|
3717
|
+
postfilter?: boolean;
|
|
3718
|
+
};
|
|
3719
|
+
/**
|
|
3720
|
+
* GIF (Graphics Interchange Format)
|
|
3721
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#gif
|
|
3722
|
+
*/
|
|
3723
|
+
gif: {
|
|
3724
|
+
/** color value (ARGB) that is used instead of transparent color */
|
|
3725
|
+
trans_color?: number;
|
|
3726
|
+
};
|
|
3727
|
+
/**
|
|
3728
|
+
* H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
|
|
3729
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#h264
|
|
3730
|
+
*/
|
|
3731
|
+
h264: {
|
|
3732
|
+
/** is avc */
|
|
3733
|
+
is_avc?: boolean;
|
|
3734
|
+
/** nal_length_size */
|
|
3735
|
+
nal_length_size?: number;
|
|
3736
|
+
/** Enable error resilience on damaged frames (unsafe) */
|
|
3737
|
+
enable_er?: boolean;
|
|
3738
|
+
/** Assume this x264 version if no x264 version found in any SEI */
|
|
3739
|
+
x264_build?: number;
|
|
3740
|
+
/** Do not return gray gap frames */
|
|
3741
|
+
skip_gray?: boolean;
|
|
3742
|
+
/** Avoid using gray gap frames as references */
|
|
3743
|
+
noref_gray?: boolean;
|
|
3744
|
+
};
|
|
3745
|
+
/**
|
|
3746
|
+
* HEVC (High Efficiency Video Coding)
|
|
3747
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#hevc
|
|
3748
|
+
*/
|
|
3749
|
+
hevc: {
|
|
3750
|
+
/** Apply default display window from VUI */
|
|
3751
|
+
apply_defdispwin?: boolean;
|
|
3752
|
+
/** strictly apply default display window size */
|
|
3753
|
+
'strict-displaywin'?: boolean;
|
|
3754
|
+
/** Array of view IDs that should be decoded and output; a single -1 to decode all views */
|
|
3755
|
+
view_ids?: string;
|
|
3756
|
+
/** Array of available view IDs is exported here */
|
|
3757
|
+
view_ids_available?: string;
|
|
3758
|
+
/** Array of view positions for view_ids_available is exported here, as AVStereo3DView */
|
|
3759
|
+
view_pos_available?: 'unspecified' | 'left' | 'right';
|
|
3760
|
+
};
|
|
3761
|
+
/**
|
|
3762
|
+
* JPEG 2000
|
|
3763
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#jpeg2000
|
|
3764
|
+
*/
|
|
3765
|
+
jpeg2000: {
|
|
3766
|
+
/** Lower the decoding resolution by a power of two */
|
|
3767
|
+
lowres?: number;
|
|
3768
|
+
};
|
|
3769
|
+
/**
|
|
3770
|
+
* libaribb24 ARIB STD-B24 caption decoder
|
|
3771
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libaribb24
|
|
3772
|
+
*/
|
|
3773
|
+
libaribb24: {
|
|
3774
|
+
/** set the base path for the libaribb24 library */
|
|
3775
|
+
'aribb24-base-path'?: string;
|
|
3776
|
+
/** skip ruby text blocks during decoding */
|
|
3777
|
+
'aribb24-skip-ruby-text'?: boolean;
|
|
3778
|
+
/** default profile to use if not specified in the stream parameters */
|
|
3779
|
+
default_profile?: 'a' | 'c';
|
|
3780
|
+
};
|
|
3781
|
+
/**
|
|
3782
|
+
* ARIB STD-B24 caption decoder
|
|
3783
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libaribcaption
|
|
3784
|
+
*/
|
|
3785
|
+
libaribcaption: {
|
|
3786
|
+
/** subtitle rendering type */
|
|
3787
|
+
sub_type?: 'none' | 'bitmap' | 'text' | 'ass';
|
|
3788
|
+
/** encoding scheme of subtitle text */
|
|
3789
|
+
caption_encoding?: 'auto' | 'jis' | 'utf8' | 'latin';
|
|
3790
|
+
/** workaround of ASS subtitle for players which can't handle multi-rectangle [ass] */
|
|
3791
|
+
ass_single_rect?: boolean;
|
|
3792
|
+
/** comma-separated font family [ass, bitmap] */
|
|
3793
|
+
font?: string;
|
|
3794
|
+
/** always render characters with outline [(ass), bitmap] */
|
|
3795
|
+
force_outline_text?: boolean;
|
|
3796
|
+
/** ignore rendering caption background [(ass), bitmap] */
|
|
3797
|
+
ignore_background?: boolean;
|
|
3798
|
+
/** ignore ruby-like characters [ass, bitmap] */
|
|
3799
|
+
ignore_ruby?: boolean;
|
|
3800
|
+
/** outline width of text [(ass), bitmap] */
|
|
3801
|
+
outline_width?: number;
|
|
3802
|
+
/** replace known DRCS [bitmap] */
|
|
3803
|
+
replace_drcs?: boolean;
|
|
3804
|
+
/** replace MSZ fullwidth alphanumerics with halfwidth alphanumerics [ass, bitmap] */
|
|
3805
|
+
replace_msz_ascii?: boolean;
|
|
3806
|
+
/** replace MSZ fullwidth Japanese with halfwidth [ass, bitmap] */
|
|
3807
|
+
replace_msz_japanese?: boolean;
|
|
3808
|
+
/** replace MSZ characters with halfwidth glyphs [bitmap] */
|
|
3809
|
+
replace_msz_glyph?: boolean;
|
|
3810
|
+
/** set input video size (WxH or abbreviation) [bitmap] */
|
|
3811
|
+
canvas_size?: string;
|
|
3812
|
+
};
|
|
3813
|
+
/**
|
|
3814
|
+
* dav1d AV1 decoder by VideoLAN
|
|
3815
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libdav1d
|
|
3816
|
+
*/
|
|
3817
|
+
libdav1d: {
|
|
3818
|
+
/** Max frame delay */
|
|
3819
|
+
max_frame_delay?: number;
|
|
3820
|
+
/** Apply Film Grain */
|
|
3821
|
+
filmgrain?: boolean;
|
|
3822
|
+
/** Select an operating point of the scalable bitstream */
|
|
3823
|
+
oppoint?: number;
|
|
3824
|
+
/** Output all spatial layers */
|
|
3825
|
+
alllayers?: boolean;
|
|
3826
|
+
};
|
|
3827
|
+
/**
|
|
3828
|
+
* Fraunhofer FDK AAC
|
|
3829
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libfdk_005faac
|
|
3830
|
+
*/
|
|
3831
|
+
libfdk_aac: {
|
|
3832
|
+
/** Error concealment method */
|
|
3833
|
+
conceal?: 'spectral' | 'noise' | 'energy';
|
|
3834
|
+
/** Dynamic Range Control: boost, where [0] is none and [127] is max boost */
|
|
3835
|
+
drc_boost?: number;
|
|
3836
|
+
/** Dynamic Range Control: attenuation factor, where [0] is none and [127] is max compression */
|
|
3837
|
+
drc_cut?: number;
|
|
3838
|
+
/** Dynamic Range Control: reference level, quantized to 0.25dB steps where [0] is 0dB and [127] is -31.75dB, -1 for auto, and -2 for disabled */
|
|
3839
|
+
drc_level?: number;
|
|
3840
|
+
/** Dynamic Range Control: heavy compression, where [1] is on (RF mode) and [0] is off */
|
|
3841
|
+
drc_heavy?: number;
|
|
3842
|
+
/** Signal level limiting */
|
|
3843
|
+
level_limit?: boolean;
|
|
3844
|
+
/** Dynamic Range Control: effect type, where e.g. [0] is none and [6] is general */
|
|
3845
|
+
drc_effect?: number;
|
|
3846
|
+
/** Dynamic Range Control: album mode, where [0] is off and [1] is on */
|
|
3847
|
+
album_mode?: number;
|
|
3848
|
+
/** Request a specific channel layout from the decoder */
|
|
3849
|
+
downmix?: string;
|
|
3850
|
+
};
|
|
3851
|
+
/**
|
|
3852
|
+
* iLBC (Internet Low Bitrate Codec)
|
|
3853
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libilbc
|
|
3854
|
+
*/
|
|
3855
|
+
libilbc: {
|
|
3856
|
+
/** Enhance the decoded audio (adds delay) */
|
|
3857
|
+
enhance?: number;
|
|
3858
|
+
};
|
|
3859
|
+
/**
|
|
3860
|
+
* libopus Opus
|
|
3861
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libopus
|
|
3862
|
+
*/
|
|
3863
|
+
libopus: {
|
|
3864
|
+
/** Apply intensity stereo phase inversion */
|
|
3865
|
+
apply_phase_inv?: boolean;
|
|
3866
|
+
};
|
|
3867
|
+
/**
|
|
3868
|
+
* Librsvg rasterizer
|
|
3869
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#librsvg
|
|
3870
|
+
*/
|
|
3871
|
+
librsvg: {
|
|
3872
|
+
/** Width to render to (0 for default) */
|
|
3873
|
+
width?: number;
|
|
3874
|
+
/** Height to render to (0 for default) */
|
|
3875
|
+
height?: number;
|
|
3876
|
+
/** Keep aspect ratio with custom width/height */
|
|
3877
|
+
keep_ar?: boolean;
|
|
3878
|
+
};
|
|
3879
|
+
/**
|
|
3880
|
+
* Libzvbi DVB teletext decoder
|
|
3881
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#libzvbi_005fteletextdec
|
|
3882
|
+
*/
|
|
3883
|
+
libzvbi_teletextdec: {
|
|
3884
|
+
/** page numbers to decode, subtitle for subtitles, * for all */
|
|
3885
|
+
txt_page?: string;
|
|
3886
|
+
/** default G0 character set used for decoding */
|
|
3887
|
+
txt_default_region?: number;
|
|
3888
|
+
/** discards the top teletext line */
|
|
3889
|
+
txt_chop_top?: number;
|
|
3890
|
+
/** format of the subtitles (bitmap or text or ass) */
|
|
3891
|
+
txt_format?: 'bitmap' | 'text' | 'ass';
|
|
3892
|
+
/** x offset of generated bitmaps */
|
|
3893
|
+
txt_left?: number;
|
|
3894
|
+
/** y offset of generated bitmaps */
|
|
3895
|
+
txt_top?: number;
|
|
3896
|
+
/** chops leading and trailing spaces from text */
|
|
3897
|
+
txt_chop_spaces?: number;
|
|
3898
|
+
/** display duration of teletext pages in msecs */
|
|
3899
|
+
txt_duration?: number;
|
|
3900
|
+
/** force transparent background of the teletext */
|
|
3901
|
+
txt_transparent?: number;
|
|
3902
|
+
/** set opacity of the transparent background */
|
|
3903
|
+
txt_opacity?: number;
|
|
3904
|
+
};
|
|
3905
|
+
/**
|
|
3906
|
+
* MJPEG (Motion JPEG)
|
|
3907
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mjpeg
|
|
3908
|
+
*/
|
|
3909
|
+
mjpeg: {
|
|
3910
|
+
/** Use external huffman table. */
|
|
3911
|
+
extern_huff?: boolean;
|
|
3912
|
+
};
|
|
3913
|
+
/**
|
|
3914
|
+
* MLP (Meridian Lossless Packing)
|
|
3915
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mlp
|
|
3916
|
+
*/
|
|
3917
|
+
mlp: {
|
|
3918
|
+
/** Request a specific channel layout from the decoder */
|
|
3919
|
+
downmix?: string;
|
|
3920
|
+
};
|
|
3921
|
+
/**
|
|
3922
|
+
* 3GPP Timed Text subtitle
|
|
3923
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mov_005ftext
|
|
3924
|
+
*/
|
|
3925
|
+
mov_text: {
|
|
3926
|
+
/** Frame width, usually video width */
|
|
3927
|
+
width?: number;
|
|
3928
|
+
/** Frame height, usually video height */
|
|
3929
|
+
height?: number;
|
|
3930
|
+
};
|
|
3931
|
+
/**
|
|
3932
|
+
* MPEG-2 video
|
|
3933
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mpeg2video
|
|
3934
|
+
*/
|
|
3935
|
+
mpeg2video: {
|
|
3936
|
+
/** extract a specific Closed Captions format */
|
|
3937
|
+
cc_format?: 'auto' | 'a53' | 'scte20' | 'dvd' | 'dish';
|
|
3938
|
+
};
|
|
3939
|
+
/**
|
|
3940
|
+
* MPEG-4 part 2
|
|
3941
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#mpeg4
|
|
3942
|
+
*/
|
|
3943
|
+
mpeg4: {
|
|
3944
|
+
/** 1/4 subpel MC */
|
|
3945
|
+
quarter_sample?: boolean;
|
|
3946
|
+
/** divx style packed b frames */
|
|
3947
|
+
divx_packed?: boolean;
|
|
3948
|
+
};
|
|
3949
|
+
/**
|
|
3950
|
+
* Opus
|
|
3951
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#opus
|
|
3952
|
+
*/
|
|
3953
|
+
opus: {
|
|
3954
|
+
/** Apply intensity stereo phase inversion */
|
|
3955
|
+
apply_phase_inv?: boolean;
|
|
3956
|
+
};
|
|
3957
|
+
/**
|
|
3958
|
+
* HDMV Presentation Graphic Stream subtitles
|
|
3959
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#pgssub
|
|
3960
|
+
*/
|
|
3961
|
+
pgssub: {
|
|
3962
|
+
/** Only show forced subtitles */
|
|
3963
|
+
forced_subs_only?: boolean;
|
|
3964
|
+
};
|
|
3965
|
+
/**
|
|
3966
|
+
* Kodak Photo CD
|
|
3967
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#photocd
|
|
3968
|
+
*/
|
|
3969
|
+
photocd: {
|
|
3970
|
+
/** Lower the decoding resolution by a power of two */
|
|
3971
|
+
lowres?: number;
|
|
3972
|
+
};
|
|
3973
|
+
/**
|
|
3974
|
+
* PJS subtitle
|
|
3975
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#pjs
|
|
3976
|
+
*/
|
|
3977
|
+
pjs: {
|
|
3978
|
+
/** Set if ASS tags must be escaped */
|
|
3979
|
+
keep_ass_markup?: boolean;
|
|
3980
|
+
};
|
|
3981
|
+
/**
|
|
3982
|
+
* RemotelyAnywhere Screen Capture
|
|
3983
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#rasc
|
|
3984
|
+
*/
|
|
3985
|
+
rasc: {
|
|
3986
|
+
/** skip the cursor */
|
|
3987
|
+
skip_cursor?: boolean;
|
|
3988
|
+
};
|
|
3989
|
+
/**
|
|
3990
|
+
* raw video
|
|
3991
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#rawvideo
|
|
3992
|
+
*/
|
|
3993
|
+
rawvideo: {
|
|
3994
|
+
/** top field first */
|
|
3995
|
+
top?: boolean;
|
|
3996
|
+
};
|
|
3997
|
+
/**
|
|
3998
|
+
* SMPTE 302M
|
|
3999
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#s302m
|
|
4000
|
+
*/
|
|
4001
|
+
s302m: {
|
|
4002
|
+
/** Chooses what to do with NON-PCM */
|
|
4003
|
+
non_pcm_mode?: 'copy' | 'drop' | 'decode_copy' | 'decode_drop';
|
|
4004
|
+
};
|
|
4005
|
+
/**
|
|
4006
|
+
* Spruce subtitle format
|
|
4007
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#stl
|
|
4008
|
+
*/
|
|
4009
|
+
stl: {
|
|
4010
|
+
/** Set if ASS tags must be escaped */
|
|
4011
|
+
keep_ass_markup?: boolean;
|
|
4012
|
+
};
|
|
4013
|
+
/**
|
|
4014
|
+
* SubViewer1 subtitle
|
|
4015
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#subviewer1
|
|
4016
|
+
*/
|
|
4017
|
+
subviewer1: {
|
|
4018
|
+
/** Set if ASS tags must be escaped */
|
|
4019
|
+
keep_ass_markup?: boolean;
|
|
4020
|
+
};
|
|
4021
|
+
/**
|
|
4022
|
+
* Raw text subtitle
|
|
4023
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#text
|
|
4024
|
+
*/
|
|
4025
|
+
text: {
|
|
4026
|
+
/** Set if ASS tags must be escaped */
|
|
4027
|
+
keep_ass_markup?: boolean;
|
|
4028
|
+
};
|
|
4029
|
+
/**
|
|
4030
|
+
* TIFF image
|
|
4031
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#tiff
|
|
4032
|
+
*/
|
|
4033
|
+
tiff: {
|
|
4034
|
+
/** decode subimage instead if available */
|
|
4035
|
+
subimage?: boolean;
|
|
4036
|
+
/** decode embedded thumbnail subimage instead if available */
|
|
4037
|
+
thumbnail?: boolean;
|
|
4038
|
+
/** page number of multi-page image to decode (starting from 1) */
|
|
4039
|
+
page?: number;
|
|
4040
|
+
};
|
|
4041
|
+
/**
|
|
4042
|
+
* TrueHD
|
|
4043
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#truehd
|
|
4044
|
+
*/
|
|
4045
|
+
truehd: {
|
|
4046
|
+
/** Request a specific channel layout from the decoder */
|
|
4047
|
+
downmix?: string;
|
|
4048
|
+
};
|
|
4049
|
+
/**
|
|
4050
|
+
* TTA (True Audio)
|
|
4051
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#tta
|
|
4052
|
+
*/
|
|
4053
|
+
tta: {
|
|
4054
|
+
/** Set decoding password */
|
|
4055
|
+
password?: string;
|
|
4056
|
+
};
|
|
4057
|
+
/**
|
|
4058
|
+
* Uncompressed 4:2:2 10-bit
|
|
4059
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#v210
|
|
4060
|
+
*/
|
|
4061
|
+
v210: {
|
|
4062
|
+
/** Custom V210 stride */
|
|
4063
|
+
custom_stride?: number;
|
|
4064
|
+
};
|
|
4065
|
+
/**
|
|
4066
|
+
* VPlayer subtitle
|
|
4067
|
+
* @see https://ffmpeg.org/ffmpeg-codecs.html#vplayer
|
|
4068
|
+
*/
|
|
4069
|
+
vplayer: {
|
|
4070
|
+
/** Set if ASS tags must be escaped */
|
|
4071
|
+
keep_ass_markup?: boolean;
|
|
4072
|
+
};
|
|
4073
|
+
}
|