Skip to content
Snippets Groups Projects
encoders.texi 67 KiB
Newer Older
  • Learn to ignore specific revisions
  • @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{-encoders} 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
    
    Lou Logan's avatar
    Lou Logan committed
    described 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.
    
    
    
    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
    
    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
    
    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{flac}
    @section flac
    
    FLAC (Free Lossless Audio Codec) Encoder
    
    @subsection Options
    
    The following options are supported by FFmpeg's flac encoder.
    
    @table @option
    @item compression_level
    Sets the compression level, which chooses defaults for many other options
    if they are not set explicitly.
    
    @item frame_size
    Sets the size of the frames in samples per channel.
    
    @item lpc_coeff_precision
    Sets the LPC coefficient precision, valid values are from 1 to 15, 15 is the
    default.
    
    @item lpc_type
    Sets the first stage LPC algorithm
    @table @samp
    @item none
    LPC is not used
    
    @item fixed
    fixed LPC coefficients
    
    @item levinson
    
    @item cholesky
    @end table
    
    @item lpc_passes
    Number of passes to use for Cholesky factorization during LPC analysis
    
    @item min_partition_order
    The minimum partition order
    
    @item max_partition_order
    The maximum partition order
    
    @item prediction_order_method
    @table @samp
    @item estimation
    @item 2level
    @item 4level
    @item 8level
    @item search
    Bruteforce search
    @item log
    @end table
    
    @item ch_mode
    Channel mode
    @table @samp
    @item auto
    The mode is chosen automatically for each frame
    @item indep
    Chanels are independently coded
    @item left_side
    @item right_side
    @item mid_side
    @end table
    
    @item exact_rice_parameters
    Chooses if rice parameters are calculated exactly or approximately.
    if set to 1 then they are chosen exactly, which slows the code down slightly and
    improves compression slightly.
    
    @item multi_dim_quant
    Multi Dimensional Quantization. If set to 1 then a 2nd stage LPC algorithm is
    applied after the first stage to finetune the coefficients. This is quite slow
    and slightly improves compression.
    
    @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
    
    VBR encoding, enabled through the @option{vbr} or @option{flags
    +qscale} options, is experimental and only works with some
    combinations of parameters.
    
    
    Support for encoding 7.1 audio is only available with libfdk-aac 0.1.3 or
    higher.
    
    
    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}
    
    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 overridden 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
    
    
    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}.
    
    
    
    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}.