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