diff options
Diffstat (limited to 'ffmpeg/doc/encoders.texi')
| -rw-r--r-- | ffmpeg/doc/encoders.texi | 2020 |
1 files changed, 0 insertions, 2020 deletions
diff --git a/ffmpeg/doc/encoders.texi b/ffmpeg/doc/encoders.texi deleted file mode 100644 index ea5b3e4..0000000 --- a/ffmpeg/doc/encoders.texi +++ /dev/null @@ -1,2020 +0,0 @@ -@chapter Encoders -@c man begin ENCODERS - -Encoders are configured elements in FFmpeg which allow the encoding of -multimedia streams. - -When you configure your FFmpeg build, all the supported native encoders -are enabled by default. Encoders requiring an external library must be enabled -manually via the corresponding @code{--enable-lib} option. You can list all -available encoders using the configure option @code{--list-encoders}. - -You can disable all the encoders with the configure option -@code{--disable-encoders} and selectively enable / disable single encoders -with the options @code{--enable-encoder=@var{ENCODER}} / -@code{--disable-encoder=@var{ENCODER}}. - -The option @code{-codecs} of the ff* tools will display the list of -enabled encoders. - -@c man end ENCODERS - -@chapter Audio Encoders -@c man begin AUDIO ENCODERS - -A description of some of the currently available audio encoders -follows. - -@anchor{aacenc} -@section aac - -Advanced Audio Coding (AAC) encoder. - -This encoder is an experimental FFmpeg-native AAC encoder. Currently only the -low complexity (AAC-LC) profile is supported. To use this encoder, you must set -@option{strict} option to @samp{experimental} or lower. - -As this encoder is experimental, unexpected behavior may exist from time to -time. For a more stable AAC encoder, see @ref{libvo-aacenc}. However, be warned -that it has a worse quality reported by some users. - -@c todo @ref{libaacplus} -See also @ref{libfdk-aac-enc,,libfdk_aac} and @ref{libfaac}. - -@subsection Options - -@table @option -@item b -Set bit rate in bits/s. Setting this automatically activates constant bit rate -(CBR) mode. - -@item q -Set quality for variable bit rate (VBR) mode. This option is valid only using -the @command{ffmpeg} command-line tool. For library interface users, use -@option{global_quality}. - -@item stereo_mode -Set stereo encoding mode. Possible values: - -@table @samp -@item auto -Automatically selected by the encoder. - -@item ms_off -Disable middle/side encoding. This is the default. - -@item ms_force -Force middle/side encoding. -@end table - -@item aac_coder -Set AAC encoder coding method. Possible values: - -@table @samp -@item faac -FAAC-inspired method. - -This method is a simplified reimplementation of the method used in FAAC, which -sets thresholds proportional to the band energies, and then decreases all the -thresholds with quantizer steps to find the appropriate quantization with -distortion below threshold band by band. - -The quality of this method is comparable to the two loop searching method -descibed below, but somewhat a little better and slower. - -@item anmr -Average noise to mask ratio (ANMR) trellis-based solution. - -This has a theoretic best quality out of all the coding methods, but at the -cost of the slowest speed. - -@item twoloop -Two loop searching (TLS) method. - -This method first sets quantizers depending on band thresholds and then tries -to find an optimal combination by adding or subtracting a specific value from -all quantizers and adjusting some individual quantizer a little. - -This method produces similar quality with the FAAC method and is the default. - -@item fast -Constant quantizer method. - -This method sets a constant quantizer for all bands. This is the fastest of all -the methods, yet produces the worst quality. - -@end table - -@end table - -@section ac3 and ac3_fixed - -AC-3 audio encoders. - -These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as -the undocumented RealAudio 3 (a.k.a. dnet). - -The @var{ac3} encoder uses floating-point math, while the @var{ac3_fixed} -encoder only uses fixed-point integer math. This does not mean that one is -always faster, just that one or the other may be better suited to a -particular system. The floating-point encoder will generally produce better -quality audio for a given bitrate. The @var{ac3_fixed} encoder is not the -default codec for any of the output formats, so it must be specified explicitly -using the option @code{-acodec ac3_fixed} in order to use it. - -@subsection AC-3 Metadata - -The AC-3 metadata options are used to set parameters that describe the audio, -but in most cases do not affect the audio encoding itself. Some of the options -do directly affect or influence the decoding and playback of the resulting -bitstream, while others are just for informational purposes. A few of the -options will add bits to the output stream that could otherwise be used for -audio data, and will thus affect the quality of the output. Those will be -indicated accordingly with a note in the option list below. - -These parameters are described in detail in several publicly-available -documents. -@itemize -@item @uref{http://www.atsc.org/cms/standards/a_52-2010.pdf,A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard} -@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} -@item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf,Dolby Metadata Guide} -@item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf,Dolby Digital Professional Encoding Guidelines} -@end itemize - -@subsubsection Metadata Control Options - -@table @option - -@item -per_frame_metadata @var{boolean} -Allow Per-Frame Metadata. Specifies if the encoder should check for changing -metadata for each frame. -@table @option -@item 0 -The metadata values set at initialization will be used for every frame in the -stream. (default) -@item 1 -Metadata values can be changed before encoding each frame. -@end table - -@end table - -@subsubsection Downmix Levels - -@table @option - -@item -center_mixlev @var{level} -Center Mix Level. The amount of gain the decoder should apply to the center -channel when downmixing to stereo. This field will only be written to the -bitstream if a center channel is present. The value is specified as a scale -factor. There are 3 valid values: -@table @option -@item 0.707 -Apply -3dB gain -@item 0.595 -Apply -4.5dB gain (default) -@item 0.500 -Apply -6dB gain -@end table - -@item -surround_mixlev @var{level} -Surround Mix Level. The amount of gain the decoder should apply to the surround -channel(s) when downmixing to stereo. This field will only be written to the -bitstream if one or more surround channels are present. The value is specified -as a scale factor. There are 3 valid values: -@table @option -@item 0.707 -Apply -3dB gain -@item 0.500 -Apply -6dB gain (default) -@item 0.000 -Silence Surround Channel(s) -@end table - -@end table - -@subsubsection Audio Production Information -Audio Production Information is optional information describing the mixing -environment. Either none or both of the fields are written to the bitstream. - -@table @option - -@item -mixing_level @var{number} -Mixing Level. Specifies peak sound pressure level (SPL) in the production -environment when the mix was mastered. Valid values are 80 to 111, or -1 for -unknown or not indicated. The default value is -1, but that value cannot be -used if the Audio Production Information is written to the bitstream. Therefore, -if the @code{room_type} option is not the default value, the @code{mixing_level} -option must not be -1. - -@item -room_type @var{type} -Room Type. Describes the equalization used during the final mixing session at -the studio or on the dubbing stage. A large room is a dubbing stage with the -industry standard X-curve equalization; a small room has flat equalization. -This field will not be written to the bitstream if both the @code{mixing_level} -option and the @code{room_type} option have the default values. -@table @option -@item 0 -@itemx notindicated -Not Indicated (default) -@item 1 -@itemx large -Large Room -@item 2 -@itemx small -Small Room -@end table - -@end table - -@subsubsection Other Metadata Options - -@table @option - -@item -copyright @var{boolean} -Copyright Indicator. Specifies whether a copyright exists for this audio. -@table @option -@item 0 -@itemx off -No Copyright Exists (default) -@item 1 -@itemx on -Copyright Exists -@end table - -@item -dialnorm @var{value} -Dialogue Normalization. Indicates how far the average dialogue level of the -program is below digital 100% full scale (0 dBFS). This parameter determines a -level shift during audio reproduction that sets the average volume of the -dialogue to a preset level. The goal is to match volume level between program -sources. A value of -31dB will result in no volume level change, relative to -the source volume, during audio reproduction. Valid values are whole numbers in -the range -31 to -1, with -31 being the default. - -@item -dsur_mode @var{mode} -Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround -(Pro Logic). This field will only be written to the bitstream if the audio -stream is stereo. Using this option does @b{NOT} mean the encoder will actually -apply Dolby Surround processing. -@table @option -@item 0 -@itemx notindicated -Not Indicated (default) -@item 1 -@itemx off -Not Dolby Surround Encoded -@item 2 -@itemx on -Dolby Surround Encoded -@end table - -@item -original @var{boolean} -Original Bit Stream Indicator. Specifies whether this audio is from the -original source and not a copy. -@table @option -@item 0 -@itemx off -Not Original Source -@item 1 -@itemx on -Original Source (default) -@end table - -@end table - -@subsection Extended Bitstream Information -The extended bitstream options are part of the Alternate Bit Stream Syntax as -specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts. -If any one parameter in a group is specified, all values in that group will be -written to the bitstream. Default values are used for those that are written -but have not been specified. If the mixing levels are written, the decoder -will use these values instead of the ones specified in the @code{center_mixlev} -and @code{surround_mixlev} options if it supports the Alternate Bit Stream -Syntax. - -@subsubsection Extended Bitstream Information - Part 1 - -@table @option - -@item -dmix_mode @var{mode} -Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt -(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode. -@table @option -@item 0 -@itemx notindicated -Not Indicated (default) -@item 1 -@itemx ltrt -Lt/Rt Downmix Preferred -@item 2 -@itemx loro -Lo/Ro Downmix Preferred -@end table - -@item -ltrt_cmixlev @var{level} -Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the -center channel when downmixing to stereo in Lt/Rt mode. -@table @option -@item 1.414 -Apply +3dB gain -@item 1.189 -Apply +1.5dB gain -@item 1.000 -Apply 0dB gain -@item 0.841 -Apply -1.5dB gain -@item 0.707 -Apply -3.0dB gain -@item 0.595 -Apply -4.5dB gain (default) -@item 0.500 -Apply -6.0dB gain -@item 0.000 -Silence Center Channel -@end table - -@item -ltrt_surmixlev @var{level} -Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the -surround channel(s) when downmixing to stereo in Lt/Rt mode. -@table @option -@item 0.841 -Apply -1.5dB gain -@item 0.707 -Apply -3.0dB gain -@item 0.595 -Apply -4.5dB gain -@item 0.500 -Apply -6.0dB gain (default) -@item 0.000 -Silence Surround Channel(s) -@end table - -@item -loro_cmixlev @var{level} -Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the -center channel when downmixing to stereo in Lo/Ro mode. -@table @option -@item 1.414 -Apply +3dB gain -@item 1.189 -Apply +1.5dB gain -@item 1.000 -Apply 0dB gain -@item 0.841 -Apply -1.5dB gain -@item 0.707 -Apply -3.0dB gain -@item 0.595 -Apply -4.5dB gain (default) -@item 0.500 -Apply -6.0dB gain -@item 0.000 -Silence Center Channel -@end table - -@item -loro_surmixlev @var{level} -Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the -surround channel(s) when downmixing to stereo in Lo/Ro mode. -@table @option -@item 0.841 -Apply -1.5dB gain -@item 0.707 -Apply -3.0dB gain -@item 0.595 -Apply -4.5dB gain -@item 0.500 -Apply -6.0dB gain (default) -@item 0.000 -Silence Surround Channel(s) -@end table - -@end table - -@subsubsection Extended Bitstream Information - Part 2 - -@table @option - -@item -dsurex_mode @var{mode} -Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX -(7.1 matrixed to 5.1). Using this option does @b{NOT} mean the encoder will actually -apply Dolby Surround EX processing. -@table @option -@item 0 -@itemx notindicated -Not Indicated (default) -@item 1 -@itemx on -Dolby Surround EX Off -@item 2 -@itemx off -Dolby Surround EX On -@end table - -@item -dheadphone_mode @var{mode} -Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone -encoding (multi-channel matrixed to 2.0 for use with headphones). Using this -option does @b{NOT} mean the encoder will actually apply Dolby Headphone -processing. -@table @option -@item 0 -@itemx notindicated -Not Indicated (default) -@item 1 -@itemx on -Dolby Headphone Off -@item 2 -@itemx off -Dolby Headphone On -@end table - -@item -ad_conv_type @var{type} -A/D Converter Type. Indicates whether the audio has passed through HDCD A/D -conversion. -@table @option -@item 0 -@itemx standard -Standard A/D Converter (default) -@item 1 -@itemx hdcd -HDCD A/D Converter -@end table - -@end table - -@subsection Other AC-3 Encoding Options - -@table @option - -@item -stereo_rematrixing @var{boolean} -Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This -is an optional AC-3 feature that increases quality by selectively encoding -the left/right channels as mid/side. This option is enabled by default, and it -is highly recommended that it be left as enabled except for testing purposes. - -@end table - -@subsection Floating-Point-Only AC-3 Encoding Options - -These options are only valid for the floating-point encoder and do not exist -for the fixed-point encoder due to the corresponding features not being -implemented in fixed-point. - -@table @option - -@item -channel_coupling @var{boolean} -Enables/Disables use of channel coupling, which is an optional AC-3 feature -that increases quality by combining high frequency information from multiple -channels into a single channel. The per-channel high frequency information is -sent with less accuracy in both the frequency and time domains. This allows -more bits to be used for lower frequencies while preserving enough information -to reconstruct the high frequencies. This option is enabled by default for the -floating-point encoder and should generally be left as enabled except for -testing purposes or to increase encoding speed. -@table @option -@item -1 -@itemx auto -Selected by Encoder (default) -@item 0 -@itemx off -Disable Channel Coupling -@item 1 -@itemx on -Enable Channel Coupling -@end table - -@item -cpl_start_band @var{number} -Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a -value higher than the bandwidth is used, it will be reduced to 1 less than the -coupling end band. If @var{auto} is used, the start band will be determined by -the encoder based on the bit rate, sample rate, and channel layout. This option -has no effect if channel coupling is disabled. -@table @option -@item -1 -@itemx auto -Selected by Encoder (default) -@end table - -@end table - -@anchor{libfaac} -@section libfaac - -libfaac AAC (Advanced Audio Coding) encoder wrapper. - -Requires the presence of the libfaac headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libfaac --enable-nonfree}. - -This encoder is considered to be of higher quality with respect to the -@ref{aacenc,,the native experimental FFmpeg AAC encoder}. - -For more information see the libfaac project at -@url{http://www.audiocoding.com/faac.html/}. - -@subsection Options - -The following shared FFmpeg codec options are recognized. - -The following options are supported by the libfaac wrapper. The -@command{faac}-equivalent of the options are listed in parentheses. - -@table @option -@item b (@emph{-b}) -Set bit rate in bits/s for ABR (Average Bit Rate) mode. If the bit rate -is not explicitly specified, it is automatically set to a suitable -value depending on the selected profile. @command{faac} bitrate is -expressed in kilobits/s. - -Note that libfaac does not support CBR (Constant Bit Rate) but only -ABR (Average Bit Rate). - -If VBR mode is enabled this option is ignored. - -@item ar (@emph{-R}) -Set audio sampling rate (in Hz). - -@item ac (@emph{-c}) -Set the number of audio channels. - -@item cutoff (@emph{-C}) -Set cutoff frequency. If not specified (or explicitly set to 0) it -will use a value automatically computed by the library. Default value -is 0. - -@item profile -Set audio profile. - -The following profiles are recognized: -@table @samp -@item aac_main -Main AAC (Main) - -@item aac_low -Low Complexity AAC (LC) - -@item aac_ssr -Scalable Sample Rate (SSR) - -@item aac_ltp -Long Term Prediction (LTP) -@end table - -If not specified it is set to @samp{aac_low}. - -@item flags +qscale -Set constant quality VBR (Variable Bit Rate) mode. - -@item global_quality -Set quality in VBR mode as an integer number of lambda units. - -Only relevant when VBR mode is enabled with @code{flags +qscale}. The -value is converted to QP units by dividing it by @code{FF_QP2LAMBDA}, -and used to set the quality value used by libfaac. A reasonable range -for the option value in QP units is [10-500], the higher the value the -higher the quality. - -@item q (@emph{-q}) -Enable VBR mode when set to a non-negative value, and set constant -quality value as a double floating point value in QP units. - -The value sets the quality value used by libfaac. A reasonable range -for the option value is [10-500], the higher the value the higher the -quality. - -This option is valid only using the @command{ffmpeg} command-line -tool. For library interface users, use @option{global_quality}. -@end table - -@subsection Examples - -@itemize -@item -Use @command{ffmpeg} to convert an audio file to ABR 128 kbps AAC in an M4A (MP4) -container: -@example -ffmpeg -i input.wav -codec:a libfaac -b:a 128k -output.m4a -@end example - -@item -Use @command{ffmpeg} to convert an audio file to VBR AAC, using the -LTP AAC profile: -@example -ffmpeg -i input.wav -c:a libfaac -profile:a aac_ltp -q:a 100 output.m4a -@end example -@end itemize - -@anchor{libfdk-aac-enc} -@section libfdk_aac - -libfdk-aac AAC (Advanced Audio Coding) encoder wrapper. - -The libfdk-aac library is based on the Fraunhofer FDK AAC code from -the Android project. - -Requires the presence of the libfdk-aac headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libfdk-aac}. The library is also incompatible with GPL, -so if you allow the use of GPL, you should configure with -@code{--enable-gpl --enable-nonfree --enable-libfdk-aac}. - -This encoder is considered to be of higher quality with respect to -both @ref{aacenc,,the native experimental FFmpeg AAC encoder} and -@ref{libfaac}. - -VBR encoding, enabled through the @option{vbr} or @option{flags -+qscale} options, is experimental and only works with some -combinations of parameters. - -For more information see the fdk-aac project at -@url{http://sourceforge.net/p/opencore-amr/fdk-aac/}. - -@subsection Options - -The following options are mapped on the shared FFmpeg codec options. - -@table @option -@item b -Set bit rate in bits/s. If the bitrate is not explicitly specified, it -is automatically set to a suitable value depending on the selected -profile. - -In case VBR mode is enabled the option is ignored. - -@item ar -Set audio sampling rate (in Hz). - -@item channels -Set the number of audio channels. - -@item flags +qscale -Enable fixed quality, VBR (Variable Bit Rate) mode. -Note that VBR is implicitly enabled when the @option{vbr} value is -positive. - -@item cutoff -Set cutoff frequency. If not specified (or explicitly set to 0) it -will use a value automatically computed by the library. Default value -is 0. - -@item profile -Set audio profile. - -The following profiles are recognized: -@table @samp -@item aac_low -Low Complexity AAC (LC) - -@item aac_he -High Efficiency AAC (HE-AAC) - -@item aac_he_v2 -High Efficiency AAC version 2 (HE-AACv2) - -@item aac_ld -Low Delay AAC (LD) - -@item aac_eld -Enhanced Low Delay AAC (ELD) -@end table - -If not specified it is set to @samp{aac_low}. -@end table - -The following are private options of the libfdk_aac encoder. - -@table @option -@item afterburner -Enable afterburner feature if set to 1, disabled if set to 0. This -improves the quality but also the required processing power. - -Default value is 1. - -@item eld_sbr -Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled -if set to 0. - -Default value is 0. - -@item signaling -Set SBR/PS signaling style. - -It can assume one of the following values: -@table @samp -@item default -choose signaling implicitly (explicit hierarchical by default, -implicit if global header is disabled) - -@item implicit -implicit backwards compatible signaling - -@item explicit_sbr -explicit SBR, implicit PS signaling - -@item explicit_hierarchical -explicit hierarchical signaling -@end table - -Default value is @samp{default}. - -@item latm -Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0. - -Default value is 0. - -@item header_period -Set StreamMuxConfig and PCE repetition period (in frames) for sending -in-band configuration buffers within LATM/LOAS transport layer. - -Must be a 16-bits non-negative integer. - -Default value is 0. - -@item vbr -Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty -good) and 5 is highest quality. A value of 0 will disable VBR, and CBR -(Constant Bit Rate) is enabled. - -Currently only the @samp{aac_low} profile supports VBR encoding. - -VBR modes 1-5 correspond to roughly the following average bit rates: - -@table @samp -@item 1 -32 kbps/channel -@item 2 -40 kbps/channel -@item 3 -48-56 kbps/channel -@item 4 -64 kbps/channel -@item 5 -about 80-96 kbps/channel -@end table - -Default value is 0. -@end table - -@subsection Examples - -@itemize -@item -Use @command{ffmpeg} to convert an audio file to VBR AAC in an M4A (MP4) -container: -@example -ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a -@end example - -@item -Use @command{ffmpeg} to convert an audio file to CBR 64k kbps AAC, using the -High-Efficiency AAC profile: -@example -ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a -@end example -@end itemize - -@anchor{libmp3lame} -@section libmp3lame - -LAME (Lame Ain't an MP3 Encoder) MP3 encoder wrapper. - -Requires the presence of the libmp3lame headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libmp3lame}. - -See @ref{libshine} for a fixed-point MP3 encoder, although with a -lower quality. - -@subsection Options - -The following options are supported by the libmp3lame wrapper. The -@command{lame}-equivalent of the options are listed in parentheses. - -@table @option -@item b (@emph{-b}) -Set bitrate expressed in bits/s for CBR or ABR. LAME @code{bitrate} is -expressed in kilobits/s. - -@item q (@emph{-V}) -Set constant quality setting for VBR. This option is valid only -using the @command{ffmpeg} command-line tool. For library interface -users, use @option{global_quality}. - -@item compression_level (@emph{-q}) -Set algorithm quality. Valid arguments are integers in the 0-9 range, -with 0 meaning highest quality but slowest, and 9 meaning fastest -while producing the worst quality. - -@item reservoir -Enable use of bit reservoir when set to 1. Default value is 1. LAME -has this enabled by default, but can be overriden by use -@option{--nores} option. - -@item joint_stereo (@emph{-m j}) -Enable the encoder to use (on a frame by frame basis) either L/R -stereo or mid/side stereo. Default value is 1. - -@item abr (@emph{--abr}) -Enable the encoder to use ABR when set to 1. The @command{lame} -@option{--abr} sets the target bitrate, while this options only -tells FFmpeg to use ABR still relies on @option{b} to set bitrate. - -@end table - -@section libopencore-amrnb - -OpenCORE Adaptive Multi-Rate Narrowband encoder. - -Requires the presence of the libopencore-amrnb headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libopencore-amrnb --enable-version3}. - -This is a mono-only encoder. Officially it only supports 8000Hz sample rate, -but you can override it by setting @option{strict} to @samp{unofficial} or -lower. - -@subsection Options - -@table @option - -@item b -Set bitrate in bits per second. Only the following bitrates are supported, -otherwise libavcodec will round to the nearest valid bitrate. - -@table @option -@item 4750 -@item 5150 -@item 5900 -@item 6700 -@item 7400 -@item 7950 -@item 10200 -@item 12200 -@end table - -@item dtx -Allow discontinuous transmission (generate comfort noise) when set to 1. The -default value is 0 (disabled). - -@end table - -@anchor{libshine} -@section libshine - -Shine Fixed-Point MP3 encoder wrapper. - -Shine is a fixed-point MP3 encoder. It has a far better performance on -platforms without an FPU, e.g. armel CPUs, and some phones and tablets. -However, as it is more targeted on performance than quality, it is not on par -with LAME and other production-grade encoders quality-wise. Also, according to -the project's homepage, this encoder may not be free of bugs as the code was -written a long time ago and the project was dead for at least 5 years. - -This encoder only supports stereo and mono input. This is also CBR-only. - -The original project (last updated in early 2007) is at -@url{http://sourceforge.net/projects/libshine-fxp/}. We only support the -updated fork by the Savonet/Liquidsoap project at @url{https://github.com/savonet/shine}. - -Requires the presence of the libshine headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libshine}. - -See also @ref{libmp3lame}. - -@subsection Options - -The following options are supported by the libshine wrapper. The -@command{shineenc}-equivalent of the options are listed in parentheses. - -@table @option -@item b (@emph{-b}) -Set bitrate expressed in bits/s for CBR. @command{shineenc} @option{-b} option -is expressed in kilobits/s. - -@end table - -@section libtwolame - -TwoLAME MP2 encoder wrapper. - -Requires the presence of the libtwolame headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libtwolame}. - -@subsection Options - -The following options are supported by the libtwolame wrapper. The -@command{twolame}-equivalent options follow the FFmpeg ones and are in -parentheses. - -@table @option -@item b (@emph{-b}) -Set bitrate expressed in bits/s for CBR. @command{twolame} @option{b} -option is expressed in kilobits/s. Default value is 128k. - -@item q (@emph{-V}) -Set quality for experimental VBR support. Maximum value range is -from -50 to 50, useful range is from -10 to 10. The higher the -value, the better the quality. This option is valid only using the -@command{ffmpeg} command-line tool. For library interface users, -use @option{global_quality}. - -@item mode (@emph{--mode}) -Set the mode of the resulting audio. Possible values: - -@table @samp -@item auto -Choose mode automatically based on the input. This is the default. -@item stereo -Stereo -@item joint_stereo -Joint stereo -@item dual_channel -Dual channel -@item mono -Mono -@end table - -@item psymodel (@emph{--psyc-mode}) -Set psychoacoustic model to use in encoding. The argument must be -an integer between -1 and 4, inclusive. The higher the value, the -better the quality. The default value is 3. - -@item energy_levels (@emph{--energy}) -Enable energy levels extensions when set to 1. The default value is -0 (disabled). - -@item error_protection (@emph{--protect}) -Enable CRC error protection when set to 1. The default value is 0 -(disabled). - -@item copyright (@emph{--copyright}) -Set MPEG audio copyright flag when set to 1. The default value is 0 -(disabled). - -@item original (@emph{--original}) -Set MPEG audio original flag when set to 1. The default value is 0 -(disabled). - -@end table - -@anchor{libvo-aacenc} -@section libvo-aacenc - -VisualOn AAC encoder. - -Requires the presence of the libvo-aacenc headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libvo-aacenc --enable-version3}. - -This encoder is considered to be worse than the -@ref{aacenc,,native experimental FFmpeg AAC encoder}, according to -multiple sources. - -@subsection Options - -The VisualOn AAC encoder only support encoding AAC-LC and up to 2 -channels. It is also CBR-only. - -@table @option - -@item b -Set bit rate in bits/s. - -@end table - -@section libvo-amrwbenc - -VisualOn Adaptive Multi-Rate Wideband encoder. - -Requires the presence of the libvo-amrwbenc headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libvo-amrwbenc --enable-version3}. - -This is a mono-only encoder. Officially it only supports 16000Hz sample -rate, but you can override it by setting @option{strict} to -@samp{unofficial} or lower. - -@subsection Options - -@table @option - -@item b -Set bitrate in bits/s. Only the following bitrates are supported, otherwise -libavcodec will round to the nearest valid bitrate. - -@table @samp -@item 6600 -@item 8850 -@item 12650 -@item 14250 -@item 15850 -@item 18250 -@item 19850 -@item 23050 -@item 23850 -@end table - -@item dtx -Allow discontinuous transmission (generate comfort noise) when set to 1. The -default value is 0 (disabled). - -@end table - -@section libopus - -libopus Opus Interactive Audio Codec encoder wrapper. - -Requires the presence of the libopus headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libopus}. - -@subsection Option Mapping - -Most libopus options are modeled after the @command{opusenc} utility from -opus-tools. The following is an option mapping chart describing options -supported by the libopus wrapper, and their @command{opusenc}-equivalent -in parentheses. - -@table @option - -@item b (@emph{bitrate}) -Set the bit rate in bits/s. FFmpeg's @option{b} option is -expressed in bits/s, while @command{opusenc}'s @option{bitrate} in -kilobits/s. - -@item vbr (@emph{vbr}, @emph{hard-cbr}, and @emph{cvbr}) -Set VBR mode. The FFmpeg @option{vbr} option has the following -valid arguments, with the their @command{opusenc} equivalent options -in parentheses: - -@table @samp -@item off (@emph{hard-cbr}) -Use constant bit rate encoding. - -@item on (@emph{vbr}) -Use variable bit rate encoding (the default). - -@item constrained (@emph{cvbr}) -Use constrained variable bit rate encoding. -@end table - -@item compression_level (@emph{comp}) -Set encoding algorithm complexity. Valid options are integers in -the 0-10 range. 0 gives the fastest encodes but lower quality, while 10 -gives the highest quality but slowest encoding. The default is 10. - -@item frame_duration (@emph{framesize}) -Set maximum frame size, or duration of a frame in milliseconds. The -argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller -frame sizes achieve lower latency but less quality at a given bitrate. -Sizes greater than 20ms are only interesting at fairly low bitrates. -The default is 20ms. - -@item packet_loss (@emph{expect-loss}) -Set expected packet loss percentage. The default is 0. - -@item application (N.A.) -Set intended application type. Valid options are listed below: - -@table @samp -@item voip -Favor improved speech intelligibility. -@item audio -Favor faithfulness to the input (the default). -@item lowdelay -Restrict to only the lowest delay modes. -@end table - -@item cutoff (N.A.) -Set cutoff bandwidth in Hz. The argument must be exactly one of the -following: 4000, 6000, 8000, 12000, or 20000, corresponding to -narrowband, mediumband, wideband, super wideband, and fullband -respectively. The default is 0 (cutoff disabled). - -@end table - -@section libvorbis - -libvorbis encoder wrapper. - -Requires the presence of the libvorbisenc headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libvorbis}. - -@subsection Options - -The following options are supported by the libvorbis wrapper. The -@command{oggenc}-equivalent of the options are listed in parentheses. - -To get a more accurate and extensive documentation of the libvorbis -options, consult the libvorbisenc's and @command{oggenc}'s documentations. -See @url{http://xiph.org/vorbis/}, -@url{http://wiki.xiph.org/Vorbis-tools}, and oggenc(1). - -@table @option -@item b (@emph{-b}) -Set bitrate expressed in bits/s for ABR. @command{oggenc} @option{-b} is -expressed in kilobits/s. - -@item q (@emph{-q}) -Set constant quality setting for VBR. The value should be a float -number in the range of -1.0 to 10.0. The higher the value, the better -the quality. The default value is @samp{3.0}. - -This option is valid only using the @command{ffmpeg} command-line tool. -For library interface users, use @option{global_quality}. - -@item cutoff (@emph{--advanced-encode-option lowpass_frequency=N}) -Set cutoff bandwidth in Hz, a value of 0 disables cutoff. @command{oggenc}'s -related option is expressed in kHz. The default value is @samp{0} (cutoff -disabled). - -@item minrate (@emph{-m}) -Set minimum bitrate expressed in bits/s. @command{oggenc} @option{-m} is -expressed in kilobits/s. - -@item maxrate (@emph{-M}) -Set maximum bitrate expressed in bits/s. @command{oggenc} @option{-M} is -expressed in kilobits/s. This only has effect on ABR mode. - -@item iblock (@emph{--advanced-encode-option impulse_noisetune=N}) -Set noise floor bias for impulse blocks. The value is a float number from --15.0 to 0.0. A negative bias instructs the encoder to pay special attention -to the crispness of transients in the encoded audio. The tradeoff for better -transient response is a higher bitrate. - -@end table - -@section libwavpack - -A wrapper providing WavPack encoding through libwavpack. - -Only lossless mode using 32-bit integer samples is supported currently. -The @option{compression_level} option can be used to control speed vs. -compression tradeoff, with the values mapped to libwavpack as follows: - -@table @option - -@item 0 -Fast mode - corresponding to the wavpack @option{-f} option. - -@item 1 -Normal (default) settings. - -@item 2 -High quality - corresponding to the wavpack @option{-h} option. - -@item 3 -Very high quality - corresponding to the wavpack @option{-hh} option. - -@item 4-8 -Same as 3, but with extra processing enabled - corresponding to the wavpack -@option{-x} option. I.e. 4 is the same as @option{-x2} and 8 is the same as -@option{-x6}. - -@end table - -@c man end AUDIO ENCODERS - -@chapter Video Encoders -@c man begin VIDEO ENCODERS - -A description of some of the currently available video encoders -follows. - -@section libtheora - -libtheora Theora encoder wrapper. - -Requires the presence of the libtheora headers and library during -configuration. You need to explicitly configure the build with -@code{--enable-libtheora}. - -For more informations about the libtheora project see -@url{http://www.theora.org/}. - -@subsection Options - -The following global options are mapped to internal libtheora options -which affect the quality and the bitrate of the encoded stream. - -@table @option -@item b -Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode. In -case VBR (Variable Bit Rate) mode is enabled this option is ignored. - -@item flags -Used to enable constant quality mode (VBR) encoding through the -@option{qscale} flag, and to enable the @code{pass1} and @code{pass2} -modes. - -@item g -Set the GOP size. - -@item global_quality -Set the global quality as an integer in lambda units. - -Only relevant when VBR mode is enabled with @code{flags +qscale}. The -value is converted to QP units by dividing it by @code{FF_QP2LAMBDA}, -clipped in the [0 - 10] range, and then multiplied by 6.3 to get a -value in the native libtheora range [0-63]. A higher value corresponds -to a higher quality. - -@item q -Enable VBR mode when set to a non-negative value, and set constant -quality value as a double floating point value in QP units. - -The value is clipped in the [0-10] range, and then multiplied by 6.3 -to get a value in the native libtheora range [0-63]. - -This option is valid only using the @command{ffmpeg} command-line -tool. For library interface users, use @option{global_quality}. -@end table - -@subsection Examples - -@itemize -@item -Set maximum constant quality (VBR) encoding with @command{ffmpeg}: -@example -ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg -@end example - -@item -Use @command{ffmpeg} to convert a CBR 1000 kbps Theora video stream: -@example -ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg -@end example -@end itemize - -@section libvpx - -VP8 format supported through libvpx. - -Requires the presence of the libvpx headers and library during configuration. -You need to explicitly configure the build with @code{--enable-libvpx}. - -@subsection Options - -Mapping from FFmpeg to libvpx options with conversion notes in parentheses. - -@table @option - -@item threads -g_threads - -@item profile -g_profile - -@item vb -rc_target_bitrate - -@item g -kf_max_dist - -@item keyint_min -kf_min_dist - -@item qmin -rc_min_quantizer - -@item qmax -rc_max_quantizer - -@item bufsize, vb -rc_buf_sz -@code{(bufsize * 1000 / vb)} - -rc_buf_optimal_sz -@code{(bufsize * 1000 / vb * 5 / 6)} - -@item rc_init_occupancy, vb -rc_buf_initial_sz -@code{(rc_init_occupancy * 1000 / vb)} - -@item rc_buffer_aggressivity -rc_undershoot_pct - -@item skip_threshold -rc_dropframe_thresh - -@item qcomp -rc_2pass_vbr_bias_pct - -@item maxrate, vb -rc_2pass_vbr_maxsection_pct -@code{(maxrate * 100 / vb)} - -@item minrate, vb -rc_2pass_vbr_minsection_pct -@code{(minrate * 100 / vb)} - -@item minrate, maxrate, vb -@code{VPX_CBR} -@code{(minrate == maxrate == vb)} - -@item crf -@code{VPX_CQ}, @code{VP8E_SET_CQ_LEVEL} - -@item quality -@table @option -@item @var{best} -@code{VPX_DL_BEST_QUALITY} -@item @var{good} -@code{VPX_DL_GOOD_QUALITY} -@item @var{realtime} -@code{VPX_DL_REALTIME} -@end table - -@item speed -@code{VP8E_SET_CPUUSED} - -@item nr -@code{VP8E_SET_NOISE_SENSITIVITY} - -@item mb_threshold -@code{VP8E_SET_STATIC_THRESHOLD} - -@item slices -@code{VP8E_SET_TOKEN_PARTITIONS} - -@item max-intra-rate -@code{VP8E_SET_MAX_INTRA_BITRATE_PCT} - -@item force_key_frames -@code{VPX_EFLAG_FORCE_KF} - -@item Alternate reference frame related -@table @option -@item vp8flags altref -@code{VP8E_SET_ENABLEAUTOALTREF} -@item @var{arnr_max_frames} -@code{VP8E_SET_ARNR_MAXFRAMES} -@item @var{arnr_type} -@code{VP8E_SET_ARNR_TYPE} -@item @var{arnr_strength} -@code{VP8E_SET_ARNR_STRENGTH} -@item @var{rc_lookahead} -g_lag_in_frames -@end table - -@item vp8flags error_resilient -g_error_resilient - -@end table - -For more information about libvpx see: -@url{http://www.webmproject.org/} - - -@section libwebp - -libwebp WebP Image encoder wrapper - -libwebp is Google's official encoder for WebP images. It can encode in either -lossy or lossless mode. Lossy images are essentially a wrapper around a VP8 -frame. Lossless images are a separate codec developed by Google. - -@subsection Pixel Format - -Currently, libwebp only supports YUV420 for lossy and RGB for lossless due -to limitations of the format and libwebp. Alpha is supported for either mode. -Because of API limitations, if RGB is passed in when encoding lossy or YUV is -passed in for encoding lossless, the pixel format will automatically be -converted using functions from libwebp. This is not ideal and is done only for -convenience. - -@subsection Options - -@table @option - -@item -lossless @var{boolean} -Enables/Disables use of lossless mode. Default is 0. - -@item -compression_level @var{integer} -For lossy, this is a quality/speed tradeoff. Higher values give better quality -for a given size at the cost of increased encoding time. For lossless, this is -a size/speed tradeoff. Higher values give smaller size at the cost of increased -encoding time. More specifically, it controls the number of extra algorithms -and compression tools used, and varies the combination of these tools. This -maps to the @var{method} option in libwebp. The valid range is 0 to 6. -Default is 4. - -@item -qscale @var{float} -For lossy encoding, this controls image quality, 0 to 100. For lossless -encoding, this controls the effort and time spent at compressing more. The -default value is 75. Note that for usage via libavcodec, this option is called -@var{global_quality} and must be multiplied by @var{FF_QP2LAMBDA}. - -@item -preset @var{type} -Configuration preset. This does some automatic settings based on the general -type of the image. -@table @option -@item none -Do not use a preset. -@item default -Use the encoder default. -@item picture -Digital picture, like portrait, inner shot -@item photo -Outdoor photograph, with natural lighting -@item drawing -Hand or line drawing, with high-contrast details -@item icon -Small-sized colorful images -@item text -Text-like -@end table - -@end table - -@section libx264 - -x264 H.264/MPEG-4 AVC encoder wrapper. - -This encoder requires the presence of the libx264 headers and library -during configuration. You need to explicitly configure the build with -@code{--enable-libx264}. - -libx264 supports an impressive number of features, including 8x8 and -4x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC -entropy coding, interlacing (MBAFF), lossless mode, psy optimizations -for detail retention (adaptive quantization, psy-RD, psy-trellis). - -Many libx264 encoder options are mapped to FFmpeg global codec -options, while unique encoder options are provided through private -options. Additionally the @option{x264opts} and @option{x264-params} -private options allows to pass a list of key=value tuples as accepted -by the libx264 @code{x264_param_parse} function. - -The x264 project website is at -@url{http://www.videolan.org/developers/x264.html}. - -@subsection Options - -The following options are supported by the libx264 wrapper. The -@command{x264}-equivalent options or values are listed in parentheses -for easy migration. - -To reduce the duplication of documentation, only the private options -and some others requiring special attention are documented here. For -the documentation of the undocumented generic options, see -@ref{codec-options,,the Codec Options chapter}. - -To get a more accurate and extensive documentation of the libx264 -options, invoke the command @command{x264 --full-help} or consult -the libx264 documentation. - -@table @option -@item b (@emph{bitrate}) -Set bitrate in bits/s. Note that FFmpeg's @option{b} option is -expressed in bits/s, while @command{x264}'s @option{bitrate} is in -kilobits/s. - -@item bf (@emph{bframes}) - -@item g (@emph{keyint}) - -@item qmax (@emph{qpmax}) - -@item qmin (@emph{qpmin}) - -@item qdiff (@emph{qpstep}) - -@item qblur (@emph{qblur}) - -@item qcomp (@emph{qcomp}) - -@item refs (@emph{ref}) - -@item sc_threshold (@emph{scenecut}) - -@item trellis (@emph{trellis}) - -@item nr (@emph{nr}) - -@item me_range (@emph{merange}) - -@item me_method (@emph{me}) -Set motion estimation method. Possible values in the decreasing order -of speed: - -@table @samp -@item dia (@emph{dia}) -@item epzs (@emph{dia}) -Diamond search with radius 1 (fastest). @samp{epzs} is an alias for -@samp{dia}. -@item hex (@emph{hex}) -Hexagonal search with radius 2. -@item umh (@emph{umh}) -Uneven multi-hexagon search. -@item esa (@emph{esa}) -Exhaustive search. -@item tesa (@emph{tesa}) -Hadamard exhaustive search (slowest). -@end table - -@item subq (@emph{subme}) - -@item b_strategy (@emph{b-adapt}) - -@item keyint_min (@emph{min-keyint}) - -@item coder -Set entropy encoder. Possible values: - -@table @samp -@item ac -Enable CABAC. - -@item vlc -Enable CAVLC and disable CABAC. It generates the same effect as -@command{x264}'s @option{--no-cabac} option. -@end table - -@item cmp -Set full pixel motion estimation comparation algorithm. Possible values: - -@table @samp -@item chroma -Enable chroma in motion estimation. - -@item sad -Ignore chroma in motion estimation. It generates the same effect as -@command{x264}'s @option{--no-chroma-me} option. -@end table - -@item threads (@emph{threads}) - -@item thread_type -Set multithreading technique. Possible values: - -@table @samp -@item slice -Slice-based multithreading. It generates the same effect as -@command{x264}'s @option{--sliced-threads} option. -@item frame -Frame-based multithreading. -@end table - -@item flags -Set encoding flags. It can be used to disable closed GOP and enable -open GOP by setting it to @code{-cgop}. The result is similar to -the behavior of @command{x264}'s @option{--open-gop} option. - -@item rc_init_occupancy (@emph{vbv-init}) - -@item preset (@emph{preset}) -Set the encoding preset. - -@item tune (@emph{tune}) -Set tuning of the encoding params. - -@item profile (@emph{profile}) -Set profile restrictions. - -@item fastfirstpass -Enable fast settings when encoding first pass, when set to 1. When set -to 0, it has the same effect of @command{x264}'s -@option{--slow-firstpass} option. - -@item crf (@emph{crf}) -Set the quality for constant quality mode. - -@item crf_max (@emph{crf-max}) -In CRF mode, prevents VBV from lowering quality beyond this point. - -@item qp (@emph{qp}) -Set constant quantization rate control method parameter. - -@item aq-mode (@emph{aq-mode}) -Set AQ method. Possible values: - -@table @samp -@item none (@emph{0}) -Disabled. - -@item variance (@emph{1}) -Variance AQ (complexity mask). - -@item autovariance (@emph{2}) -Auto-variance AQ (experimental). -@end table - -@item aq-strength (@emph{aq-strength}) -Set AQ strength, reduce blocking and blurring in flat and textured areas. - -@item psy -Use psychovisual optimizations when set to 1. When set to 0, it has the -same effect as @command{x264}'s @option{--no-psy} option. - -@item psy-rd (@emph{psy-rd}) -Set strength of psychovisual optimization, in -@var{psy-rd}:@var{psy-trellis} format. - -@item rc-lookahead (@emph{rc-lookahead}) -Set number of frames to look ahead for frametype and ratecontrol. - -@item weightb -Enable weighted prediction for B-frames when set to 1. When set to 0, -it has the same effect as @command{x264}'s @option{--no-weightb} option. - -@item weightp (@emph{weightp}) -Set weighted prediction method for P-frames. Possible values: - -@table @samp -@item none (@emph{0}) -Disabled -@item simple (@emph{1}) -Enable only weighted refs -@item smart (@emph{2}) -Enable both weighted refs and duplicates -@end table - -@item ssim (@emph{ssim}) -Enable calculation and printing SSIM stats after the encoding. - -@item intra-refresh (@emph{intra-refresh}) -Enable the use of Periodic Intra Refresh instead of IDR frames when set -to 1. - -@item bluray-compat (@emph{bluray-compat}) -Configure the encoder to be compatible with the bluray standard. -It is a shorthand for setting "bluray-compat=1 force-cfr=1". - -@item b-bias (@emph{b-bias}) -Set the influence on how often B-frames are used. - -@item b-pyramid (@emph{b-pyramid}) -Set method for keeping of some B-frames as references. Possible values: - -@table @samp -@item none (@emph{none}) -Disabled. -@item strict (@emph{strict}) -Strictly hierarchical pyramid. -@item normal (@emph{normal}) -Non-strict (not Blu-ray compatible). -@end table - -@item mixed-refs -Enable the use of one reference per partition, as opposed to one -reference per macroblock when set to 1. When set to 0, it has the -same effect as @command{x264}'s @option{--no-mixed-refs} option. - -@item 8x8dct -Enable adaptive spatial transform (high profile 8x8 transform) -when set to 1. When set to 0, it has the same effect as -@command{x264}'s @option{--no-8x8dct} option. - -@item fast-pskip -Enable early SKIP detection on P-frames when set to 1. When set -to 0, it has the same effect as @command{x264}'s -@option{--no-fast-pskip} option. - -@item aud (@emph{aud}) -Enable use of access unit delimiters when set to 1. - -@item mbtree -Enable use macroblock tree ratecontrol when set to 1. When set -to 0, it has the same effect as @command{x264}'s -@option{--no-mbtree} option. - -@item deblock (@emph{deblock}) -Set loop filter parameters, in @var{alpha}:@var{beta} form. - -@item cplxblur (@emph{cplxblur}) -Set fluctuations reduction in QP (before curve compression). - -@item partitions (@emph{partitions}) -Set partitions to consider as a comma-separated list of. Possible -values in the list: - -@table @samp -@item p8x8 -8x8 P-frame partition. -@item p4x4 -4x4 P-frame partition. -@item b8x8 -4x4 B-frame partition. -@item i8x8 -8x8 I-frame partition. -@item i4x4 -4x4 I-frame partition. -(Enabling @samp{p4x4} requires @samp{p8x8} to be enabled. Enabling -@samp{i8x8} requires adaptive spatial transform (@option{8x8dct} -option) to be enabled.) -@item none (@emph{none}) -Do not consider any partitions. -@item all (@emph{all}) -Consider every partition. -@end table - -@item direct-pred (@emph{direct}) -Set direct MV prediction mode. Possible values: - -@table @samp -@item none (@emph{none}) -Disable MV prediction. -@item spatial (@emph{spatial}) -Enable spatial predicting. -@item temporal (@emph{temporal}) -Enable temporal predicting. -@item auto (@emph{auto}) -Automatically decided. -@end table - -@item slice-max-size (@emph{slice-max-size}) -Set the limit of the size of each slice in bytes. If not specified -but RTP payload size (@option{ps}) is specified, that is used. - -@item stats (@emph{stats}) -Set the file name for multi-pass stats. - -@item nal-hrd (@emph{nal-hrd}) -Set signal HRD information (requires @option{vbv-bufsize} to be set). -Possible values: - -@table @samp -@item none (@emph{none}) -Disable HRD information signaling. -@item vbr (@emph{vbr}) -Variable bit rate. -@item cbr (@emph{cbr}) -Constant bit rate (not allowed in MP4 container). -@end table - -@item x264opts (N.A.) -Set any x264 option, see @command{x264 --fullhelp} for a list. - -Argument is a list of @var{key}=@var{value} couples separated by -":". In @var{filter} and @var{psy-rd} options that use ":" as a separator -themselves, use "," instead. They accept it as well since long ago but this -is kept undocumented for some reason. - -For example to specify libx264 encoding options with @command{ffmpeg}: -@example -ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv -@end example - -@item x264-params (N.A.) -Override the x264 configuration using a :-separated list of key=value -parameters. - -This option is functionally the same as the @option{x264opts}, but is -duplicated for compability with the Libav fork. - -For example to specify libx264 encoding options with @command{ffmpeg}: -@example -ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\ -cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\ -no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT -@end example -@end table - -Encoding ffpresets for common usages are provided so they can be used with the -general presets system (e.g. passing the @option{pre} option). - -@section libxvid - -Xvid MPEG-4 Part 2 encoder wrapper. - -This encoder requires the presence of the libxvidcore headers and library -during configuration. You need to explicitly configure the build with -@code{--enable-libxvid --enable-gpl}. - -The native @code{mpeg4} encoder supports the MPEG-4 Part 2 format, so -users can encode to this format without this library. - -@subsection Options - -The following options are supported by the libxvid wrapper. Some of -the following options are listed but are not documented, and -correspond to shared codec options. See @ref{codec-options,,the Codec -Options chapter} for their documentation. The other shared options -which are not listed have no effect for the libxvid encoder. - -@table @option -@item b - -@item g - -@item qmin - -@item qmax - -@item mpeg_quant - -@item threads - -@item bf - -@item b_qfactor - -@item b_qoffset - -@item flags -Set specific encoding flags. Possible values: - -@table @samp - -@item mv4 -Use four motion vector by macroblock. - -@item aic -Enable high quality AC prediction. - -@item gray -Only encode grayscale. - -@item gmc -Enable the use of global motion compensation (GMC). - -@item qpel -Enable quarter-pixel motion compensation. - -@item cgop -Enable closed GOP. - -@item global_header -Place global headers in extradata instead of every keyframe. - -@end table - -@item trellis - -@item me_method -Set motion estimation method. Possible values in decreasing order of -speed and increasing order of quality: - -@table @samp -@item zero -Use no motion estimation (default). - -@item phods -@item x1 -@item log -Enable advanced diamond zonal search for 16x16 blocks and half-pixel -refinement for 16x16 blocks. @samp{x1} and @samp{log} are aliases for -@samp{phods}. - -@item epzs -Enable all of the things described above, plus advanced diamond zonal -search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion -estimation on chroma planes. - -@item full -Enable all of the things described above, plus extended 16x16 and 8x8 -blocks search. -@end table - -@item mbd -Set macroblock decision algorithm. Possible values in the increasing -order of quality: - -@table @samp -@item simple -Use macroblock comparing function algorithm (default). - -@item bits -Enable rate distortion-based half pixel and quarter pixel refinement for -16x16 blocks. - -@item rd -Enable all of the things described above, plus rate distortion-based -half pixel and quarter pixel refinement for 8x8 blocks, and rate -distortion-based search using square pattern. -@end table - -@item lumi_aq -Enable lumi masking adaptive quantization when set to 1. Default is 0 -(disabled). - -@item variance_aq -Enable variance adaptive quantization when set to 1. Default is 0 -(disabled). - -When combined with @option{lumi_aq}, the resulting quality will not -be better than any of the two specified individually. In other -words, the resulting quality will be the worse one of the two -effects. - -@item ssim -Set structural similarity (SSIM) displaying method. Possible values: - -@table @samp -@item off -Disable displaying of SSIM information. - -@item avg -Output average SSIM at the end of encoding to stdout. The format of -showing the average SSIM is: - -@example -Average SSIM: %f -@end example - -For users who are not familiar with C, %f means a float number, or -a decimal (e.g. 0.939232). - -@item frame -Output both per-frame SSIM data during encoding and average SSIM at -the end of encoding to stdout. The format of per-frame information -is: - -@example - SSIM: avg: %1.3f min: %1.3f max: %1.3f -@end example - -For users who are not familiar with C, %1.3f means a float number -rounded to 3 digits after the dot (e.g. 0.932). - -@end table - -@item ssim_acc -Set SSIM accuracy. Valid options are integers within the range of -0-4, while 0 gives the most accurate result and 4 computes the -fastest. - -@end table - -@section png - -PNG image encoder. - -@subsection Private options - -@table @option -@item dpi @var{integer} -Set physical density of pixels, in dots per inch, unset by default -@item dpm @var{integer} -Set physical density of pixels, in dots per meter, unset by default -@end table - -@section ProRes - -Apple ProRes encoder. - -FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder. -The used encoder can be choosen with the @code{-vcodec} option. - -@subsection Private Options for prores-ks - -@table @option -@item profile @var{integer} -Select the ProRes profile to encode -@table @samp -@item proxy -@item lt -@item standard -@item hq -@item 4444 -@end table - -@item quant_mat @var{integer} -Select quantization matrix. -@table @samp -@item auto -@item default -@item proxy -@item lt -@item standard -@item hq -@end table -If set to @var{auto}, the matrix matching the profile will be picked. -If not set, the matrix providing the highest quality, @var{default}, will be -picked. - -@item bits_per_mb @var{integer} -How many bits to allot for coding one macroblock. Different profiles use -between 200 and 2400 bits per macroblock, the maximum is 8000. - -@item mbs_per_slice @var{integer} -Number of macroblocks in each slice (1-8); the default value (8) -should be good in almost all situations. - -@item vendor @var{string} -Override the 4-byte vendor ID. -A custom vendor ID like @var{apl0} would claim the stream was produced by -the Apple encoder. - -@item alpha_bits @var{integer} -Specify number of bits for alpha component. -Possible values are @var{0}, @var{8} and @var{16}. -Use @var{0} to disable alpha plane coding. - -@end table - -@subsection Speed considerations - -In the default mode of operation the encoder has to honor frame constraints -(i.e. not produc frames with size bigger than requested) while still making -output picture as good as possible. -A frame containing a lot of small details is harder to compress and the encoder -would spend more time searching for appropriate quantizers for each slice. - -Setting a higher @option{bits_per_mb} limit will improve the speed. - -For the fastest encoding speed set the @option{qscale} parameter (4 is the -recommended value) and do not set a size constraint. - -@c man end VIDEO ENCODERS |
