node-av 6.0.0-beta.2 → 6.0.0-beta.3

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.
Files changed (44) hide show
  1. package/dist/api/bitstream-filter.d.ts +11 -6
  2. package/dist/api/bitstream-filter.js.map +1 -1
  3. package/dist/api/decoder.d.ts +9 -7
  4. package/dist/api/decoder.js.map +1 -1
  5. package/dist/api/demuxer.d.ts +27 -22
  6. package/dist/api/demuxer.js.map +1 -1
  7. package/dist/api/encoder.d.ts +9 -7
  8. package/dist/api/encoder.js +10 -4
  9. package/dist/api/encoder.js.map +1 -1
  10. package/dist/api/filter-presets.d.ts +27 -658
  11. package/dist/api/filter-presets.js +45 -838
  12. package/dist/api/filter-presets.js.map +1 -1
  13. package/dist/api/fmp4-stream.js +1 -1
  14. package/dist/api/fmp4-stream.js.map +1 -1
  15. package/dist/api/muxer.d.ts +21 -15
  16. package/dist/api/muxer.js.map +1 -1
  17. package/dist/api/rtp-stream.js +1 -1
  18. package/dist/api/rtp-stream.js.map +1 -1
  19. package/dist/constants/bsf-options.d.ts +326 -0
  20. package/dist/constants/bsf-options.js +7 -0
  21. package/dist/constants/bsf-options.js.map +1 -0
  22. package/dist/constants/decoders.d.ts +636 -618
  23. package/dist/constants/decoders.js +0 -2
  24. package/dist/constants/decoders.js.map +1 -1
  25. package/dist/constants/encoders.d.ts +300 -282
  26. package/dist/constants/encoders.js +0 -2
  27. package/dist/constants/encoders.js.map +1 -1
  28. package/dist/constants/filter-options.d.ts +10915 -0
  29. package/dist/constants/filter-options.js +7 -0
  30. package/dist/constants/filter-options.js.map +1 -0
  31. package/dist/constants/format-options.d.ts +2555 -0
  32. package/dist/constants/format-options.js +7 -0
  33. package/dist/constants/format-options.js.map +1 -0
  34. package/dist/constants/index.d.ts +4 -0
  35. package/dist/constants/options.d.ts +4073 -0
  36. package/dist/constants/options.js +7 -0
  37. package/dist/constants/options.js.map +1 -0
  38. package/dist/lib/codec.d.ts +26 -1
  39. package/dist/lib/codec.js +27 -0
  40. package/dist/lib/codec.js.map +1 -1
  41. package/dist/lib/dictionary.d.ts +1 -1
  42. package/dist/lib/dictionary.js.map +1 -1
  43. package/dist/lib/native-types.d.ts +18 -0
  44. package/package.json +16 -12
@@ -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
+ }