4 Encoders are configured elements in FFmpeg which allow the encoding of
7 When you configure your FFmpeg build, all the supported native encoders
8 are enabled by default. Encoders requiring an external library must be enabled
9 manually via the corresponding @code{--enable-lib} option. You can list all
10 available encoders using the configure option @code{--list-encoders}.
12 You can disable all the encoders with the configure option
13 @code{--disable-encoders} and selectively enable / disable single encoders
14 with the options @code{--enable-encoder=@var{ENCODER}} /
15 @code{--disable-encoder=@var{ENCODER}}.
17 The option @code{-codecs} of the ff* tools will display the list of
22 @chapter Audio Encoders
23 @c man begin AUDIO ENCODERS
25 A description of some of the currently available audio encoders
31 Advanced Audio Coding (AAC) encoder.
33 This encoder is an experimental FFmpeg-native AAC encoder. Currently only the
34 low complexity (AAC-LC) profile is supported. To use this encoder, you must set
35 @option{strict} option to @samp{experimental} or lower.
37 As this encoder is experimental, unexpected behavior may exist from time to
38 time. For a more stable AAC encoder, see @ref{libvo-aacenc}. However, be warned
39 that it has a worse quality reported by some users.
41 @c Comment this out until somebody writes the respective documentation.
42 @c See also @ref{libfaac}, @ref{libaacplus}, and @ref{libfdk-aac-enc}.
48 Set bit rate in bits/s. Setting this automatically activates constant bit rate
52 Set quality for variable bit rate (VBR) mode. This option is valid only using
53 the @command{ffmpeg} command-line tool. For library interface users, use
54 @option{global_quality}.
57 Set stereo encoding mode. Possible values:
61 Automatically selected by the encoder.
64 Disable middle/side encoding. This is the default.
67 Force middle/side encoding.
71 Set AAC encoder coding method. Possible values:
77 This method is a simplified reimplementation of the method used in FAAC, which
78 sets thresholds proportional to the band energies, and then decreases all the
79 thresholds with quantizer steps to find the appropriate quantization with
80 distortion below threshold band by band.
82 The quality of this method is comparable to the two loop searching method
83 descibed below, but somewhat a little better and slower.
86 Average noise to mask ratio (ANMR) trellis-based solution.
88 This has a theoretic best quality out of all the coding methods, but at the
89 cost of the slowest speed.
92 Two loop searching (TLS) method.
94 This method first sets quantizers depending on band thresholds and then tries
95 to find an optimal combination by adding or subtracting a specific value from
96 all quantizers and adjusting some individual quantizer a little.
98 This method produces similar quality with the FAAC method and is the default.
101 Constant quantizer method.
103 This method sets a constant quantizer for all bands. This is the fastest of all
104 the methods, yet produces the worst quality.
110 @subsection Tips and Tricks
112 According to some reports
113 (e.g. @url{http://d.hatena.ne.jp/kamedo2/20120729/1343545890}), setting the
114 @option{cutoff} option to 15000 Hz greatly improves the quality of the output
115 quality. As a result, we encourage you to do the same.
117 @section ac3 and ac3_fixed
121 These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as
122 the undocumented RealAudio 3 (a.k.a. dnet).
124 The @var{ac3} encoder uses floating-point math, while the @var{ac3_fixed}
125 encoder only uses fixed-point integer math. This does not mean that one is
126 always faster, just that one or the other may be better suited to a
127 particular system. The floating-point encoder will generally produce better
128 quality audio for a given bitrate. The @var{ac3_fixed} encoder is not the
129 default codec for any of the output formats, so it must be specified explicitly
130 using the option @code{-acodec ac3_fixed} in order to use it.
132 @subsection AC-3 Metadata
134 The AC-3 metadata options are used to set parameters that describe the audio,
135 but in most cases do not affect the audio encoding itself. Some of the options
136 do directly affect or influence the decoding and playback of the resulting
137 bitstream, while others are just for informational purposes. A few of the
138 options will add bits to the output stream that could otherwise be used for
139 audio data, and will thus affect the quality of the output. Those will be
140 indicated accordingly with a note in the option list below.
142 These parameters are described in detail in several publicly-available
145 @item @uref{http://www.atsc.org/cms/standards/a_52-2010.pdf,A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard}
146 @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}
147 @item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf,Dolby Metadata Guide}
148 @item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf,Dolby Digital Professional Encoding Guidelines}
151 @subsubsection Metadata Control Options
155 @item -per_frame_metadata @var{boolean}
156 Allow Per-Frame Metadata. Specifies if the encoder should check for changing
157 metadata for each frame.
160 The metadata values set at initialization will be used for every frame in the
163 Metadata values can be changed before encoding each frame.
168 @subsubsection Downmix Levels
172 @item -center_mixlev @var{level}
173 Center Mix Level. The amount of gain the decoder should apply to the center
174 channel when downmixing to stereo. This field will only be written to the
175 bitstream if a center channel is present. The value is specified as a scale
176 factor. There are 3 valid values:
181 Apply -4.5dB gain (default)
186 @item -surround_mixlev @var{level}
187 Surround Mix Level. The amount of gain the decoder should apply to the surround
188 channel(s) when downmixing to stereo. This field will only be written to the
189 bitstream if one or more surround channels are present. The value is specified
190 as a scale factor. There are 3 valid values:
195 Apply -6dB gain (default)
197 Silence Surround Channel(s)
202 @subsubsection Audio Production Information
203 Audio Production Information is optional information describing the mixing
204 environment. Either none or both of the fields are written to the bitstream.
208 @item -mixing_level @var{number}
209 Mixing Level. Specifies peak sound pressure level (SPL) in the production
210 environment when the mix was mastered. Valid values are 80 to 111, or -1 for
211 unknown or not indicated. The default value is -1, but that value cannot be
212 used if the Audio Production Information is written to the bitstream. Therefore,
213 if the @code{room_type} option is not the default value, the @code{mixing_level}
214 option must not be -1.
216 @item -room_type @var{type}
217 Room Type. Describes the equalization used during the final mixing session at
218 the studio or on the dubbing stage. A large room is a dubbing stage with the
219 industry standard X-curve equalization; a small room has flat equalization.
220 This field will not be written to the bitstream if both the @code{mixing_level}
221 option and the @code{room_type} option have the default values.
225 Not Indicated (default)
236 @subsubsection Other Metadata Options
240 @item -copyright @var{boolean}
241 Copyright Indicator. Specifies whether a copyright exists for this audio.
245 No Copyright Exists (default)
251 @item -dialnorm @var{value}
252 Dialogue Normalization. Indicates how far the average dialogue level of the
253 program is below digital 100% full scale (0 dBFS). This parameter determines a
254 level shift during audio reproduction that sets the average volume of the
255 dialogue to a preset level. The goal is to match volume level between program
256 sources. A value of -31dB will result in no volume level change, relative to
257 the source volume, during audio reproduction. Valid values are whole numbers in
258 the range -31 to -1, with -31 being the default.
260 @item -dsur_mode @var{mode}
261 Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround
262 (Pro Logic). This field will only be written to the bitstream if the audio
263 stream is stereo. Using this option does @b{NOT} mean the encoder will actually
264 apply Dolby Surround processing.
268 Not Indicated (default)
271 Not Dolby Surround Encoded
274 Dolby Surround Encoded
277 @item -original @var{boolean}
278 Original Bit Stream Indicator. Specifies whether this audio is from the
279 original source and not a copy.
286 Original Source (default)
291 @subsection Extended Bitstream Information
292 The extended bitstream options are part of the Alternate Bit Stream Syntax as
293 specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
294 If any one parameter in a group is specified, all values in that group will be
295 written to the bitstream. Default values are used for those that are written
296 but have not been specified. If the mixing levels are written, the decoder
297 will use these values instead of the ones specified in the @code{center_mixlev}
298 and @code{surround_mixlev} options if it supports the Alternate Bit Stream
301 @subsubsection Extended Bitstream Information - Part 1
305 @item -dmix_mode @var{mode}
306 Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt
307 (Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
311 Not Indicated (default)
314 Lt/Rt Downmix Preferred
317 Lo/Ro Downmix Preferred
320 @item -ltrt_cmixlev @var{level}
321 Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the
322 center channel when downmixing to stereo in Lt/Rt mode.
335 Apply -4.5dB gain (default)
339 Silence Center Channel
342 @item -ltrt_surmixlev @var{level}
343 Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the
344 surround channel(s) when downmixing to stereo in Lt/Rt mode.
353 Apply -6.0dB gain (default)
355 Silence Surround Channel(s)
358 @item -loro_cmixlev @var{level}
359 Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the
360 center channel when downmixing to stereo in Lo/Ro mode.
373 Apply -4.5dB gain (default)
377 Silence Center Channel
380 @item -loro_surmixlev @var{level}
381 Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the
382 surround channel(s) when downmixing to stereo in Lo/Ro mode.
391 Apply -6.0dB gain (default)
393 Silence Surround Channel(s)
398 @subsubsection Extended Bitstream Information - Part 2
402 @item -dsurex_mode @var{mode}
403 Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX
404 (7.1 matrixed to 5.1). Using this option does @b{NOT} mean the encoder will actually
405 apply Dolby Surround EX processing.
409 Not Indicated (default)
412 Dolby Surround EX Off
418 @item -dheadphone_mode @var{mode}
419 Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone
420 encoding (multi-channel matrixed to 2.0 for use with headphones). Using this
421 option does @b{NOT} mean the encoder will actually apply Dolby Headphone
426 Not Indicated (default)
435 @item -ad_conv_type @var{type}
436 A/D Converter Type. Indicates whether the audio has passed through HDCD A/D
441 Standard A/D Converter (default)
449 @subsection Other AC-3 Encoding Options
453 @item -stereo_rematrixing @var{boolean}
454 Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This
455 is an optional AC-3 feature that increases quality by selectively encoding
456 the left/right channels as mid/side. This option is enabled by default, and it
457 is highly recommended that it be left as enabled except for testing purposes.
461 @subsection Floating-Point-Only AC-3 Encoding Options
463 These options are only valid for the floating-point encoder and do not exist
464 for the fixed-point encoder due to the corresponding features not being
465 implemented in fixed-point.
469 @item -channel_coupling @var{boolean}
470 Enables/Disables use of channel coupling, which is an optional AC-3 feature
471 that increases quality by combining high frequency information from multiple
472 channels into a single channel. The per-channel high frequency information is
473 sent with less accuracy in both the frequency and time domains. This allows
474 more bits to be used for lower frequencies while preserving enough information
475 to reconstruct the high frequencies. This option is enabled by default for the
476 floating-point encoder and should generally be left as enabled except for
477 testing purposes or to increase encoding speed.
481 Selected by Encoder (default)
484 Disable Channel Coupling
487 Enable Channel Coupling
490 @item -cpl_start_band @var{number}
491 Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a
492 value higher than the bandwidth is used, it will be reduced to 1 less than the
493 coupling end band. If @var{auto} is used, the start band will be determined by
494 the encoder based on the bit rate, sample rate, and channel layout. This option
495 has no effect if channel coupling is disabled.
499 Selected by Encoder (default)
506 LAME (Lame Ain't an MP3 Encoder) MP3 encoder wrapper.
508 Requires the presence of the libmp3lame headers and library during
509 configuration. You need to explicitly configure the build with
510 @code{--enable-libmp3lame}.
514 The following options are supported by the libmp3lame wrapper. The
515 @command{lame}-equivalent of the options are listed in parentheses.
519 Set bitrate expressed in bits/s for CBR. LAME @code{bitrate} is
520 expressed in kilobits/s.
523 Set constant quality setting for VBR. This option is valid only
524 using the @command{ffmpeg} command-line tool. For library interface
525 users, use @option{global_quality}.
527 @item compression_level (@emph{-q})
528 Set algorithm quality. Valid arguments are integers in the 0-9 range,
529 with 0 meaning highest quality but slowest, and 9 meaning fastest
530 while producing the worst quality.
533 Enable use of bit reservoir when set to 1. Default value is 1. LAME
534 has this enabled by default, but can be overriden by use
535 @option{--nores} option.
537 @item joint_stereo (@emph{-m j})
538 Enable the encoder to use (on a frame by frame basis) either L/R
539 stereo or mid/side stereo. Default value is 1.
543 @section libopencore-amrnb
545 OpenCORE Adaptive Multi-Rate Narrowband encoder.
547 Requires the presence of the libopencore-amrnb headers and library during
548 configuration. You need to explicitly configure the build with
549 @code{--enable-libopencore-amrnb --enable-version3}.
551 This is a mono-only encoder. Officially it only supports 8000Hz sample rate,
552 but you can override it by setting @option{strict} to @samp{unofficial} or
560 Set bitrate in bits per second. Only the following bitrates are supported,
561 otherwise libavcodec will round to the nearest valid bitrate.
575 Allow discontinuous transmission (generate comfort noise) when set to 1. The
576 default value is 0 (disabled).
582 TwoLAME MP2 encoder wrapper.
584 Requires the presence of the libtwolame headers and library during
585 configuration. You need to explicitly configure the build with
586 @code{--enable-libtwolame}.
590 The following options are supported by the libtwolame wrapper. The
591 @command{twolame}-equivalent options follow the FFmpeg ones and are in
596 Set bitrate expressed in bits/s for CBR. @command{twolame} @option{b}
597 option is expressed in kilobits/s. Default value is 128k.
600 Set quality for experimental VBR support. Maximum value range is
601 from -50 to 50, useful range is from -10 to 10. The higher the
602 value, the better the quality. This option is valid only using the
603 @command{ffmpeg} command-line tool. For library interface users,
604 use @option{global_quality}.
606 @item mode (@emph{--mode})
607 Set the mode of the resulting audio. Possible values:
611 Choose mode automatically based on the input. This is the default.
622 @item psymodel (@emph{--psyc-mode})
623 Set psychoacoustic model to use in encoding. The argument must be
624 an integer between -1 and 4, inclusive. The higher the value, the
625 better the quality. The default value is 3.
627 @item energy_levels (@emph{--energy})
628 Enable energy levels extensions when set to 1. The default value is
631 @item error_protection (@emph{--protect})
632 Enable CRC error protection when set to 1. The default value is 0
635 @item copyright (@emph{--copyright})
636 Set MPEG audio copyright flag when set to 1. The default value is 0
639 @item original (@emph{--original})
640 Set MPEG audio original flag when set to 1. The default value is 0
645 @anchor{libvo-aacenc}
646 @section libvo-aacenc
648 VisualOn AAC encoder.
650 Requires the presence of the libvo-aacenc headers and library during
651 configuration. You need to explicitly configure the build with
652 @code{--enable-libvo-aacenc --enable-version3}.
654 This encoder is considered to be worse than the
655 @ref{aacenc,,native experimental FFmpeg AAC encoder}, according to
660 The VisualOn AAC encoder only support encoding AAC-LC and up to 2
661 channels. It is also CBR-only.
666 Set bit rate in bits/s.
670 @section libvo-amrwbenc
672 VisualOn Adaptive Multi-Rate Wideband encoder.
674 Requires the presence of the libvo-amrwbenc headers and library during
675 configuration. You need to explicitly configure the build with
676 @code{--enable-libvo-amrwbenc --enable-version3}.
678 This is a mono-only encoder. Officially it only supports 16000Hz sample
679 rate, but you can override it by setting @option{strict} to
680 @samp{unofficial} or lower.
687 Set bitrate in bits/s. Only the following bitrates are supported, otherwise
688 libavcodec will round to the nearest valid bitrate.
703 Allow discontinuous transmission (generate comfort noise) when set to 1. The
704 default value is 0 (disabled).
710 libopus Opus Interactive Audio Codec encoder wrapper.
712 Requires the presence of the libopus headers and library during
713 configuration. You need to explicitly configure the build with
714 @code{--enable-libopus}.
716 @subsection Option Mapping
718 Most libopus options are modeled after the @command{opusenc} utility from
719 opus-tools. The following is an option mapping chart describing options
720 supported by the libopus wrapper, and their @command{opusenc}-equivalent
725 @item b (@emph{bitrate})
726 Set the bit rate in bits/s. FFmpeg's @option{b} option is
727 expressed in bits/s, while @command{opusenc}'s @option{bitrate} in
730 @item vbr (@emph{vbr}, @emph{hard-cbr}, and @emph{cvbr})
731 Set VBR mode. The FFmpeg @option{vbr} option has the following
732 valid arguments, with the their @command{opusenc} equivalent options
736 @item off (@emph{hard-cbr})
737 Use constant bit rate encoding.
739 @item on (@emph{vbr})
740 Use variable bit rate encoding (the default).
742 @item constrained (@emph{cvbr})
743 Use constrained variable bit rate encoding.
746 @item compression_level (@emph{comp})
747 Set encoding algorithm complexity. Valid options are integers in
748 the 0-10 range. 0 gives the fastest encodes but lower quality, while 10
749 gives the highest quality but slowest encoding. The default is 10.
751 @item frame_duration (@emph{framesize})
752 Set maximum frame size, or duration of a frame in milliseconds. The
753 argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller
754 frame sizes achieve lower latency but less quality at a given bitrate.
755 Sizes greater than 20ms are only interesting at fairly low bitrates.
756 The default of FFmpeg is 10ms, but is 20ms in @command{opusenc}.
758 @item packet_loss (@emph{expect-loss})
759 Set expected packet loss percentage. The default is 0.
761 @item application (N.A.)
762 Set intended application type. Valid options are listed below:
766 Favor improved speech intelligibility.
768 Favor faithfulness to the input (the default).
770 Restrict to only the lowest delay modes.
774 Set cutoff bandwidth in Hz. The argument must be exactly one of the
775 following: 4000, 6000, 8000, 12000, or 20000, corresponding to
776 narrowband, mediumband, wideband, super wideband, and fullband
777 respectively. The default is 0 (cutoff disabled).
783 A wrapper providing WavPack encoding through libwavpack.
785 Only lossless mode using 32-bit integer samples is supported currently.
786 The @option{compression_level} option can be used to control speed vs.
787 compression tradeoff, with the values mapped to libwavpack as follows:
792 Fast mode - corresponding to the wavpack @option{-f} option.
795 Normal (default) settings.
798 High quality - corresponding to the wavpack @option{-h} option.
801 Very high quality - corresponding to the wavpack @option{-hh} option.
804 Same as 3, but with extra processing enabled - corresponding to the wavpack
805 @option{-x} option. I.e. 4 is the same as @option{-x2} and 8 is the same as
810 @c man end AUDIO ENCODERS
812 @chapter Video Encoders
813 @c man begin VIDEO ENCODERS
815 A description of some of the currently available video encoders
820 Theora format supported through libtheora.
822 Requires the presence of the libtheora headers and library during
823 configuration. You need to explicitly configure the build with
824 @code{--enable-libtheora}.
828 The following global options are mapped to internal libtheora options
829 which affect the quality and the bitrate of the encoded stream.
833 Set the video bitrate, only works if the @code{qscale} flag in
834 @option{flags} is not enabled.
837 Used to enable constant quality mode encoding through the
838 @option{qscale} flag, and to enable the @code{pass1} and @code{pass2}
845 Set the global quality in lambda units, only works if the
846 @code{qscale} flag in @option{flags} is enabled. The value is clipped
847 in the [0 - 10*@code{FF_QP2LAMBDA}] range, and then multiplied for 6.3
848 to get a value in the native libtheora range [0-63]. A higher value
849 corresponds to a higher quality.
851 For example, to set maximum constant quality encoding with
854 ffmpeg -i INPUT -flags:v qscale -global_quality:v "10*QP2LAMBDA" -codec:v libtheora OUTPUT.ogg
860 VP8 format supported through libvpx.
862 Requires the presence of the libvpx headers and library during configuration.
863 You need to explicitly configure the build with @code{--enable-libvpx}.
867 Mapping from FFmpeg to libvpx options with conversion notes in parentheses.
894 @code{(bufsize * 1000 / vb)}
897 @code{(bufsize * 1000 / vb * 5 / 6)}
899 @item rc_init_occupancy, vb
901 @code{(rc_init_occupancy * 1000 / vb)}
903 @item rc_buffer_aggressivity
910 rc_2pass_vbr_bias_pct
913 rc_2pass_vbr_maxsection_pct
914 @code{(maxrate * 100 / vb)}
917 rc_2pass_vbr_minsection_pct
918 @code{(minrate * 100 / vb)}
920 @item minrate, maxrate, vb
922 @code{(minrate == maxrate == vb)}
925 @code{VPX_CQ}, @code{VP8E_SET_CQ_LEVEL}
930 @code{VPX_DL_BEST_QUALITY}
932 @code{VPX_DL_GOOD_QUALITY}
934 @code{VPX_DL_REALTIME}
938 @code{VP8E_SET_CPUUSED}
941 @code{VP8E_SET_NOISE_SENSITIVITY}
944 @code{VP8E_SET_STATIC_THRESHOLD}
947 @code{VP8E_SET_TOKEN_PARTITIONS}
950 @code{VP8E_SET_MAX_INTRA_BITRATE_PCT}
952 @item force_key_frames
953 @code{VPX_EFLAG_FORCE_KF}
955 @item Alternate reference frame related
957 @item vp8flags altref
958 @code{VP8E_SET_ENABLEAUTOALTREF}
959 @item @var{arnr_max_frames}
960 @code{VP8E_SET_ARNR_MAXFRAMES}
961 @item @var{arnr_type}
962 @code{VP8E_SET_ARNR_TYPE}
963 @item @var{arnr_strength}
964 @code{VP8E_SET_ARNR_STRENGTH}
965 @item @var{rc_lookahead}
969 @item vp8flags error_resilient
974 For more information about libvpx see:
975 @url{http://www.webmproject.org/}
979 x264 H.264/MPEG-4 AVC encoder wrapper.
981 This encoder requires the presence of the libx264 headers and library
982 during configuration. You need to explicitly configure the build with
983 @code{--enable-libx264}.
985 libx264 supports an impressive number of features, including 8x8 and
986 4x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC
987 entropy coding, interlacing (MBAFF), lossless mode, psy optimizations
988 for detail retention (adaptive quantization, psy-RD, psy-trellis).
990 Many libx264 encoder options are mapped to FFmpeg global codec
991 options, while unique encoder options are provided through private
992 options. Additionally the @option{x264opts} and @option{x264-params}
993 private options allows to pass a list of key=value tuples as accepted
994 by the libx264 @code{x264_param_parse} function.
996 The x264 project website is at
997 @url{http://www.videolan.org/developers/x264.html}.
1001 The following options are supported by the libx264 wrapper. The
1002 @command{x264}-equivalent options or values are listed in parentheses
1005 To reduce the duplication of documentation, only the private options
1006 and some others requiring special attention are documented here. For
1007 the documentation of the undocumented generic options, see
1008 @ref{codec-options,,the Codec Options chapter}.
1010 To get a more accurate and extensive documentation of the libx264
1011 options, invoke the command @command{x264 --full-help} or consult
1012 the libx264 documentation.
1015 @item b (@emph{bitrate})
1016 Set bitrate in bits/s. Note that FFmpeg's @option{b} option is
1017 expressed in bits/s, while @command{x264}'s @option{bitrate} is in
1020 @item bf (@emph{bframes})
1022 @item g (@emph{keyint})
1024 @item qmax (@emph{qpmax})
1026 @item qmin (@emph{qpmin})
1028 @item qdiff (@emph{qpstep})
1030 @item qblur (@emph{qblur})
1032 @item qcomp (@emph{qcomp})
1034 @item refs (@emph{ref})
1036 @item sc_threshold (@emph{scenecut})
1038 @item trellis (@emph{trellis})
1040 @item nr (@emph{nr})
1042 @item me_range (@emph{merange})
1044 @item me_method (@emph{me})
1045 Set motion estimation method. Possible values in the decreasing order
1049 @item dia (@emph{dia})
1050 @item epzs (@emph{dia})
1051 Diamond search with radius 1 (fastest). @samp{epzs} is an alias for
1053 @item hex (@emph{hex})
1054 Hexagonal search with radius 2.
1055 @item umh (@emph{umh})
1056 Uneven multi-hexagon search.
1057 @item esa (@emph{esa})
1059 @item tesa (@emph{tesa})
1060 Hadamard exhaustive search (slowest).
1063 @item subq (@emph{subme})
1065 @item b_strategy (@emph{b-adapt})
1067 @item keyint_min (@emph{min-keyint})
1070 Set entropy encoder. Possible values:
1077 Enable CAVLC and disable CABAC. It generates the same effect as
1078 @command{x264}'s @option{--no-cabac} option.
1082 Set full pixel motion estimation comparation algorithm. Possible values:
1086 Enable chroma in motion estimation.
1089 Ignore chroma in motion estimation. It generates the same effect as
1090 @command{x264}'s @option{--no-chroma-me} option.
1093 @item threads (@emph{threads})
1096 Set multithreading technique. Possible values:
1100 Slice-based multithreading. It generates the same effect as
1101 @command{x264}'s @option{--sliced-threads} option.
1103 Frame-based multithreading.
1107 Set encoding flags. It can be used to disable closed GOP and enable
1108 open GOP by setting it to @code{-cgop}. The result is similar to
1109 the behavior of @command{x264}'s @option{--open-gop} option.
1111 @item rc_init_occupancy (@emph{vbv-init})
1113 @item preset (@emph{preset})
1114 Set the encoding preset.
1116 @item tune (@emph{tune})
1117 Set tuning of the encoding params.
1119 @item profile (@emph{profile})
1120 Set profile restrictions.
1123 Enable fast settings when encoding first pass, when set to 1. When set
1124 to 0, it has the same effect of @command{x264}'s
1125 @option{--slow-firstpass} option.
1127 @item crf (@emph{crf})
1128 Set the quality for constant quality mode.
1130 @item crf_max (@emph{crf-max})
1131 In CRF mode, prevents VBV from lowering quality beyond this point.
1133 @item qp (@emph{qp})
1134 Set constant quantization rate control method parameter.
1136 @item aq-mode (@emph{aq-mode})
1137 Set AQ method. Possible values:
1140 @item none (@emph{0})
1143 @item variance (@emph{1})
1144 Variance AQ (complexity mask).
1146 @item autovariance (@emph{2})
1147 Auto-variance AQ (experimental).
1150 @item aq-strength (@emph{aq-strength})
1151 Set AQ strength, reduce blocking and blurring in flat and textured areas.
1154 Use psychovisual optimizations when set to 1. When set to 0, it has the
1155 same effect as @command{x264}'s @option{--no-psy} option.
1157 @item psy-rd (@emph{psy-rd})
1158 Set strength of psychovisual optimization, in
1159 @var{psy-rd}:@var{psy-trellis} format.
1161 @item rc-lookahead (@emph{rc-lookahead})
1162 Set number of frames to look ahead for frametype and ratecontrol.
1165 Enable weighted prediction for B-frames when set to 1. When set to 0,
1166 it has the same effect as @command{x264}'s @option{--no-weightb} option.
1168 @item weightp (@emph{weightp})
1169 Set weighted prediction method for P-frames. Possible values:
1172 @item none (@emph{0})
1174 @item simple (@emph{1})
1175 Enable only weighted refs
1176 @item smart (@emph{2})
1177 Enable both weighted refs and duplicates
1180 @item ssim (@emph{ssim})
1181 Enable calculation and printing SSIM stats after the encoding.
1183 @item intra-refresh (@emph{intra-refresh})
1184 Enable the use of Periodic Intra Refresh instead of IDR frames when set
1187 @item bluray-compat (@emph{bluray-compat})
1188 Configure the encoder to be compatible with the bluray standard.
1189 It is a shorthand for setting "bluray-compat=1 force-cfr=1".
1191 @item b-bias (@emph{b-bias})
1192 Set the influence on how often B-frames are used.
1194 @item b-pyramid (@emph{b-pyramid})
1195 Set method for keeping of some B-frames as references. Possible values:
1198 @item none (@emph{none})
1200 @item strict (@emph{strict})
1201 Strictly hierarchical pyramid.
1202 @item normal (@emph{normal})
1203 Non-strict (not Blu-ray compatible).
1207 Enable the use of one reference per partition, as opposed to one
1208 reference per macroblock when set to 1. When set to 0, it has the
1209 same effect as @command{x264}'s @option{--no-mixed-refs} option.
1212 Enable adaptive spatial transform (high profile 8x8 transform)
1213 when set to 1. When set to 0, it has the same effect as
1214 @command{x264}'s @option{--no-8x8dct} option.
1217 Enable early SKIP detection on P-frames when set to 1. When set
1218 to 0, it has the same effect as @command{x264}'s
1219 @option{--no-fast-pskip} option.
1221 @item aud (@emph{aud})
1222 Enable use of access unit delimiters when set to 1.
1225 Enable use macroblock tree ratecontrol when set to 1. When set
1226 to 0, it has the same effect as @command{x264}'s
1227 @option{--no-mbtree} option.
1229 @item deblock (@emph{deblock})
1230 Set loop filter parameters, in @var{alpha}:@var{beta} form.
1232 @item cplxblur (@emph{cplxblur})
1233 Set fluctuations reduction in QP (before curve compression).
1235 @item partitions (@emph{partitions})
1236 Set partitions to consider as a comma-separated list of. Possible
1241 8x8 P-frame partition.
1243 4x4 P-frame partition.
1245 4x4 B-frame partition.
1247 8x8 I-frame partition.
1249 4x4 I-frame partition.
1250 (Enabling @samp{p4x4} requires @samp{p8x8} to be enabled. Enabling
1251 @samp{i8x8} requires adaptive spatial transform (@option{8x8dct}
1252 option) to be enabled.)
1253 @item none (@emph{none})
1254 Do not consider any partitions.
1255 @item all (@emph{all})
1256 Consider every partition.
1259 @item direct-pred (@emph{direct})
1260 Set direct MV prediction mode. Possible values:
1263 @item none (@emph{none})
1264 Disable MV prediction.
1265 @item spatial (@emph{spatial})
1266 Enable spatial predicting.
1267 @item temporal (@emph{temporal})
1268 Enable temporal predicting.
1269 @item auto (@emph{auto})
1270 Automatically decided.
1273 @item slice-max-size (@emph{slice-max-size})
1274 Set the limit of the size of each slice in bytes. If not specified
1275 but RTP payload size (@option{ps}) is specified, that is used.
1277 @item stats (@emph{stats})
1278 Set the file name for multi-pass stats.
1280 @item nal-hrd (@emph{nal-hrd})
1281 Set signal HRD information (requires @option{vbv-bufsize} to be set).
1285 @item none (@emph{none})
1286 Disable HRD information signaling.
1287 @item vbr (@emph{vbr})
1289 @item cbr (@emph{cbr})
1290 Constant bit rate (not allowed in MP4 container).
1293 @item x264opts (N.A.)
1294 Set any x264 option, see @command{x264 --fullhelp} for a list.
1296 Argument is a list of @var{key}=@var{value} couples separated by
1297 ":". In @var{filter} and @var{psy-rd} options that use ":" as a separator
1298 themselves, use "," instead. They accept it as well since long ago but this
1299 is kept undocumented for some reason.
1301 For example to specify libx264 encoding options with @command{ffmpeg}:
1303 ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
1306 @item x264-params (N.A.)
1307 Override the x264 configuration using a :-separated list of key=value
1310 This option is functionally the same as the @option{x264opts}, but is
1311 duplicated for compability with the Libav fork.
1313 For example to specify libx264 encoding options with @command{ffmpeg}:
1315 ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\
1316 cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\
1317 no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT
1321 Encoding ffpresets for common usages are provided so they can be used with the
1322 general presets system (e.g. passing the @option{pre} option).
1326 Xvid MPEG-4 Part 2 encoder wrapper.
1328 This encoder requires the presence of the libxvidcore headers and library
1329 during configuration. You need to explicitly configure the build with
1330 @code{--enable-libxvid --enable-gpl}.
1332 The native @code{mpeg4} encoder supports the MPEG-4 Part 2 format, so
1333 users can encode to this format without this library.
1337 The following options are supported by the libxvid wrapper. Some of
1338 the following options are listed but are not documented, and
1339 correspond to shared codec options. See @ref{codec-options,,the Codec
1340 Options chapter} for their documentation. The other shared options
1341 which are not listed have no effect for the libxvid encoder.
1363 Set specific encoding flags. Possible values:
1368 Use four motion vector by macroblock.
1371 Enable high quality AC prediction.
1374 Only encode grayscale.
1377 Enable the use of global motion compensation (GMC).
1380 Enable quarter-pixel motion compensation.
1386 Place global headers in extradata instead of every keyframe.
1393 Set motion estimation method. Possible values in decreasing order of
1394 speed and increasing order of quality:
1398 Use no motion estimation (default).
1403 Enable advanced diamond zonal search for 16x16 blocks and half-pixel
1404 refinement for 16x16 blocks. @samp{x1} and @samp{log} are aliases for
1408 Enable all of the things described above, plus advanced diamond zonal
1409 search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion
1410 estimation on chroma planes.
1413 Enable all of the things described above, plus extended 16x16 and 8x8
1418 Set macroblock decision algorithm. Possible values in the increasing
1423 Use macroblock comparing function algorithm (default).
1426 Enable rate distortion-based half pixel and quarter pixel refinement for
1430 Enable all of the things described above, plus rate distortion-based
1431 half pixel and quarter pixel refinement for 8x8 blocks, and rate
1432 distortion-based search using square pattern.
1436 Enable lumi masking adaptive quantization when set to 1. Default is 0
1440 Enable variance adaptive quantization when set to 1. Default is 0
1443 When combined with @option{lumi_aq}, the resulting quality will not
1444 be better than any of the two specified individually. In other
1445 words, the resulting quality will be the worse one of the two
1449 Set structural similarity (SSIM) displaying method. Possible values:
1453 Disable displaying of SSIM information.
1456 Output average SSIM at the end of encoding to stdout. The format of
1457 showing the average SSIM is:
1463 For users who are not familiar with C, %f means a float number, or
1464 a decimal (e.g. 0.939232).
1467 Output both per-frame SSIM data during encoding and average SSIM at
1468 the end of encoding to stdout. The format of per-frame information
1472 SSIM: avg: %1.3f min: %1.3f max: %1.3f
1475 For users who are not familiar with C, %1.3f means a float number
1476 rounded to 3 digits after the dot (e.g. 0.932).
1481 Set SSIM accuracy. Valid options are integers within the range of
1482 0-4, while 0 gives the most accurate result and 4 computes the
1491 @subsection Private options
1494 @item dpi @var{integer}
1495 Set physical density of pixels, in dots per inch, unset by default
1496 @item dpm @var{integer}
1497 Set physical density of pixels, in dots per meter, unset by default
1502 Apple ProRes encoder.
1504 FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder.
1505 The used encoder can be choosen with the @code{-vcodec} option.
1507 @subsection Private Options for prores-ks
1510 @item profile @var{integer}
1511 Select the ProRes profile to encode
1520 @item quant_mat @var{integer}
1521 Select quantization matrix.
1530 If set to @var{auto}, the matrix matching the profile will be picked.
1531 If not set, the matrix providing the highest quality, @var{default}, will be
1534 @item bits_per_mb @var{integer}
1535 How many bits to allot for coding one macroblock. Different profiles use
1536 between 200 and 2400 bits per macroblock, the maximum is 8000.
1538 @item mbs_per_slice @var{integer}
1539 Number of macroblocks in each slice (1-8); the default value (8)
1540 should be good in almost all situations.
1542 @item vendor @var{string}
1543 Override the 4-byte vendor ID.
1544 A custom vendor ID like @var{apl0} would claim the stream was produced by
1547 @item alpha_bits @var{integer}
1548 Specify number of bits for alpha component.
1549 Possible values are @var{0}, @var{8} and @var{16}.
1550 Use @var{0} to disable alpha plane coding.
1554 @subsection Speed considerations
1556 In the default mode of operation the encoder has to honor frame constraints
1557 (i.e. not produc frames with size bigger than requested) while still making
1558 output picture as good as possible.
1559 A frame containing a lot of small details is harder to compress and the encoder
1560 would spend more time searching for appropriate quantizers for each slice.
1562 Setting a higher @option{bits_per_mb} limit will improve the speed.
1564 For the fastest encoding speed set the @option{qscale} parameter (4 is the
1565 recommended value) and do not set a size constraint.
1567 @c man end VIDEO ENCODERS