summaryrefslogtreecommitdiff
path: root/doc/encoders.texi (plain)
blob: 594c612b5ae3d440f9f632465e370207114e0ab7
1@chapter Encoders
2@c man begin ENCODERS
3
4Encoders are configured elements in FFmpeg which allow the encoding of
5multimedia streams.
6
7When you configure your FFmpeg build, all the supported native encoders
8are enabled by default. Encoders requiring an external library must be enabled
9manually via the corresponding @code{--enable-lib} option. You can list all
10available encoders using the configure option @code{--list-encoders}.
11
12You can disable all the encoders with the configure option
13@code{--disable-encoders} and selectively enable / disable single encoders
14with the options @code{--enable-encoder=@var{ENCODER}} /
15@code{--disable-encoder=@var{ENCODER}}.
16
17The option @code{-encoders} of the ff* tools will display the list of
18enabled encoders.
19
20@c man end ENCODERS
21
22@chapter Audio Encoders
23@c man begin AUDIO ENCODERS
24
25A description of some of the currently available audio encoders
26follows.
27
28@anchor{aacenc}
29@section aac
30
31Advanced Audio Coding (AAC) encoder.
32
33This encoder is the default AAC encoder, natively implemented into FFmpeg. Its
34quality is on par or better than libfdk_aac at the default bitrate of 128kbps.
35This encoder also implements more options, profiles and samplerates than
36other encoders (with only the AAC-HE profile pending to be implemented) so this
37encoder has become the default and is the recommended choice.
38
39@subsection Options
40
41@table @option
42@item b
43Set bit rate in bits/s. Setting this automatically activates constant bit rate
44(CBR) mode. If this option is unspecified it is set to 128kbps.
45
46@item q
47Set quality for variable bit rate (VBR) mode. This option is valid only using
48the @command{ffmpeg} command-line tool. For library interface users, use
49@option{global_quality}.
50
51@item cutoff
52Set cutoff frequency. If unspecified will allow the encoder to dynamically
53adjust the cutoff to improve clarity on low bitrates.
54
55@item aac_coder
56Set AAC encoder coding method. Possible values:
57
58@table @samp
59@item twoloop
60Two loop searching (TLS) method.
61
62This method first sets quantizers depending on band thresholds and then tries
63to find an optimal combination by adding or subtracting a specific value from
64all quantizers and adjusting some individual quantizer a little. Will tune
65itself based on whether @option{aac_is}, @option{aac_ms} and @option{aac_pns}
66are enabled.
67This is the default choice for a coder.
68
69@item anmr
70Average noise to mask ratio (ANMR) trellis-based solution.
71
72This is an experimental coder which currently produces a lower quality, is more
73unstable and is slower than the default twoloop coder but has potential.
74Currently has no support for the @option{aac_is} or @option{aac_pns} options.
75Not currently recommended.
76
77@item fast
78Constant quantizer method.
79
80This method sets a constant quantizer for all bands. This is the fastest of all
81the methods and has no rate control or support for @option{aac_is} or
82@option{aac_pns}.
83Not recommended.
84
85@end table
86
87@item aac_ms
88Sets mid/side coding mode. The default value of "auto" will automatically use
89M/S with bands which will benefit from such coding. Can be forced for all bands
90using the value "enable", which is mainly useful for debugging or disabled using
91"disable".
92
93@item aac_is
94Sets intensity stereo coding tool usage. By default, it's enabled and will
95automatically toggle IS for similar pairs of stereo bands if it's benefitial.
96Can be disabled for debugging by setting the value to "disable".
97
98@item aac_pns
99Uses perceptual noise substitution to replace low entropy high frequency bands
100with imperceivable white noise during the decoding process. By default, it's
101enabled, but can be disabled for debugging purposes by using "disable".
102
103@item aac_tns
104Enables the use of a multitap FIR filter which spans through the high frequency
105bands to hide quantization noise during the encoding process and is reverted
106by the decoder. As well as decreasing unpleasant artifacts in the high range
107this also reduces the entropy in the high bands and allows for more bits to
108be used by the mid-low bands. By default it's enabled but can be disabled for
109debugging by setting the option to "disable".
110
111@item aac_ltp
112Enables the use of the long term prediction extension which increases coding
113efficiency in very low bandwidth situations such as encoding of voice or
114solo piano music by extending constant harmonic peaks in bands throughout
115frames. This option is implied by profile:a aac_low and is incompatible with
116aac_pred. Use in conjunction with @option{-ar} to decrease the samplerate.
117
118@item aac_pred
119Enables the use of a more traditional style of prediction where the spectral
120coefficients transmitted are replaced by the difference of the current
121coefficients minus the previous "predicted" coefficients. In theory and sometimes
122in practice this can improve quality for low to mid bitrate audio.
123This option implies the aac_main profile and is incompatible with aac_ltp.
124
125@item profile
126Sets the encoding profile, possible values:
127
128@table @samp
129@item aac_low
130The default, AAC "Low-complexity" profile. Is the most compatible and produces
131decent quality.
132
133@item mpeg2_aac_low
134Equivalent to @code{-profile:a aac_low -aac_pns 0}. PNS was introduced with the
135MPEG4 specifications.
136
137@item aac_ltp
138Long term prediction profile, is enabled by and will enable the @option{aac_ltp}
139option. Introduced in MPEG4.
140
141@item aac_main
142Main-type prediction profile, is enabled by and will enable the @option{aac_pred}
143option. Introduced in MPEG2.
144
145@end table
146If this option is unspecified it is set to @samp{aac_low}.
147@end table
148
149@section ac3 and ac3_fixed
150
151AC-3 audio encoders.
152
153These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as
154the undocumented RealAudio 3 (a.k.a. dnet).
155
156The @var{ac3} encoder uses floating-point math, while the @var{ac3_fixed}
157encoder only uses fixed-point integer math. This does not mean that one is
158always faster, just that one or the other may be better suited to a
159particular system. The floating-point encoder will generally produce better
160quality audio for a given bitrate. The @var{ac3_fixed} encoder is not the
161default codec for any of the output formats, so it must be specified explicitly
162using the option @code{-acodec ac3_fixed} in order to use it.
163
164@subsection AC-3 Metadata
165
166The AC-3 metadata options are used to set parameters that describe the audio,
167but in most cases do not affect the audio encoding itself. Some of the options
168do directly affect or influence the decoding and playback of the resulting
169bitstream, while others are just for informational purposes. A few of the
170options will add bits to the output stream that could otherwise be used for
171audio data, and will thus affect the quality of the output. Those will be
172indicated accordingly with a note in the option list below.
173
174These parameters are described in detail in several publicly-available
175documents.
176@itemize
177@item @uref{http://www.atsc.org/cms/standards/a_52-2010.pdf,A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard}
178@item @uref{http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf,A/54 - Guide to the Use of the ATSC Digital Television Standard}
179@item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf,Dolby Metadata Guide}
180@item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf,Dolby Digital Professional Encoding Guidelines}
181@end itemize
182
183@subsubsection Metadata Control Options
184
185@table @option
186
187@item -per_frame_metadata @var{boolean}
188Allow Per-Frame Metadata. Specifies if the encoder should check for changing
189metadata for each frame.
190@table @option
191@item 0
192The metadata values set at initialization will be used for every frame in the
193stream. (default)
194@item 1
195Metadata values can be changed before encoding each frame.
196@end table
197
198@end table
199
200@subsubsection Downmix Levels
201
202@table @option
203
204@item -center_mixlev @var{level}
205Center Mix Level. The amount of gain the decoder should apply to the center
206channel when downmixing to stereo. This field will only be written to the
207bitstream if a center channel is present. The value is specified as a scale
208factor. There are 3 valid values:
209@table @option
210@item 0.707
211Apply -3dB gain
212@item 0.595
213Apply -4.5dB gain (default)
214@item 0.500
215Apply -6dB gain
216@end table
217
218@item -surround_mixlev @var{level}
219Surround Mix Level. The amount of gain the decoder should apply to the surround
220channel(s) when downmixing to stereo. This field will only be written to the
221bitstream if one or more surround channels are present. The value is specified
222as a scale factor. There are 3 valid values:
223@table @option
224@item 0.707
225Apply -3dB gain
226@item 0.500
227Apply -6dB gain (default)
228@item 0.000
229Silence Surround Channel(s)
230@end table
231
232@end table
233
234@subsubsection Audio Production Information
235Audio Production Information is optional information describing the mixing
236environment. Either none or both of the fields are written to the bitstream.
237
238@table @option
239
240@item -mixing_level @var{number}
241Mixing Level. Specifies peak sound pressure level (SPL) in the production
242environment when the mix was mastered. Valid values are 80 to 111, or -1 for
243unknown or not indicated. The default value is -1, but that value cannot be
244used if the Audio Production Information is written to the bitstream. Therefore,
245if the @code{room_type} option is not the default value, the @code{mixing_level}
246option must not be -1.
247
248@item -room_type @var{type}
249Room Type. Describes the equalization used during the final mixing session at
250the studio or on the dubbing stage. A large room is a dubbing stage with the
251industry standard X-curve equalization; a small room has flat equalization.
252This field will not be written to the bitstream if both the @code{mixing_level}
253option and the @code{room_type} option have the default values.
254@table @option
255@item 0
256@itemx notindicated
257Not Indicated (default)
258@item 1
259@itemx large
260Large Room
261@item 2
262@itemx small
263Small Room
264@end table
265
266@end table
267
268@subsubsection Other Metadata Options
269
270@table @option
271
272@item -copyright @var{boolean}
273Copyright Indicator. Specifies whether a copyright exists for this audio.
274@table @option
275@item 0
276@itemx off
277No Copyright Exists (default)
278@item 1
279@itemx on
280Copyright Exists
281@end table
282
283@item -dialnorm @var{value}
284Dialogue Normalization. Indicates how far the average dialogue level of the
285program is below digital 100% full scale (0 dBFS). This parameter determines a
286level shift during audio reproduction that sets the average volume of the
287dialogue to a preset level. The goal is to match volume level between program
288sources. A value of -31dB will result in no volume level change, relative to
289the source volume, during audio reproduction. Valid values are whole numbers in
290the range -31 to -1, with -31 being the default.
291
292@item -dsur_mode @var{mode}
293Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround
294(Pro Logic). This field will only be written to the bitstream if the audio
295stream is stereo. Using this option does @b{NOT} mean the encoder will actually
296apply Dolby Surround processing.
297@table @option
298@item 0
299@itemx notindicated
300Not Indicated (default)
301@item 1
302@itemx off
303Not Dolby Surround Encoded
304@item 2
305@itemx on
306Dolby Surround Encoded
307@end table
308
309@item -original @var{boolean}
310Original Bit Stream Indicator. Specifies whether this audio is from the
311original source and not a copy.
312@table @option
313@item 0
314@itemx off
315Not Original Source
316@item 1
317@itemx on
318Original Source (default)
319@end table
320
321@end table
322
323@subsection Extended Bitstream Information
324The extended bitstream options are part of the Alternate Bit Stream Syntax as
325specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
326If any one parameter in a group is specified, all values in that group will be
327written to the bitstream. Default values are used for those that are written
328but have not been specified. If the mixing levels are written, the decoder
329will use these values instead of the ones specified in the @code{center_mixlev}
330and @code{surround_mixlev} options if it supports the Alternate Bit Stream
331Syntax.
332
333@subsubsection Extended Bitstream Information - Part 1
334
335@table @option
336
337@item -dmix_mode @var{mode}
338Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt
339(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
340@table @option
341@item 0
342@itemx notindicated
343Not Indicated (default)
344@item 1
345@itemx ltrt
346Lt/Rt Downmix Preferred
347@item 2
348@itemx loro
349Lo/Ro Downmix Preferred
350@end table
351
352@item -ltrt_cmixlev @var{level}
353Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the
354center channel when downmixing to stereo in Lt/Rt mode.
355@table @option
356@item 1.414
357Apply +3dB gain
358@item 1.189
359Apply +1.5dB gain
360@item 1.000
361Apply 0dB gain
362@item 0.841
363Apply -1.5dB gain
364@item 0.707
365Apply -3.0dB gain
366@item 0.595
367Apply -4.5dB gain (default)
368@item 0.500
369Apply -6.0dB gain
370@item 0.000
371Silence Center Channel
372@end table
373
374@item -ltrt_surmixlev @var{level}
375Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the
376surround channel(s) when downmixing to stereo in Lt/Rt mode.
377@table @option
378@item 0.841
379Apply -1.5dB gain
380@item 0.707
381Apply -3.0dB gain
382@item 0.595
383Apply -4.5dB gain
384@item 0.500
385Apply -6.0dB gain (default)
386@item 0.000
387Silence Surround Channel(s)
388@end table
389
390@item -loro_cmixlev @var{level}
391Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the
392center channel when downmixing to stereo in Lo/Ro mode.
393@table @option
394@item 1.414
395Apply +3dB gain
396@item 1.189
397Apply +1.5dB gain
398@item 1.000
399Apply 0dB gain
400@item 0.841
401Apply -1.5dB gain
402@item 0.707
403Apply -3.0dB gain
404@item 0.595
405Apply -4.5dB gain (default)
406@item 0.500
407Apply -6.0dB gain
408@item 0.000
409Silence Center Channel
410@end table
411
412@item -loro_surmixlev @var{level}
413Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the
414surround channel(s) when downmixing to stereo in Lo/Ro mode.
415@table @option
416@item 0.841
417Apply -1.5dB gain
418@item 0.707
419Apply -3.0dB gain
420@item 0.595
421Apply -4.5dB gain
422@item 0.500
423Apply -6.0dB gain (default)
424@item 0.000
425Silence Surround Channel(s)
426@end table
427
428@end table
429
430@subsubsection Extended Bitstream Information - Part 2
431
432@table @option
433
434@item -dsurex_mode @var{mode}
435Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX
436(7.1 matrixed to 5.1). Using this option does @b{NOT} mean the encoder will actually
437apply Dolby Surround EX processing.
438@table @option
439@item 0
440@itemx notindicated
441Not Indicated (default)
442@item 1
443@itemx on
444Dolby Surround EX Off
445@item 2
446@itemx off
447Dolby Surround EX On
448@end table
449
450@item -dheadphone_mode @var{mode}
451Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone
452encoding (multi-channel matrixed to 2.0 for use with headphones). Using this
453option does @b{NOT} mean the encoder will actually apply Dolby Headphone
454processing.
455@table @option
456@item 0
457@itemx notindicated
458Not Indicated (default)
459@item 1
460@itemx on
461Dolby Headphone Off
462@item 2
463@itemx off
464Dolby Headphone On
465@end table
466
467@item -ad_conv_type @var{type}
468A/D Converter Type. Indicates whether the audio has passed through HDCD A/D
469conversion.
470@table @option
471@item 0
472@itemx standard
473Standard A/D Converter (default)
474@item 1
475@itemx hdcd
476HDCD A/D Converter
477@end table
478
479@end table
480
481@subsection Other AC-3 Encoding Options
482
483@table @option
484
485@item -stereo_rematrixing @var{boolean}
486Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This
487is an optional AC-3 feature that increases quality by selectively encoding
488the left/right channels as mid/side. This option is enabled by default, and it
489is highly recommended that it be left as enabled except for testing purposes.
490
491@item cutoff @var{frequency}
492Set lowpass cutoff frequency. If unspecified, the encoder selects a default
493determined by various other encoding parameters.
494
495@end table
496
497@subsection Floating-Point-Only AC-3 Encoding Options
498
499These options are only valid for the floating-point encoder and do not exist
500for the fixed-point encoder due to the corresponding features not being
501implemented in fixed-point.
502
503@table @option
504
505@item -channel_coupling @var{boolean}
506Enables/Disables use of channel coupling, which is an optional AC-3 feature
507that increases quality by combining high frequency information from multiple
508channels into a single channel. The per-channel high frequency information is
509sent with less accuracy in both the frequency and time domains. This allows
510more bits to be used for lower frequencies while preserving enough information
511to reconstruct the high frequencies. This option is enabled by default for the
512floating-point encoder and should generally be left as enabled except for
513testing purposes or to increase encoding speed.
514@table @option
515@item -1
516@itemx auto
517Selected by Encoder (default)
518@item 0
519@itemx off
520Disable Channel Coupling
521@item 1
522@itemx on
523Enable Channel Coupling
524@end table
525
526@item -cpl_start_band @var{number}
527Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a
528value higher than the bandwidth is used, it will be reduced to 1 less than the
529coupling end band. If @var{auto} is used, the start band will be determined by
530the encoder based on the bit rate, sample rate, and channel layout. This option
531has no effect if channel coupling is disabled.
532@table @option
533@item -1
534@itemx auto
535Selected by Encoder (default)
536@end table
537
538@end table
539
540@anchor{flac}
541@section flac
542
543FLAC (Free Lossless Audio Codec) Encoder
544
545@subsection Options
546
547The following options are supported by FFmpeg's flac encoder.
548
549@table @option
550@item compression_level
551Sets the compression level, which chooses defaults for many other options
552if they are not set explicitly. Valid values are from 0 to 12, 5 is the
553default.
554
555@item frame_size
556Sets the size of the frames in samples per channel.
557
558@item lpc_coeff_precision
559Sets the LPC coefficient precision, valid values are from 1 to 15, 15 is the
560default.
561
562@item lpc_type
563Sets the first stage LPC algorithm
564@table @samp
565@item none
566LPC is not used
567
568@item fixed
569fixed LPC coefficients
570
571@item levinson
572
573@item cholesky
574@end table
575
576@item lpc_passes
577Number of passes to use for Cholesky factorization during LPC analysis
578
579@item min_partition_order
580The minimum partition order
581
582@item max_partition_order
583The maximum partition order
584
585@item prediction_order_method
586@table @samp
587@item estimation
588@item 2level
589@item 4level
590@item 8level
591@item search
592Bruteforce search
593@item log
594@end table
595
596@item ch_mode
597Channel mode
598@table @samp
599@item auto
600The mode is chosen automatically for each frame
601@item indep
602Chanels are independently coded
603@item left_side
604@item right_side
605@item mid_side
606@end table
607
608@item exact_rice_parameters
609Chooses if rice parameters are calculated exactly or approximately.
610if set to 1 then they are chosen exactly, which slows the code down slightly and
611improves compression slightly.
612
613@item multi_dim_quant
614Multi Dimensional Quantization. If set to 1 then a 2nd stage LPC algorithm is
615applied after the first stage to finetune the coefficients. This is quite slow
616and slightly improves compression.
617
618@end table
619
620@anchor{opusenc}
621@section opus
622
623Opus encoder.
624
625This is a native FFmpeg encoder for the Opus format. Currently its in development and
626only implements the CELT part of the codec. Its quality is usually worse and at best
627is equal to the libopus encoder.
628
629@subsection Options
630
631@table @option
632@item b
633Set bit rate in bits/s. If unspecified it uses the number of channels and the layout
634to make a good guess.
635
636@item opus_delay
637Sets the maximum delay in milliseconds. Lower delays than 20ms will very quickly
638decrease quality.
639@end table
640
641@anchor{libfdk-aac-enc}
642@section libfdk_aac
643
644libfdk-aac AAC (Advanced Audio Coding) encoder wrapper.
645
646The libfdk-aac library is based on the Fraunhofer FDK AAC code from
647the Android project.
648
649Requires the presence of the libfdk-aac headers and library during
650configuration. You need to explicitly configure the build with
651@code{--enable-libfdk-aac}. The library is also incompatible with GPL,
652so if you allow the use of GPL, you should configure with
653@code{--enable-gpl --enable-nonfree --enable-libfdk-aac}.
654
655This encoder is considered to produce output on par or worse at 128kbps to the
656@ref{aacenc,,the native FFmpeg AAC encoder} but can often produce better
657sounding audio at identical or lower bitrates and has support for the
658AAC-HE profiles.
659
660VBR encoding, enabled through the @option{vbr} or @option{flags
661+qscale} options, is experimental and only works with some
662combinations of parameters.
663
664Support for encoding 7.1 audio is only available with libfdk-aac 0.1.3 or
665higher.
666
667For more information see the fdk-aac project at
668@url{http://sourceforge.net/p/opencore-amr/fdk-aac/}.
669
670@subsection Options
671
672The following options are mapped on the shared FFmpeg codec options.
673
674@table @option
675@item b
676Set bit rate in bits/s. If the bitrate is not explicitly specified, it
677is automatically set to a suitable value depending on the selected
678profile.
679
680In case VBR mode is enabled the option is ignored.
681
682@item ar
683Set audio sampling rate (in Hz).
684
685@item channels
686Set the number of audio channels.
687
688@item flags +qscale
689Enable fixed quality, VBR (Variable Bit Rate) mode.
690Note that VBR is implicitly enabled when the @option{vbr} value is
691positive.
692
693@item cutoff
694Set cutoff frequency. If not specified (or explicitly set to 0) it
695will use a value automatically computed by the library. Default value
696is 0.
697
698@item profile
699Set audio profile.
700
701The following profiles are recognized:
702@table @samp
703@item aac_low
704Low Complexity AAC (LC)
705
706@item aac_he
707High Efficiency AAC (HE-AAC)
708
709@item aac_he_v2
710High Efficiency AAC version 2 (HE-AACv2)
711
712@item aac_ld
713Low Delay AAC (LD)
714
715@item aac_eld
716Enhanced Low Delay AAC (ELD)
717@end table
718
719If not specified it is set to @samp{aac_low}.
720@end table
721
722The following are private options of the libfdk_aac encoder.
723
724@table @option
725@item afterburner
726Enable afterburner feature if set to 1, disabled if set to 0. This
727improves the quality but also the required processing power.
728
729Default value is 1.
730
731@item eld_sbr
732Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled
733if set to 0.
734
735Default value is 0.
736
737@item signaling
738Set SBR/PS signaling style.
739
740It can assume one of the following values:
741@table @samp
742@item default
743choose signaling implicitly (explicit hierarchical by default,
744implicit if global header is disabled)
745
746@item implicit
747implicit backwards compatible signaling
748
749@item explicit_sbr
750explicit SBR, implicit PS signaling
751
752@item explicit_hierarchical
753explicit hierarchical signaling
754@end table
755
756Default value is @samp{default}.
757
758@item latm
759Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0.
760
761Default value is 0.
762
763@item header_period
764Set StreamMuxConfig and PCE repetition period (in frames) for sending
765in-band configuration buffers within LATM/LOAS transport layer.
766
767Must be a 16-bits non-negative integer.
768
769Default value is 0.
770
771@item vbr
772Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty
773good) and 5 is highest quality. A value of 0 will disable VBR, and CBR
774(Constant Bit Rate) is enabled.
775
776Currently only the @samp{aac_low} profile supports VBR encoding.
777
778VBR modes 1-5 correspond to roughly the following average bit rates:
779
780@table @samp
781@item 1
78232 kbps/channel
783@item 2
78440 kbps/channel
785@item 3
78648-56 kbps/channel
787@item 4
78864 kbps/channel
789@item 5
790about 80-96 kbps/channel
791@end table
792
793Default value is 0.
794@end table
795
796@subsection Examples
797
798@itemize
799@item
800Use @command{ffmpeg} to convert an audio file to VBR AAC in an M4A (MP4)
801container:
802@example
803ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
804@end example
805
806@item
807Use @command{ffmpeg} to convert an audio file to CBR 64k kbps AAC, using the
808High-Efficiency AAC profile:
809@example
810ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
811@end example
812@end itemize
813
814@anchor{libmp3lame}
815@section libmp3lame
816
817LAME (Lame Ain't an MP3 Encoder) MP3 encoder wrapper.
818
819Requires the presence of the libmp3lame headers and library during
820configuration. You need to explicitly configure the build with
821@code{--enable-libmp3lame}.
822
823See @ref{libshine} for a fixed-point MP3 encoder, although with a
824lower quality.
825
826@subsection Options
827
828The following options are supported by the libmp3lame wrapper. The
829@command{lame}-equivalent of the options are listed in parentheses.
830
831@table @option
832@item b (@emph{-b})
833Set bitrate expressed in bits/s for CBR or ABR. LAME @code{bitrate} is
834expressed in kilobits/s.
835
836@item q (@emph{-V})
837Set constant quality setting for VBR. This option is valid only
838using the @command{ffmpeg} command-line tool. For library interface
839users, use @option{global_quality}.
840
841@item compression_level (@emph{-q})
842Set algorithm quality. Valid arguments are integers in the 0-9 range,
843with 0 meaning highest quality but slowest, and 9 meaning fastest
844while producing the worst quality.
845
846@item cutoff (@emph{--lowpass})
847Set lowpass cutoff frequency. If unspecified, the encoder dynamically
848adjusts the cutoff.
849
850@item reservoir
851Enable use of bit reservoir when set to 1. Default value is 1. LAME
852has this enabled by default, but can be overridden by use
853@option{--nores} option.
854
855@item joint_stereo (@emph{-m j})
856Enable the encoder to use (on a frame by frame basis) either L/R
857stereo or mid/side stereo. Default value is 1.
858
859@item abr (@emph{--abr})
860Enable the encoder to use ABR when set to 1. The @command{lame}
861@option{--abr} sets the target bitrate, while this options only
862tells FFmpeg to use ABR still relies on @option{b} to set bitrate.
863
864@end table
865
866@section libopencore-amrnb
867
868OpenCORE Adaptive Multi-Rate Narrowband encoder.
869
870Requires the presence of the libopencore-amrnb headers and library during
871configuration. You need to explicitly configure the build with
872@code{--enable-libopencore-amrnb --enable-version3}.
873
874This is a mono-only encoder. Officially it only supports 8000Hz sample rate,
875but you can override it by setting @option{strict} to @samp{unofficial} or
876lower.
877
878@subsection Options
879
880@table @option
881
882@item b
883Set bitrate in bits per second. Only the following bitrates are supported,
884otherwise libavcodec will round to the nearest valid bitrate.
885
886@table @option
887@item 4750
888@item 5150
889@item 5900
890@item 6700
891@item 7400
892@item 7950
893@item 10200
894@item 12200
895@end table
896
897@item dtx
898Allow discontinuous transmission (generate comfort noise) when set to 1. The
899default value is 0 (disabled).
900
901@end table
902
903@section libopus
904
905libopus Opus Interactive Audio Codec encoder wrapper.
906
907Requires the presence of the libopus headers and library during
908configuration. You need to explicitly configure the build with
909@code{--enable-libopus}.
910
911@subsection Option Mapping
912
913Most libopus options are modelled after the @command{opusenc} utility from
914opus-tools. The following is an option mapping chart describing options
915supported by the libopus wrapper, and their @command{opusenc}-equivalent
916in parentheses.
917
918@table @option
919
920@item b (@emph{bitrate})
921Set the bit rate in bits/s. FFmpeg's @option{b} option is
922expressed in bits/s, while @command{opusenc}'s @option{bitrate} in
923kilobits/s.
924
925@item vbr (@emph{vbr}, @emph{hard-cbr}, and @emph{cvbr})
926Set VBR mode. The FFmpeg @option{vbr} option has the following
927valid arguments, with the @command{opusenc} equivalent options
928in parentheses:
929
930@table @samp
931@item off (@emph{hard-cbr})
932Use constant bit rate encoding.
933
934@item on (@emph{vbr})
935Use variable bit rate encoding (the default).
936
937@item constrained (@emph{cvbr})
938Use constrained variable bit rate encoding.
939@end table
940
941@item compression_level (@emph{comp})
942Set encoding algorithm complexity. Valid options are integers in
943the 0-10 range. 0 gives the fastest encodes but lower quality, while 10
944gives the highest quality but slowest encoding. The default is 10.
945
946@item frame_duration (@emph{framesize})
947Set maximum frame size, or duration of a frame in milliseconds. The
948argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller
949frame sizes achieve lower latency but less quality at a given bitrate.
950Sizes greater than 20ms are only interesting at fairly low bitrates.
951The default is 20ms.
952
953@item packet_loss (@emph{expect-loss})
954Set expected packet loss percentage. The default is 0.
955
956@item application (N.A.)
957Set intended application type. Valid options are listed below:
958
959@table @samp
960@item voip
961Favor improved speech intelligibility.
962@item audio
963Favor faithfulness to the input (the default).
964@item lowdelay
965Restrict to only the lowest delay modes.
966@end table
967
968@item cutoff (N.A.)
969Set cutoff bandwidth in Hz. The argument must be exactly one of the
970following: 4000, 6000, 8000, 12000, or 20000, corresponding to
971narrowband, mediumband, wideband, super wideband, and fullband
972respectively. The default is 0 (cutoff disabled).
973
974@item mapping_family (@emph{mapping_family})
975Set channel mapping family to be used by the encoder. The default value of -1
976uses mapping family 0 for mono and stereo inputs, and mapping family 1
977otherwise. The default also disables the surround masking and LFE bandwidth
978optimzations in libopus, and requires that the input contains 8 channels or
979fewer.
980
981Other values include 0 for mono and stereo, 1 for surround sound with masking
982and LFE bandwidth optimizations, and 255 for independent streams with an
983unspecified channel layout.
984
985@end table
986
987@anchor{libshine}
988@section libshine
989
990Shine Fixed-Point MP3 encoder wrapper.
991
992Shine is a fixed-point MP3 encoder. It has a far better performance on
993platforms without an FPU, e.g. armel CPUs, and some phones and tablets.
994However, as it is more targeted on performance than quality, it is not on par
995with LAME and other production-grade encoders quality-wise. Also, according to
996the project's homepage, this encoder may not be free of bugs as the code was
997written a long time ago and the project was dead for at least 5 years.
998
999This encoder only supports stereo and mono input. This is also CBR-only.
1000
1001The original project (last updated in early 2007) is at
1002@url{http://sourceforge.net/projects/libshine-fxp/}. We only support the
1003updated fork by the Savonet/Liquidsoap project at @url{https://github.com/savonet/shine}.
1004
1005Requires the presence of the libshine headers and library during
1006configuration. You need to explicitly configure the build with
1007@code{--enable-libshine}.
1008
1009See also @ref{libmp3lame}.
1010
1011@subsection Options
1012
1013The following options are supported by the libshine wrapper. The
1014@command{shineenc}-equivalent of the options are listed in parentheses.
1015
1016@table @option
1017@item b (@emph{-b})
1018Set bitrate expressed in bits/s for CBR. @command{shineenc} @option{-b} option
1019is expressed in kilobits/s.
1020
1021@end table
1022
1023@section libtwolame
1024
1025TwoLAME MP2 encoder wrapper.
1026
1027Requires the presence of the libtwolame headers and library during
1028configuration. You need to explicitly configure the build with
1029@code{--enable-libtwolame}.
1030
1031@subsection Options
1032
1033The following options are supported by the libtwolame wrapper. The
1034@command{twolame}-equivalent options follow the FFmpeg ones and are in
1035parentheses.
1036
1037@table @option
1038@item b (@emph{-b})
1039Set bitrate expressed in bits/s for CBR. @command{twolame} @option{b}
1040option is expressed in kilobits/s. Default value is 128k.
1041
1042@item q (@emph{-V})
1043Set quality for experimental VBR support. Maximum value range is
1044from -50 to 50, useful range is from -10 to 10. The higher the
1045value, the better the quality. This option is valid only using the
1046@command{ffmpeg} command-line tool. For library interface users,
1047use @option{global_quality}.
1048
1049@item mode (@emph{--mode})
1050Set the mode of the resulting audio. Possible values:
1051
1052@table @samp
1053@item auto
1054Choose mode automatically based on the input. This is the default.
1055@item stereo
1056Stereo
1057@item joint_stereo
1058Joint stereo
1059@item dual_channel
1060Dual channel
1061@item mono
1062Mono
1063@end table
1064
1065@item psymodel (@emph{--psyc-mode})
1066Set psychoacoustic model to use in encoding. The argument must be
1067an integer between -1 and 4, inclusive. The higher the value, the
1068better the quality. The default value is 3.
1069
1070@item energy_levels (@emph{--energy})
1071Enable energy levels extensions when set to 1. The default value is
10720 (disabled).
1073
1074@item error_protection (@emph{--protect})
1075Enable CRC error protection when set to 1. The default value is 0
1076(disabled).
1077
1078@item copyright (@emph{--copyright})
1079Set MPEG audio copyright flag when set to 1. The default value is 0
1080(disabled).
1081
1082@item original (@emph{--original})
1083Set MPEG audio original flag when set to 1. The default value is 0
1084(disabled).
1085
1086@end table
1087
1088@section libvo-amrwbenc
1089
1090VisualOn Adaptive Multi-Rate Wideband encoder.
1091
1092Requires the presence of the libvo-amrwbenc headers and library during
1093configuration. You need to explicitly configure the build with
1094@code{--enable-libvo-amrwbenc --enable-version3}.
1095
1096This is a mono-only encoder. Officially it only supports 16000Hz sample
1097rate, but you can override it by setting @option{strict} to
1098@samp{unofficial} or lower.
1099
1100@subsection Options
1101
1102@table @option
1103
1104@item b
1105Set bitrate in bits/s. Only the following bitrates are supported, otherwise
1106libavcodec will round to the nearest valid bitrate.
1107
1108@table @samp
1109@item 6600
1110@item 8850
1111@item 12650
1112@item 14250
1113@item 15850
1114@item 18250
1115@item 19850
1116@item 23050
1117@item 23850
1118@end table
1119
1120@item dtx
1121Allow discontinuous transmission (generate comfort noise) when set to 1. The
1122default value is 0 (disabled).
1123
1124@end table
1125
1126@section libvorbis
1127
1128libvorbis encoder wrapper.
1129
1130Requires the presence of the libvorbisenc headers and library during
1131configuration. You need to explicitly configure the build with
1132@code{--enable-libvorbis}.
1133
1134@subsection Options
1135
1136The following options are supported by the libvorbis wrapper. The
1137@command{oggenc}-equivalent of the options are listed in parentheses.
1138
1139To get a more accurate and extensive documentation of the libvorbis
1140options, consult the libvorbisenc's and @command{oggenc}'s documentations.
1141See @url{http://xiph.org/vorbis/},
1142@url{http://wiki.xiph.org/Vorbis-tools}, and oggenc(1).
1143
1144@table @option
1145@item b (@emph{-b})
1146Set bitrate expressed in bits/s for ABR. @command{oggenc} @option{-b} is
1147expressed in kilobits/s.
1148
1149@item q (@emph{-q})
1150Set constant quality setting for VBR. The value should be a float
1151number in the range of -1.0 to 10.0. The higher the value, the better
1152the quality. The default value is @samp{3.0}.
1153
1154This option is valid only using the @command{ffmpeg} command-line tool.
1155For library interface users, use @option{global_quality}.
1156
1157@item cutoff (@emph{--advanced-encode-option lowpass_frequency=N})
1158Set cutoff bandwidth in Hz, a value of 0 disables cutoff. @command{oggenc}'s
1159related option is expressed in kHz. The default value is @samp{0} (cutoff
1160disabled).
1161
1162@item minrate (@emph{-m})
1163Set minimum bitrate expressed in bits/s. @command{oggenc} @option{-m} is
1164expressed in kilobits/s.
1165
1166@item maxrate (@emph{-M})
1167Set maximum bitrate expressed in bits/s. @command{oggenc} @option{-M} is
1168expressed in kilobits/s. This only has effect on ABR mode.
1169
1170@item iblock (@emph{--advanced-encode-option impulse_noisetune=N})
1171Set noise floor bias for impulse blocks. The value is a float number from
1172-15.0 to 0.0. A negative bias instructs the encoder to pay special attention
1173to the crispness of transients in the encoded audio. The tradeoff for better
1174transient response is a higher bitrate.
1175
1176@end table
1177
1178@anchor{libwavpack}
1179@section libwavpack
1180
1181A wrapper providing WavPack encoding through libwavpack.
1182
1183Only lossless mode using 32-bit integer samples is supported currently.
1184
1185Requires the presence of the libwavpack headers and library during
1186configuration. You need to explicitly configure the build with
1187@code{--enable-libwavpack}.
1188
1189Note that a libavcodec-native encoder for the WavPack codec exists so users can
1190encode audios with this codec without using this encoder. See @ref{wavpackenc}.
1191
1192@subsection Options
1193
1194@command{wavpack} command line utility's corresponding options are listed in
1195parentheses, if any.
1196
1197@table @option
1198@item frame_size (@emph{--blocksize})
1199Default is 32768.
1200
1201@item compression_level
1202Set speed vs. compression tradeoff. Acceptable arguments are listed below:
1203
1204@table @samp
1205@item 0 (@emph{-f})
1206Fast mode.
1207
1208@item 1
1209Normal (default) settings.
1210
1211@item 2 (@emph{-h})
1212High quality.
1213
1214@item 3 (@emph{-hh})
1215Very high quality.
1216
1217@item 4-8 (@emph{-hh -x}@var{EXTRAPROC})
1218Same as @samp{3}, but with extra processing enabled.
1219
1220@samp{4} is the same as @option{-x2} and @samp{8} is the same as @option{-x6}.
1221
1222@end table
1223@end table
1224
1225@anchor{mjpegenc}
1226@section mjpeg
1227
1228Motion JPEG encoder.
1229
1230@subsection Options
1231
1232@table @option
1233@item huffman
1234Set the huffman encoding strategy. Possible values:
1235
1236@table @samp
1237@item default
1238Use the default huffman tables. This is the default strategy.
1239
1240@item optimal
1241Compute and use optimal huffman tables.
1242
1243@end table
1244@end table
1245
1246@anchor{wavpackenc}
1247@section wavpack
1248
1249WavPack lossless audio encoder.
1250
1251This is a libavcodec-native WavPack encoder. There is also an encoder based on
1252libwavpack, but there is virtually no reason to use that encoder.
1253
1254See also @ref{libwavpack}.
1255
1256@subsection Options
1257
1258The equivalent options for @command{wavpack} command line utility are listed in
1259parentheses.
1260
1261@subsubsection Shared options
1262
1263The following shared options are effective for this encoder. Only special notes
1264about this particular encoder will be documented here. For the general meaning
1265of the options, see @ref{codec-options,,the Codec Options chapter}.
1266
1267@table @option
1268@item frame_size (@emph{--blocksize})
1269For this encoder, the range for this option is between 128 and 131072. Default
1270is automatically decided based on sample rate and number of channel.
1271
1272For the complete formula of calculating default, see
1273@file{libavcodec/wavpackenc.c}.
1274
1275@item compression_level (@emph{-f}, @emph{-h}, @emph{-hh}, and @emph{-x})
1276This option's syntax is consistent with @ref{libwavpack}'s.
1277@end table
1278
1279@subsubsection Private options
1280
1281@table @option
1282@item joint_stereo (@emph{-j})
1283Set whether to enable joint stereo. Valid values are:
1284
1285@table @samp
1286@item on (@emph{1})
1287Force mid/side audio encoding.
1288@item off (@emph{0})
1289Force left/right audio encoding.
1290@item auto
1291Let the encoder decide automatically.
1292@end table
1293
1294@item optimize_mono
1295Set whether to enable optimization for mono. This option is only effective for
1296non-mono streams. Available values:
1297
1298@table @samp
1299@item on
1300enabled
1301@item off
1302disabled
1303@end table
1304
1305@end table
1306
1307@c man end AUDIO ENCODERS
1308
1309@chapter Video Encoders
1310@c man begin VIDEO ENCODERS
1311
1312A description of some of the currently available video encoders
1313follows.
1314
1315@section Hap
1316
1317Vidvox Hap video encoder.
1318
1319@subsection Options
1320
1321@table @option
1322@item format @var{integer}
1323Specifies the Hap format to encode.
1324
1325@table @option
1326@item hap
1327@item hap_alpha
1328@item hap_q
1329@end table
1330
1331Default value is @option{hap}.
1332
1333@item chunks @var{integer}
1334Specifies the number of chunks to split frames into, between 1 and 64. This
1335permits multithreaded decoding of large frames, potentially at the cost of
1336data-rate. The encoder may modify this value to divide frames evenly.
1337
1338Default value is @var{1}.
1339
1340@item compressor @var{integer}
1341Specifies the second-stage compressor to use. If set to @option{none},
1342@option{chunks} will be limited to 1, as chunked uncompressed frames offer no
1343benefit.
1344
1345@table @option
1346@item none
1347@item snappy
1348@end table
1349
1350Default value is @option{snappy}.
1351
1352@end table
1353
1354@section jpeg2000
1355
1356The native jpeg 2000 encoder is lossy by default, the @code{-q:v}
1357option can be used to set the encoding quality. Lossless encoding
1358can be selected with @code{-pred 1}.
1359
1360@subsection Options
1361
1362@table @option
1363@item format
1364Can be set to either @code{j2k} or @code{jp2} (the default) that
1365makes it possible to store non-rgb pix_fmts.
1366
1367@end table
1368
1369@section libkvazaar
1370
1371Kvazaar H.265/HEVC encoder.
1372
1373Requires the presence of the libkvazaar headers and library during
1374configuration. You need to explicitly configure the build with
1375@option{--enable-libkvazaar}.
1376
1377@subsection Options
1378
1379@table @option
1380
1381@item b
1382Set target video bitrate in bit/s and enable rate control.
1383
1384@item kvazaar-params
1385Set kvazaar parameters as a list of @var{name}=@var{value} pairs separated
1386by commas (,). See kvazaar documentation for a list of options.
1387
1388@end table
1389
1390@section libopenh264
1391
1392Cisco libopenh264 H.264/MPEG-4 AVC encoder wrapper.
1393
1394This encoder requires the presence of the libopenh264 headers and
1395library during configuration. You need to explicitly configure the
1396build with @code{--enable-libopenh264}. The library is detected using
1397@command{pkg-config}.
1398
1399For more information about the library see
1400@url{http://www.openh264.org}.
1401
1402@subsection Options
1403
1404The following FFmpeg global options affect the configurations of the
1405libopenh264 encoder.
1406
1407@table @option
1408@item b
1409Set the bitrate (as a number of bits per second).
1410
1411@item g
1412Set the GOP size.
1413
1414@item maxrate
1415Set the max bitrate (as a number of bits per second).
1416
1417@item flags +global_header
1418Set global header in the bitstream.
1419
1420@item slices
1421Set the number of slices, used in parallelized encoding. Default value
1422is 0. This is only used when @option{slice_mode} is set to
1423@samp{fixed}.
1424
1425@item slice_mode
1426Set slice mode. Can assume one of the following possible values:
1427
1428@table @samp
1429@item fixed
1430a fixed number of slices
1431@item rowmb
1432one slice per row of macroblocks
1433@item auto
1434automatic number of slices according to number of threads
1435@item dyn
1436dynamic slicing
1437@end table
1438
1439Default value is @samp{auto}.
1440
1441@item loopfilter
1442Enable loop filter, if set to 1 (automatically enabled). To disable
1443set a value of 0.
1444
1445@item profile
1446Set profile restrictions. If set to the value of @samp{main} enable
1447CABAC (set the @code{SEncParamExt.iEntropyCodingModeFlag} flag to 1).
1448
1449@item max_nal_size
1450Set maximum NAL size in bytes.
1451
1452@item allow_skip_frames
1453Allow skipping frames to hit the target bitrate if set to 1.
1454@end table
1455
1456@section libtheora
1457
1458libtheora Theora encoder wrapper.
1459
1460Requires the presence of the libtheora headers and library during
1461configuration. You need to explicitly configure the build with
1462@code{--enable-libtheora}.
1463
1464For more information about the libtheora project see
1465@url{http://www.theora.org/}.
1466
1467@subsection Options
1468
1469The following global options are mapped to internal libtheora options
1470which affect the quality and the bitrate of the encoded stream.
1471
1472@table @option
1473@item b
1474Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode. In
1475case VBR (Variable Bit Rate) mode is enabled this option is ignored.
1476
1477@item flags
1478Used to enable constant quality mode (VBR) encoding through the
1479@option{qscale} flag, and to enable the @code{pass1} and @code{pass2}
1480modes.
1481
1482@item g
1483Set the GOP size.
1484
1485@item global_quality
1486Set the global quality as an integer in lambda units.
1487
1488Only relevant when VBR mode is enabled with @code{flags +qscale}. The
1489value is converted to QP units by dividing it by @code{FF_QP2LAMBDA},
1490clipped in the [0 - 10] range, and then multiplied by 6.3 to get a
1491value in the native libtheora range [0-63]. A higher value corresponds
1492to a higher quality.
1493
1494@item q
1495Enable VBR mode when set to a non-negative value, and set constant
1496quality value as a double floating point value in QP units.
1497
1498The value is clipped in the [0-10] range, and then multiplied by 6.3
1499to get a value in the native libtheora range [0-63].
1500
1501This option is valid only using the @command{ffmpeg} command-line
1502tool. For library interface users, use @option{global_quality}.
1503@end table
1504
1505@subsection Examples
1506
1507@itemize
1508@item
1509Set maximum constant quality (VBR) encoding with @command{ffmpeg}:
1510@example
1511ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
1512@end example
1513
1514@item
1515Use @command{ffmpeg} to convert a CBR 1000 kbps Theora video stream:
1516@example
1517ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
1518@end example
1519@end itemize
1520
1521@section libvpx
1522
1523VP8/VP9 format supported through libvpx.
1524
1525Requires the presence of the libvpx headers and library during configuration.
1526You need to explicitly configure the build with @code{--enable-libvpx}.
1527
1528@subsection Options
1529
1530The following options are supported by the libvpx wrapper. The
1531@command{vpxenc}-equivalent options or values are listed in parentheses
1532for easy migration.
1533
1534To reduce the duplication of documentation, only the private options
1535and some others requiring special attention are documented here. For
1536the documentation of the undocumented generic options, see
1537@ref{codec-options,,the Codec Options chapter}.
1538
1539To get more documentation of the libvpx options, invoke the command
1540@command{ffmpeg -h encoder=libvpx}, @command{ffmpeg -h encoder=libvpx-vp9} or
1541@command{vpxenc --help}. Further information is available in the libvpx API
1542documentation.
1543
1544@table @option
1545
1546@item b (@emph{target-bitrate})
1547Set bitrate in bits/s. Note that FFmpeg's @option{b} option is
1548expressed in bits/s, while @command{vpxenc}'s @option{target-bitrate} is in
1549kilobits/s.
1550
1551@item g (@emph{kf-max-dist})
1552
1553@item keyint_min (@emph{kf-min-dist})
1554
1555@item qmin (@emph{min-q})
1556
1557@item qmax (@emph{max-q})
1558
1559@item bufsize (@emph{buf-sz}, @emph{buf-optimal-sz})
1560Set ratecontrol buffer size (in bits). Note @command{vpxenc}'s options are
1561specified in milliseconds, the libvpx wrapper converts this value as follows:
1562@code{buf-sz = bufsize * 1000 / bitrate},
1563@code{buf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6}.
1564
1565@item rc_init_occupancy (@emph{buf-initial-sz})
1566Set number of bits which should be loaded into the rc buffer before decoding
1567starts. Note @command{vpxenc}'s option is specified in milliseconds, the libvpx
1568wrapper converts this value as follows:
1569@code{rc_init_occupancy * 1000 / bitrate}.
1570
1571@item undershoot-pct
1572Set datarate undershoot (min) percentage of the target bitrate.
1573
1574@item overshoot-pct
1575Set datarate overshoot (max) percentage of the target bitrate.
1576
1577@item skip_threshold (@emph{drop-frame})
1578
1579@item qcomp (@emph{bias-pct})
1580
1581@item maxrate (@emph{maxsection-pct})
1582Set GOP max bitrate in bits/s. Note @command{vpxenc}'s option is specified as a
1583percentage of the target bitrate, the libvpx wrapper converts this value as
1584follows: @code{(maxrate * 100 / bitrate)}.
1585
1586@item minrate (@emph{minsection-pct})
1587Set GOP min bitrate in bits/s. Note @command{vpxenc}'s option is specified as a
1588percentage of the target bitrate, the libvpx wrapper converts this value as
1589follows: @code{(minrate * 100 / bitrate)}.
1590
1591@item minrate, maxrate, b @emph{end-usage=cbr}
1592@code{(minrate == maxrate == bitrate)}.
1593
1594@item crf (@emph{end-usage=cq}, @emph{cq-level})
1595
1596@item tune (@emph{tune})
1597@table @samp
1598@item psnr (@emph{psnr})
1599@item ssim (@emph{ssim})
1600@end table
1601
1602@item quality, deadline (@emph{deadline})
1603@table @samp
1604@item best
1605Use best quality deadline. Poorly named and quite slow, this option should be
1606avoided as it may give worse quality output than good.
1607@item good
1608Use good quality deadline. This is a good trade-off between speed and quality
1609when used with the @option{cpu-used} option.
1610@item realtime
1611Use realtime quality deadline.
1612@end table
1613
1614@item speed, cpu-used (@emph{cpu-used})
1615Set quality/speed ratio modifier. Higher values speed up the encode at the cost
1616of quality.
1617
1618@item nr (@emph{noise-sensitivity})
1619
1620@item static-thresh
1621Set a change threshold on blocks below which they will be skipped by the
1622encoder.
1623
1624@item slices (@emph{token-parts})
1625Note that FFmpeg's @option{slices} option gives the total number of partitions,
1626while @command{vpxenc}'s @option{token-parts} is given as
1627@code{log2(partitions)}.
1628
1629@item max-intra-rate
1630Set maximum I-frame bitrate as a percentage of the target bitrate. A value of 0
1631means unlimited.
1632
1633@item force_key_frames
1634@code{VPX_EFLAG_FORCE_KF}
1635
1636@item Alternate reference frame related
1637@table @option
1638@item auto-alt-ref
1639Enable use of alternate reference frames (2-pass only).
1640@item arnr-max-frames
1641Set altref noise reduction max frame count.
1642@item arnr-type
1643Set altref noise reduction filter type: backward, forward, centered.
1644@item arnr-strength
1645Set altref noise reduction filter strength.
1646@item rc-lookahead, lag-in-frames (@emph{lag-in-frames})
1647Set number of frames to look ahead for frametype and ratecontrol.
1648@end table
1649
1650@item error-resilient
1651Enable error resiliency features.
1652
1653@item VP9-specific options
1654@table @option
1655@item lossless
1656Enable lossless mode.
1657@item tile-columns
1658Set number of tile columns to use. Note this is given as
1659@code{log2(tile_columns)}. For example, 8 tile columns would be requested by
1660setting the @option{tile-columns} option to 3.
1661@item tile-rows
1662Set number of tile rows to use. Note this is given as @code{log2(tile_rows)}.
1663For example, 4 tile rows would be requested by setting the @option{tile-rows}
1664option to 2.
1665@item frame-parallel
1666Enable frame parallel decodability features.
1667@item aq-mode
1668Set adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3:
1669cyclic refresh).
1670@item colorspace @emph{color-space}
1671Set input color space. The VP9 bitstream supports signaling the following
1672colorspaces:
1673@table @option
1674@item @samp{rgb} @emph{sRGB}
1675@item @samp{bt709} @emph{bt709}
1676@item @samp{unspecified} @emph{unknown}
1677@item @samp{bt470bg} @emph{bt601}
1678@item @samp{smpte170m} @emph{smpte170}
1679@item @samp{smpte240m} @emph{smpte240}
1680@item @samp{bt2020_ncl} @emph{bt2020}
1681@end table
1682@end table
1683
1684@end table
1685
1686For more information about libvpx see:
1687@url{http://www.webmproject.org/}
1688
1689@section libwebp
1690
1691libwebp WebP Image encoder wrapper
1692
1693libwebp is Google's official encoder for WebP images. It can encode in either
1694lossy or lossless mode. Lossy images are essentially a wrapper around a VP8
1695frame. Lossless images are a separate codec developed by Google.
1696
1697@subsection Pixel Format
1698
1699Currently, libwebp only supports YUV420 for lossy and RGB for lossless due
1700to limitations of the format and libwebp. Alpha is supported for either mode.
1701Because of API limitations, if RGB is passed in when encoding lossy or YUV is
1702passed in for encoding lossless, the pixel format will automatically be
1703converted using functions from libwebp. This is not ideal and is done only for
1704convenience.
1705
1706@subsection Options
1707
1708@table @option
1709
1710@item -lossless @var{boolean}
1711Enables/Disables use of lossless mode. Default is 0.
1712
1713@item -compression_level @var{integer}
1714For lossy, this is a quality/speed tradeoff. Higher values give better quality
1715for a given size at the cost of increased encoding time. For lossless, this is
1716a size/speed tradeoff. Higher values give smaller size at the cost of increased
1717encoding time. More specifically, it controls the number of extra algorithms
1718and compression tools used, and varies the combination of these tools. This
1719maps to the @var{method} option in libwebp. The valid range is 0 to 6.
1720Default is 4.
1721
1722@item -qscale @var{float}
1723For lossy encoding, this controls image quality, 0 to 100. For lossless
1724encoding, this controls the effort and time spent at compressing more. The
1725default value is 75. Note that for usage via libavcodec, this option is called
1726@var{global_quality} and must be multiplied by @var{FF_QP2LAMBDA}.
1727
1728@item -preset @var{type}
1729Configuration preset. This does some automatic settings based on the general
1730type of the image.
1731@table @option
1732@item none
1733Do not use a preset.
1734@item default
1735Use the encoder default.
1736@item picture
1737Digital picture, like portrait, inner shot
1738@item photo
1739Outdoor photograph, with natural lighting
1740@item drawing
1741Hand or line drawing, with high-contrast details
1742@item icon
1743Small-sized colorful images
1744@item text
1745Text-like
1746@end table
1747
1748@end table
1749
1750@section libx264, libx264rgb
1751
1752x264 H.264/MPEG-4 AVC encoder wrapper.
1753
1754This encoder requires the presence of the libx264 headers and library
1755during configuration. You need to explicitly configure the build with
1756@code{--enable-libx264}.
1757
1758libx264 supports an impressive number of features, including 8x8 and
17594x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC
1760entropy coding, interlacing (MBAFF), lossless mode, psy optimizations
1761for detail retention (adaptive quantization, psy-RD, psy-trellis).
1762
1763Many libx264 encoder options are mapped to FFmpeg global codec
1764options, while unique encoder options are provided through private
1765options. Additionally the @option{x264opts} and @option{x264-params}
1766private options allows one to pass a list of key=value tuples as accepted
1767by the libx264 @code{x264_param_parse} function.
1768
1769The x264 project website is at
1770@url{http://www.videolan.org/developers/x264.html}.
1771
1772The libx264rgb encoder is the same as libx264, except it accepts packed RGB
1773pixel formats as input instead of YUV.
1774
1775@subsection Supported Pixel Formats
1776
1777x264 supports 8- to 10-bit color spaces. The exact bit depth is controlled at
1778x264's configure time. FFmpeg only supports one bit depth in one particular
1779build. In other words, it is not possible to build one FFmpeg with multiple
1780versions of x264 with different bit depths.
1781
1782@subsection Options
1783
1784The following options are supported by the libx264 wrapper. The
1785@command{x264}-equivalent options or values are listed in parentheses
1786for easy migration.
1787
1788To reduce the duplication of documentation, only the private options
1789and some others requiring special attention are documented here. For
1790the documentation of the undocumented generic options, see
1791@ref{codec-options,,the Codec Options chapter}.
1792
1793To get a more accurate and extensive documentation of the libx264
1794options, invoke the command @command{x264 --full-help} or consult
1795the libx264 documentation.
1796
1797@table @option
1798@item b (@emph{bitrate})
1799Set bitrate in bits/s. Note that FFmpeg's @option{b} option is
1800expressed in bits/s, while @command{x264}'s @option{bitrate} is in
1801kilobits/s.
1802
1803@item bf (@emph{bframes})
1804
1805@item g (@emph{keyint})
1806
1807@item qmin (@emph{qpmin})
1808Minimum quantizer scale.
1809
1810@item qmax (@emph{qpmax})
1811Maximum quantizer scale.
1812
1813@item qdiff (@emph{qpstep})
1814Maximum difference between quantizer scales.
1815
1816@item qblur (@emph{qblur})
1817Quantizer curve blur
1818
1819@item qcomp (@emph{qcomp})
1820Quantizer curve compression factor
1821
1822@item refs (@emph{ref})
1823Number of reference frames each P-frame can use. The range is from @var{0-16}.
1824
1825@item sc_threshold (@emph{scenecut})
1826Sets the threshold for the scene change detection.
1827
1828@item trellis (@emph{trellis})
1829Performs Trellis quantization to increase efficiency. Enabled by default.
1830
1831@item nr (@emph{nr})
1832
1833@item me_range (@emph{merange})
1834Maximum range of the motion search in pixels.
1835
1836@item me_method (@emph{me})
1837Set motion estimation method. Possible values in the decreasing order
1838of speed:
1839
1840@table @samp
1841@item dia (@emph{dia})
1842@item epzs (@emph{dia})
1843Diamond search with radius 1 (fastest). @samp{epzs} is an alias for
1844@samp{dia}.
1845@item hex (@emph{hex})
1846Hexagonal search with radius 2.
1847@item umh (@emph{umh})
1848Uneven multi-hexagon search.
1849@item esa (@emph{esa})
1850Exhaustive search.
1851@item tesa (@emph{tesa})
1852Hadamard exhaustive search (slowest).
1853@end table
1854
1855@item forced-idr
1856Normally, when forcing a I-frame type, the encoder can select any type
1857of I-frame. This option forces it to choose an IDR-frame.
1858
1859@item subq (@emph{subme})
1860Sub-pixel motion estimation method.
1861
1862@item b_strategy (@emph{b-adapt})
1863Adaptive B-frame placement decision algorithm. Use only on first-pass.
1864
1865@item keyint_min (@emph{min-keyint})
1866Minimum GOP size.
1867
1868@item coder
1869Set entropy encoder. Possible values:
1870
1871@table @samp
1872@item ac
1873Enable CABAC.
1874
1875@item vlc
1876Enable CAVLC and disable CABAC. It generates the same effect as
1877@command{x264}'s @option{--no-cabac} option.
1878@end table
1879
1880@item cmp
1881Set full pixel motion estimation comparison algorithm. Possible values:
1882
1883@table @samp
1884@item chroma
1885Enable chroma in motion estimation.
1886
1887@item sad
1888Ignore chroma in motion estimation. It generates the same effect as
1889@command{x264}'s @option{--no-chroma-me} option.
1890@end table
1891
1892@item threads (@emph{threads})
1893Number of encoding threads.
1894
1895@item thread_type
1896Set multithreading technique. Possible values:
1897
1898@table @samp
1899@item slice
1900Slice-based multithreading. It generates the same effect as
1901@command{x264}'s @option{--sliced-threads} option.
1902@item frame
1903Frame-based multithreading.
1904@end table
1905
1906@item flags
1907Set encoding flags. It can be used to disable closed GOP and enable
1908open GOP by setting it to @code{-cgop}. The result is similar to
1909the behavior of @command{x264}'s @option{--open-gop} option.
1910
1911@item rc_init_occupancy (@emph{vbv-init})
1912
1913@item preset (@emph{preset})
1914Set the encoding preset.
1915
1916@item tune (@emph{tune})
1917Set tuning of the encoding params.
1918
1919@item profile (@emph{profile})
1920Set profile restrictions.
1921
1922@item fastfirstpass
1923Enable fast settings when encoding first pass, when set to 1. When set
1924to 0, it has the same effect of @command{x264}'s
1925@option{--slow-firstpass} option.
1926
1927@item crf (@emph{crf})
1928Set the quality for constant quality mode.
1929
1930@item crf_max (@emph{crf-max})
1931In CRF mode, prevents VBV from lowering quality beyond this point.
1932
1933@item qp (@emph{qp})
1934Set constant quantization rate control method parameter.
1935
1936@item aq-mode (@emph{aq-mode})
1937Set AQ method. Possible values:
1938
1939@table @samp
1940@item none (@emph{0})
1941Disabled.
1942
1943@item variance (@emph{1})
1944Variance AQ (complexity mask).
1945
1946@item autovariance (@emph{2})
1947Auto-variance AQ (experimental).
1948@end table
1949
1950@item aq-strength (@emph{aq-strength})
1951Set AQ strength, reduce blocking and blurring in flat and textured areas.
1952
1953@item psy
1954Use psychovisual optimizations when set to 1. When set to 0, it has the
1955same effect as @command{x264}'s @option{--no-psy} option.
1956
1957@item psy-rd (@emph{psy-rd})
1958Set strength of psychovisual optimization, in
1959@var{psy-rd}:@var{psy-trellis} format.
1960
1961@item rc-lookahead (@emph{rc-lookahead})
1962Set number of frames to look ahead for frametype and ratecontrol.
1963
1964@item weightb
1965Enable weighted prediction for B-frames when set to 1. When set to 0,
1966it has the same effect as @command{x264}'s @option{--no-weightb} option.
1967
1968@item weightp (@emph{weightp})
1969Set weighted prediction method for P-frames. Possible values:
1970
1971@table @samp
1972@item none (@emph{0})
1973Disabled
1974@item simple (@emph{1})
1975Enable only weighted refs
1976@item smart (@emph{2})
1977Enable both weighted refs and duplicates
1978@end table
1979
1980@item ssim (@emph{ssim})
1981Enable calculation and printing SSIM stats after the encoding.
1982
1983@item intra-refresh (@emph{intra-refresh})
1984Enable the use of Periodic Intra Refresh instead of IDR frames when set
1985to 1.
1986
1987@item avcintra-class (@emph{class})
1988Configure the encoder to generate AVC-Intra.
1989Valid values are 50,100 and 200
1990
1991@item bluray-compat (@emph{bluray-compat})
1992Configure the encoder to be compatible with the bluray standard.
1993It is a shorthand for setting "bluray-compat=1 force-cfr=1".
1994
1995@item b-bias (@emph{b-bias})
1996Set the influence on how often B-frames are used.
1997
1998@item b-pyramid (@emph{b-pyramid})
1999Set method for keeping of some B-frames as references. Possible values:
2000
2001@table @samp
2002@item none (@emph{none})
2003Disabled.
2004@item strict (@emph{strict})
2005Strictly hierarchical pyramid.
2006@item normal (@emph{normal})
2007Non-strict (not Blu-ray compatible).
2008@end table
2009
2010@item mixed-refs
2011Enable the use of one reference per partition, as opposed to one
2012reference per macroblock when set to 1. When set to 0, it has the
2013same effect as @command{x264}'s @option{--no-mixed-refs} option.
2014
2015@item 8x8dct
2016Enable adaptive spatial transform (high profile 8x8 transform)
2017when set to 1. When set to 0, it has the same effect as
2018@command{x264}'s @option{--no-8x8dct} option.
2019
2020@item fast-pskip
2021Enable early SKIP detection on P-frames when set to 1. When set
2022to 0, it has the same effect as @command{x264}'s
2023@option{--no-fast-pskip} option.
2024
2025@item aud (@emph{aud})
2026Enable use of access unit delimiters when set to 1.
2027
2028@item mbtree
2029Enable use macroblock tree ratecontrol when set to 1. When set
2030to 0, it has the same effect as @command{x264}'s
2031@option{--no-mbtree} option.
2032
2033@item deblock (@emph{deblock})
2034Set loop filter parameters, in @var{alpha}:@var{beta} form.
2035
2036@item cplxblur (@emph{cplxblur})
2037Set fluctuations reduction in QP (before curve compression).
2038
2039@item partitions (@emph{partitions})
2040Set partitions to consider as a comma-separated list of. Possible
2041values in the list:
2042
2043@table @samp
2044@item p8x8
20458x8 P-frame partition.
2046@item p4x4
20474x4 P-frame partition.
2048@item b8x8
20494x4 B-frame partition.
2050@item i8x8
20518x8 I-frame partition.
2052@item i4x4
20534x4 I-frame partition.
2054(Enabling @samp{p4x4} requires @samp{p8x8} to be enabled. Enabling
2055@samp{i8x8} requires adaptive spatial transform (@option{8x8dct}
2056option) to be enabled.)
2057@item none (@emph{none})
2058Do not consider any partitions.
2059@item all (@emph{all})
2060Consider every partition.
2061@end table
2062
2063@item direct-pred (@emph{direct})
2064Set direct MV prediction mode. Possible values:
2065
2066@table @samp
2067@item none (@emph{none})
2068Disable MV prediction.
2069@item spatial (@emph{spatial})
2070Enable spatial predicting.
2071@item temporal (@emph{temporal})
2072Enable temporal predicting.
2073@item auto (@emph{auto})
2074Automatically decided.
2075@end table
2076
2077@item slice-max-size (@emph{slice-max-size})
2078Set the limit of the size of each slice in bytes. If not specified
2079but RTP payload size (@option{ps}) is specified, that is used.
2080
2081@item stats (@emph{stats})
2082Set the file name for multi-pass stats.
2083
2084@item nal-hrd (@emph{nal-hrd})
2085Set signal HRD information (requires @option{vbv-bufsize} to be set).
2086Possible values:
2087
2088@table @samp
2089@item none (@emph{none})
2090Disable HRD information signaling.
2091@item vbr (@emph{vbr})
2092Variable bit rate.
2093@item cbr (@emph{cbr})
2094Constant bit rate (not allowed in MP4 container).
2095@end table
2096
2097@item x264opts (N.A.)
2098Set any x264 option, see @command{x264 --fullhelp} for a list.
2099
2100Argument is a list of @var{key}=@var{value} couples separated by
2101":". In @var{filter} and @var{psy-rd} options that use ":" as a separator
2102themselves, use "," instead. They accept it as well since long ago but this
2103is kept undocumented for some reason.
2104
2105For example to specify libx264 encoding options with @command{ffmpeg}:
2106@example
2107ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
2108@end example
2109
2110@item a53cc @var{boolean}
2111Import closed captions (which must be ATSC compatible format) into output.
2112Only the mpeg2 and h264 decoders provide these. Default is 1 (on).
2113
2114@item x264-params (N.A.)
2115Override the x264 configuration using a :-separated list of key=value
2116parameters.
2117
2118This option is functionally the same as the @option{x264opts}, but is
2119duplicated for compatibility with the Libav fork.
2120
2121For example to specify libx264 encoding options with @command{ffmpeg}:
2122@example
2123ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\
2124cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\
2125no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT
2126@end example
2127@end table
2128
2129Encoding ffpresets for common usages are provided so they can be used with the
2130general presets system (e.g. passing the @option{pre} option).
2131
2132@section libx265
2133
2134x265 H.265/HEVC encoder wrapper.
2135
2136This encoder requires the presence of the libx265 headers and library
2137during configuration. You need to explicitly configure the build with
2138@option{--enable-libx265}.
2139
2140@subsection Options
2141
2142@table @option
2143@item preset
2144Set the x265 preset.
2145
2146@item tune
2147Set the x265 tune parameter.
2148
2149@item forced-idr
2150Normally, when forcing a I-frame type, the encoder can select any type
2151of I-frame. This option forces it to choose an IDR-frame.
2152
2153@item x265-params
2154Set x265 options using a list of @var{key}=@var{value} couples separated
2155by ":". See @command{x265 --help} for a list of options.
2156
2157For example to specify libx265 encoding options with @option{-x265-params}:
2158
2159@example
2160ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4
2161@end example
2162@end table
2163
2164@section libxvid
2165
2166Xvid MPEG-4 Part 2 encoder wrapper.
2167
2168This encoder requires the presence of the libxvidcore headers and library
2169during configuration. You need to explicitly configure the build with
2170@code{--enable-libxvid --enable-gpl}.
2171
2172The native @code{mpeg4} encoder supports the MPEG-4 Part 2 format, so
2173users can encode to this format without this library.
2174
2175@subsection Options
2176
2177The following options are supported by the libxvid wrapper. Some of
2178the following options are listed but are not documented, and
2179correspond to shared codec options. See @ref{codec-options,,the Codec
2180Options chapter} for their documentation. The other shared options
2181which are not listed have no effect for the libxvid encoder.
2182
2183@table @option
2184@item b
2185
2186@item g
2187
2188@item qmin
2189
2190@item qmax
2191
2192@item mpeg_quant
2193
2194@item threads
2195
2196@item bf
2197
2198@item b_qfactor
2199
2200@item b_qoffset
2201
2202@item flags
2203Set specific encoding flags. Possible values:
2204
2205@table @samp
2206
2207@item mv4
2208Use four motion vector by macroblock.
2209
2210@item aic
2211Enable high quality AC prediction.
2212
2213@item gray
2214Only encode grayscale.
2215
2216@item gmc
2217Enable the use of global motion compensation (GMC).
2218
2219@item qpel
2220Enable quarter-pixel motion compensation.
2221
2222@item cgop
2223Enable closed GOP.
2224
2225@item global_header
2226Place global headers in extradata instead of every keyframe.
2227
2228@end table
2229
2230@item trellis
2231
2232@item me_method
2233Set motion estimation method. Possible values in decreasing order of
2234speed and increasing order of quality:
2235
2236@table @samp
2237@item zero
2238Use no motion estimation (default).
2239
2240@item phods
2241@item x1
2242@item log
2243Enable advanced diamond zonal search for 16x16 blocks and half-pixel
2244refinement for 16x16 blocks. @samp{x1} and @samp{log} are aliases for
2245@samp{phods}.
2246
2247@item epzs
2248Enable all of the things described above, plus advanced diamond zonal
2249search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion
2250estimation on chroma planes.
2251
2252@item full
2253Enable all of the things described above, plus extended 16x16 and 8x8
2254blocks search.
2255@end table
2256
2257@item mbd
2258Set macroblock decision algorithm. Possible values in the increasing
2259order of quality:
2260
2261@table @samp
2262@item simple
2263Use macroblock comparing function algorithm (default).
2264
2265@item bits
2266Enable rate distortion-based half pixel and quarter pixel refinement for
226716x16 blocks.
2268
2269@item rd
2270Enable all of the things described above, plus rate distortion-based
2271half pixel and quarter pixel refinement for 8x8 blocks, and rate
2272distortion-based search using square pattern.
2273@end table
2274
2275@item lumi_aq
2276Enable lumi masking adaptive quantization when set to 1. Default is 0
2277(disabled).
2278
2279@item variance_aq
2280Enable variance adaptive quantization when set to 1. Default is 0
2281(disabled).
2282
2283When combined with @option{lumi_aq}, the resulting quality will not
2284be better than any of the two specified individually. In other
2285words, the resulting quality will be the worse one of the two
2286effects.
2287
2288@item ssim
2289Set structural similarity (SSIM) displaying method. Possible values:
2290
2291@table @samp
2292@item off
2293Disable displaying of SSIM information.
2294
2295@item avg
2296Output average SSIM at the end of encoding to stdout. The format of
2297showing the average SSIM is:
2298
2299@example
2300Average SSIM: %f
2301@end example
2302
2303For users who are not familiar with C, %f means a float number, or
2304a decimal (e.g. 0.939232).
2305
2306@item frame
2307Output both per-frame SSIM data during encoding and average SSIM at
2308the end of encoding to stdout. The format of per-frame information
2309is:
2310
2311@example
2312 SSIM: avg: %1.3f min: %1.3f max: %1.3f
2313@end example
2314
2315For users who are not familiar with C, %1.3f means a float number
2316rounded to 3 digits after the dot (e.g. 0.932).
2317
2318@end table
2319
2320@item ssim_acc
2321Set SSIM accuracy. Valid options are integers within the range of
23220-4, while 0 gives the most accurate result and 4 computes the
2323fastest.
2324
2325@end table
2326
2327@section mpeg2
2328
2329MPEG-2 video encoder.
2330
2331@subsection Options
2332
2333@table @option
2334@item seq_disp_ext @var{integer}
2335Specifies if the encoder should write a sequence_display_extension to the
2336output.
2337@table @option
2338@item -1
2339@itemx auto
2340Decide automatically to write it or not (this is the default) by checking if
2341the data to be written is different from the default or unspecified values.
2342@item 0
2343@itemx never
2344Never write it.
2345@item 1
2346@itemx always
2347Always write it.
2348@end table
2349@end table
2350
2351@section png
2352
2353PNG image encoder.
2354
2355@subsection Private options
2356
2357@table @option
2358@item dpi @var{integer}
2359Set physical density of pixels, in dots per inch, unset by default
2360@item dpm @var{integer}
2361Set physical density of pixels, in dots per meter, unset by default
2362@end table
2363
2364@section ProRes
2365
2366Apple ProRes encoder.
2367
2368FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder.
2369The used encoder can be chosen with the @code{-vcodec} option.
2370
2371@subsection Private Options for prores-ks
2372
2373@table @option
2374@item profile @var{integer}
2375Select the ProRes profile to encode
2376@table @samp
2377@item proxy
2378@item lt
2379@item standard
2380@item hq
2381@item 4444
2382@end table
2383
2384@item quant_mat @var{integer}
2385Select quantization matrix.
2386@table @samp
2387@item auto
2388@item default
2389@item proxy
2390@item lt
2391@item standard
2392@item hq
2393@end table
2394If set to @var{auto}, the matrix matching the profile will be picked.
2395If not set, the matrix providing the highest quality, @var{default}, will be
2396picked.
2397
2398@item bits_per_mb @var{integer}
2399How many bits to allot for coding one macroblock. Different profiles use
2400between 200 and 2400 bits per macroblock, the maximum is 8000.
2401
2402@item mbs_per_slice @var{integer}
2403Number of macroblocks in each slice (1-8); the default value (8)
2404should be good in almost all situations.
2405
2406@item vendor @var{string}
2407Override the 4-byte vendor ID.
2408A custom vendor ID like @var{apl0} would claim the stream was produced by
2409the Apple encoder.
2410
2411@item alpha_bits @var{integer}
2412Specify number of bits for alpha component.
2413Possible values are @var{0}, @var{8} and @var{16}.
2414Use @var{0} to disable alpha plane coding.
2415
2416@end table
2417
2418@subsection Speed considerations
2419
2420In the default mode of operation the encoder has to honor frame constraints
2421(i.e. not produce frames with size bigger than requested) while still making
2422output picture as good as possible.
2423A frame containing a lot of small details is harder to compress and the encoder
2424would spend more time searching for appropriate quantizers for each slice.
2425
2426Setting a higher @option{bits_per_mb} limit will improve the speed.
2427
2428For the fastest encoding speed set the @option{qscale} parameter (4 is the
2429recommended value) and do not set a size constraint.
2430
2431@section QSV encoders
2432
2433The family of Intel QuickSync Video encoders (MPEG-2, H.264 and HEVC)
2434
2435The ratecontrol method is selected as follows:
2436
2437@itemize @bullet
2438@item
2439When @option{global_quality} is specified, a quality-based mode is used.
2440Specifically this means either
2441@itemize @minus
2442@item
2443@var{CQP} - constant quantizer scale, when the @option{qscale} codec flag is
2444also set (the @option{-qscale} ffmpeg option).
2445
2446@item
2447@var{LA_ICQ} - intelligent constant quality with lookahead, when the
2448@option{look_ahead} option is also set.
2449
2450@item
2451@var{ICQ} -- intelligent constant quality otherwise.
2452@end itemize
2453
2454@item
2455Otherwise, a bitrate-based mode is used. For all of those, you should specify at
2456least the desired average bitrate with the @option{b} option.
2457@itemize @minus
2458@item
2459@var{LA} - VBR with lookahead, when the @option{look_ahead} option is specified.
2460
2461@item
2462@var{VCM} - video conferencing mode, when the @option{vcm} option is set.
2463
2464@item
2465@var{CBR} - constant bitrate, when @option{maxrate} is specified and equal to
2466the average bitrate.
2467
2468@item
2469@var{VBR} - variable bitrate, when @option{maxrate} is specified, but is higher
2470than the average bitrate.
2471
2472@item
2473@var{AVBR} - average VBR mode, when @option{maxrate} is not specified. This mode
2474is further configured by the @option{avbr_accuracy} and
2475@option{avbr_convergence} options.
2476@end itemize
2477@end itemize
2478
2479Note that depending on your system, a different mode than the one you specified
2480may be selected by the encoder. Set the verbosity level to @var{verbose} or
2481higher to see the actual settings used by the QSV runtime.
2482
2483Additional libavcodec global options are mapped to MSDK options as follows:
2484
2485@itemize
2486@item
2487@option{g/gop_size} -> @option{GopPicSize}
2488
2489@item
2490@option{bf/max_b_frames}+1 -> @option{GopRefDist}
2491
2492@item
2493@option{rc_init_occupancy/rc_initial_buffer_occupancy} ->
2494@option{InitialDelayInKB}
2495
2496@item
2497@option{slices} -> @option{NumSlice}
2498
2499@item
2500@option{refs} -> @option{NumRefFrame}
2501
2502@item
2503@option{b_strategy/b_frame_strategy} -> @option{BRefType}
2504
2505@item
2506@option{cgop/CLOSED_GOP} codec flag -> @option{GopOptFlag}
2507
2508@item
2509For the @var{CQP} mode, the @option{i_qfactor/i_qoffset} and
2510@option{b_qfactor/b_qoffset} set the difference between @var{QPP} and @var{QPI},
2511and @var{QPP} and @var{QPB} respectively.
2512
2513@item
2514Setting the @option{coder} option to the value @var{vlc} will make the H.264
2515encoder use CAVLC instead of CABAC.
2516
2517@end itemize
2518
2519@section snow
2520
2521@subsection Options
2522
2523@table @option
2524@item iterative_dia_size
2525dia size for the iterative motion estimation
2526@end table
2527
2528@section vc2
2529
2530SMPTE VC-2 (previously BBC Dirac Pro). This codec was primarily aimed at
2531professional broadcasting but since it supports yuv420, yuv422 and yuv444 at
25328 (limited range or full range), 10 or 12 bits, this makes it suitable for
2533other tasks which require low overhead and low compression (like screen
2534recording).
2535
2536@subsection Options
2537
2538@table @option
2539
2540@item b
2541Sets target video bitrate. Usually that's around 1:6 of the uncompressed
2542video bitrate (e.g. for 1920x1080 50fps yuv422p10 that's around 400Mbps). Higher
2543values (close to the uncompressed bitrate) turn on lossless compression mode.
2544
2545@item field_order
2546Enables field coding when set (e.g. to tt - top field first) for interlaced
2547inputs. Should increase compression with interlaced content as it splits the
2548fields and encodes each separately.
2549
2550@item wavelet_depth
2551Sets the total amount of wavelet transforms to apply, between 1 and 5 (default).
2552Lower values reduce compression and quality. Less capable decoders may not be
2553able to handle values of @option{wavelet_depth} over 3.
2554
2555@item wavelet_type
2556Sets the transform type. Currently only @var{5_3} (LeGall) and @var{9_7}
2557(Deslauriers-Dubuc)
2558are implemented, with 9_7 being the one with better compression and thus
2559is the default.
2560
2561@item slice_width
2562@item slice_height
2563Sets the slice size for each slice. Larger values result in better compression.
2564For compatibility with other more limited decoders use @option{slice_width} of
256532 and @option{slice_height} of 8.
2566
2567@item tolerance
2568Sets the undershoot tolerance of the rate control system in percent. This is
2569to prevent an expensive search from being run.
2570
2571@item qm
2572Sets the quantization matrix preset to use by default or when @option{wavelet_depth}
2573is set to 5
2574@itemize @minus
2575@item
2576@var{default}
2577Uses the default quantization matrix from the specifications, extended with
2578values for the fifth level. This provides a good balance between keeping detail
2579and omitting artifacts.
2580
2581@item
2582@var{flat}
2583Use a completely zeroed out quantization matrix. This increases PSNR but might
2584reduce perception. Use in bogus benchmarks.
2585
2586@item
2587@var{color}
2588Reduces detail but attempts to preserve color at extremely low bitrates.
2589@end itemize
2590
2591@end table
2592
2593@c man end VIDEO ENCODERS
2594
2595@chapter Subtitles Encoders
2596@c man begin SUBTITLES ENCODERS
2597
2598@section dvdsub
2599
2600This codec encodes the bitmap subtitle format that is used in DVDs.
2601Typically they are stored in VOBSUB file pairs (*.idx + *.sub),
2602and they can also be used in Matroska files.
2603
2604@subsection Options
2605
2606@table @option
2607@item even_rows_fix
2608When set to 1, enable a work-around that makes the number of pixel rows
2609even in all subtitles. This fixes a problem with some players that
2610cut off the bottom row if the number is odd. The work-around just adds
2611a fully transparent row if needed. The overhead is low, typically
2612one byte per subtitle on average.
2613
2614By default, this work-around is disabled.
2615@end table
2616
2617@c man end SUBTITLES ENCODERS
2618