1@chapter Encoders 2@c man begin ENCODERS 3 4Encoders are configured elements in FFmpeg which allow the encoding of 5multimedia streams. 6 7When you configure your FFmpeg build, all the supported native encoders 8are enabled by default. Encoders requiring an external library must be enabled 9manually via the corresponding @code{--enable-lib} option. You can list all 10available encoders using the configure option @code{--list-encoders}. 11 12You can disable all the encoders with the configure option 13@code{--disable-encoders} and selectively enable / disable single encoders 14with the options @code{--enable-encoder=@var{ENCODER}} / 15@code{--disable-encoder=@var{ENCODER}}. 16 17The option @code{-encoders} of the ff* tools will display the list of 18enabled encoders. 19 20@c man end ENCODERS 21 22@chapter Audio Encoders 23@c man begin AUDIO ENCODERS 24 25A description of some of the currently available audio encoders 26follows. 27 28@anchor{aacenc} 29@section aac 30 31Advanced Audio Coding (AAC) encoder. 32 33This encoder is the default AAC encoder, natively implemented into FFmpeg. 34 35@subsection Options 36 37@table @option 38@item b 39Set bit rate in bits/s. Setting this automatically activates constant bit rate 40(CBR) mode. If this option is unspecified it is set to 128kbps. 41 42@item q 43Set quality for variable bit rate (VBR) mode. This option is valid only using 44the @command{ffmpeg} command-line tool. For library interface users, use 45@option{global_quality}. 46 47@item cutoff 48Set cutoff frequency. If unspecified will allow the encoder to dynamically 49adjust the cutoff to improve clarity on low bitrates. 50 51@item aac_coder 52Set AAC encoder coding method. Possible values: 53 54@table @samp 55@item twoloop 56Two loop searching (TLS) method. 57 58This method first sets quantizers depending on band thresholds and then tries 59to find an optimal combination by adding or subtracting a specific value from 60all quantizers and adjusting some individual quantizer a little. Will tune 61itself based on whether @option{aac_is}, @option{aac_ms} and @option{aac_pns} 62are enabled. 63 64@item anmr 65Average noise to mask ratio (ANMR) trellis-based solution. 66 67This is an experimental coder which currently produces a lower quality, is more 68unstable and is slower than the default twoloop coder but has potential. 69Currently has no support for the @option{aac_is} or @option{aac_pns} options. 70Not currently recommended. 71 72@item fast 73Constant quantizer method. 74 75Uses a cheaper version of twoloop algorithm that doesn't try to do as many 76clever adjustments. Worse with low bitrates (less than 64kbps), but is better 77and much faster at higher bitrates. 78This is the default choice for a coder 79 80@end table 81 82@item aac_ms 83Sets mid/side coding mode. The default value of "auto" will automatically use 84M/S with bands which will benefit from such coding. Can be forced for all bands 85using the value "enable", which is mainly useful for debugging or disabled using 86"disable". 87 88@item aac_is 89Sets intensity stereo coding tool usage. By default, it's enabled and will 90automatically toggle IS for similar pairs of stereo bands if it's beneficial. 91Can be disabled for debugging by setting the value to "disable". 92 93@item aac_pns 94Uses perceptual noise substitution to replace low entropy high frequency bands 95with imperceptible white noise during the decoding process. By default, it's 96enabled, but can be disabled for debugging purposes by using "disable". 97 98@item aac_tns 99Enables the use of a multitap FIR filter which spans through the high frequency 100bands to hide quantization noise during the encoding process and is reverted 101by the decoder. As well as decreasing unpleasant artifacts in the high range 102this also reduces the entropy in the high bands and allows for more bits to 103be used by the mid-low bands. By default it's enabled but can be disabled for 104debugging by setting the option to "disable". 105 106@item aac_ltp 107Enables the use of the long term prediction extension which increases coding 108efficiency in very low bandwidth situations such as encoding of voice or 109solo piano music by extending constant harmonic peaks in bands throughout 110frames. This option is implied by profile:a aac_low and is incompatible with 111aac_pred. Use in conjunction with @option{-ar} to decrease the samplerate. 112 113@item aac_pred 114Enables the use of a more traditional style of prediction where the spectral 115coefficients transmitted are replaced by the difference of the current 116coefficients minus the previous "predicted" coefficients. In theory and sometimes 117in practice this can improve quality for low to mid bitrate audio. 118This option implies the aac_main profile and is incompatible with aac_ltp. 119 120@item profile 121Sets the encoding profile, possible values: 122 123@table @samp 124@item aac_low 125The default, AAC "Low-complexity" profile. Is the most compatible and produces 126decent quality. 127 128@item mpeg2_aac_low 129Equivalent to @code{-profile:a aac_low -aac_pns 0}. PNS was introduced with the 130MPEG4 specifications. 131 132@item aac_ltp 133Long term prediction profile, is enabled by and will enable the @option{aac_ltp} 134option. Introduced in MPEG4. 135 136@item aac_main 137Main-type prediction profile, is enabled by and will enable the @option{aac_pred} 138option. Introduced in MPEG2. 139 140@end table 141If this option is unspecified it is set to @samp{aac_low}. 142@end table 143 144@section ac3 and ac3_fixed 145 146AC-3 audio encoders. 147 148These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as 149the undocumented RealAudio 3 (a.k.a. dnet). 150 151The @var{ac3} encoder uses floating-point math, while the @var{ac3_fixed} 152encoder only uses fixed-point integer math. This does not mean that one is 153always faster, just that one or the other may be better suited to a 154particular system. The floating-point encoder will generally produce better 155quality audio for a given bitrate. The @var{ac3_fixed} encoder is not the 156default codec for any of the output formats, so it must be specified explicitly 157using the option @code{-acodec ac3_fixed} in order to use it. 158 159@subsection AC-3 Metadata 160 161The AC-3 metadata options are used to set parameters that describe the audio, 162but in most cases do not affect the audio encoding itself. Some of the options 163do directly affect or influence the decoding and playback of the resulting 164bitstream, while others are just for informational purposes. A few of the 165options will add bits to the output stream that could otherwise be used for 166audio data, and will thus affect the quality of the output. Those will be 167indicated accordingly with a note in the option list below. 168 169These parameters are described in detail in several publicly-available 170documents. 171@itemize 172@item @uref{http://www.atsc.org/cms/standards/a_52-2010.pdf,A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard} 173@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} 174@item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf,Dolby Metadata Guide} 175@item @uref{http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf,Dolby Digital Professional Encoding Guidelines} 176@end itemize 177 178@subsubsection Metadata Control Options 179 180@table @option 181 182@item -per_frame_metadata @var{boolean} 183Allow Per-Frame Metadata. Specifies if the encoder should check for changing 184metadata for each frame. 185@table @option 186@item 0 187The metadata values set at initialization will be used for every frame in the 188stream. (default) 189@item 1 190Metadata values can be changed before encoding each frame. 191@end table 192 193@end table 194 195@subsubsection Downmix Levels 196 197@table @option 198 199@item -center_mixlev @var{level} 200Center Mix Level. The amount of gain the decoder should apply to the center 201channel when downmixing to stereo. This field will only be written to the 202bitstream if a center channel is present. The value is specified as a scale 203factor. There are 3 valid values: 204@table @option 205@item 0.707 206Apply -3dB gain 207@item 0.595 208Apply -4.5dB gain (default) 209@item 0.500 210Apply -6dB gain 211@end table 212 213@item -surround_mixlev @var{level} 214Surround Mix Level. The amount of gain the decoder should apply to the surround 215channel(s) when downmixing to stereo. This field will only be written to the 216bitstream if one or more surround channels are present. The value is specified 217as a scale factor. There are 3 valid values: 218@table @option 219@item 0.707 220Apply -3dB gain 221@item 0.500 222Apply -6dB gain (default) 223@item 0.000 224Silence Surround Channel(s) 225@end table 226 227@end table 228 229@subsubsection Audio Production Information 230Audio Production Information is optional information describing the mixing 231environment. Either none or both of the fields are written to the bitstream. 232 233@table @option 234 235@item -mixing_level @var{number} 236Mixing Level. Specifies peak sound pressure level (SPL) in the production 237environment when the mix was mastered. Valid values are 80 to 111, or -1 for 238unknown or not indicated. The default value is -1, but that value cannot be 239used if the Audio Production Information is written to the bitstream. Therefore, 240if the @code{room_type} option is not the default value, the @code{mixing_level} 241option must not be -1. 242 243@item -room_type @var{type} 244Room Type. Describes the equalization used during the final mixing session at 245the studio or on the dubbing stage. A large room is a dubbing stage with the 246industry standard X-curve equalization; a small room has flat equalization. 247This field will not be written to the bitstream if both the @code{mixing_level} 248option and the @code{room_type} option have the default values. 249@table @option 250@item 0 251@itemx notindicated 252Not Indicated (default) 253@item 1 254@itemx large 255Large Room 256@item 2 257@itemx small 258Small Room 259@end table 260 261@end table 262 263@subsubsection Other Metadata Options 264 265@table @option 266 267@item -copyright @var{boolean} 268Copyright Indicator. Specifies whether a copyright exists for this audio. 269@table @option 270@item 0 271@itemx off 272No Copyright Exists (default) 273@item 1 274@itemx on 275Copyright Exists 276@end table 277 278@item -dialnorm @var{value} 279Dialogue Normalization. Indicates how far the average dialogue level of the 280program is below digital 100% full scale (0 dBFS). This parameter determines a 281level shift during audio reproduction that sets the average volume of the 282dialogue to a preset level. The goal is to match volume level between program 283sources. A value of -31dB will result in no volume level change, relative to 284the source volume, during audio reproduction. Valid values are whole numbers in 285the range -31 to -1, with -31 being the default. 286 287@item -dsur_mode @var{mode} 288Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround 289(Pro Logic). This field will only be written to the bitstream if the audio 290stream is stereo. Using this option does @b{NOT} mean the encoder will actually 291apply Dolby Surround processing. 292@table @option 293@item 0 294@itemx notindicated 295Not Indicated (default) 296@item 1 297@itemx off 298Not Dolby Surround Encoded 299@item 2 300@itemx on 301Dolby Surround Encoded 302@end table 303 304@item -original @var{boolean} 305Original Bit Stream Indicator. Specifies whether this audio is from the 306original source and not a copy. 307@table @option 308@item 0 309@itemx off 310Not Original Source 311@item 1 312@itemx on 313Original Source (default) 314@end table 315 316@end table 317 318@subsection Extended Bitstream Information 319The extended bitstream options are part of the Alternate Bit Stream Syntax as 320specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts. 321If any one parameter in a group is specified, all values in that group will be 322written to the bitstream. Default values are used for those that are written 323but have not been specified. If the mixing levels are written, the decoder 324will use these values instead of the ones specified in the @code{center_mixlev} 325and @code{surround_mixlev} options if it supports the Alternate Bit Stream 326Syntax. 327 328@subsubsection Extended Bitstream Information - Part 1 329 330@table @option 331 332@item -dmix_mode @var{mode} 333Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt 334(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode. 335@table @option 336@item 0 337@itemx notindicated 338Not Indicated (default) 339@item 1 340@itemx ltrt 341Lt/Rt Downmix Preferred 342@item 2 343@itemx loro 344Lo/Ro Downmix Preferred 345@end table 346 347@item -ltrt_cmixlev @var{level} 348Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the 349center channel when downmixing to stereo in Lt/Rt mode. 350@table @option 351@item 1.414 352Apply +3dB gain 353@item 1.189 354Apply +1.5dB gain 355@item 1.000 356Apply 0dB gain 357@item 0.841 358Apply -1.5dB gain 359@item 0.707 360Apply -3.0dB gain 361@item 0.595 362Apply -4.5dB gain (default) 363@item 0.500 364Apply -6.0dB gain 365@item 0.000 366Silence Center Channel 367@end table 368 369@item -ltrt_surmixlev @var{level} 370Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the 371surround channel(s) when downmixing to stereo in Lt/Rt mode. 372@table @option 373@item 0.841 374Apply -1.5dB gain 375@item 0.707 376Apply -3.0dB gain 377@item 0.595 378Apply -4.5dB gain 379@item 0.500 380Apply -6.0dB gain (default) 381@item 0.000 382Silence Surround Channel(s) 383@end table 384 385@item -loro_cmixlev @var{level} 386Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the 387center channel when downmixing to stereo in Lo/Ro mode. 388@table @option 389@item 1.414 390Apply +3dB gain 391@item 1.189 392Apply +1.5dB gain 393@item 1.000 394Apply 0dB gain 395@item 0.841 396Apply -1.5dB gain 397@item 0.707 398Apply -3.0dB gain 399@item 0.595 400Apply -4.5dB gain (default) 401@item 0.500 402Apply -6.0dB gain 403@item 0.000 404Silence Center Channel 405@end table 406 407@item -loro_surmixlev @var{level} 408Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the 409surround channel(s) when downmixing to stereo in Lo/Ro mode. 410@table @option 411@item 0.841 412Apply -1.5dB gain 413@item 0.707 414Apply -3.0dB gain 415@item 0.595 416Apply -4.5dB gain 417@item 0.500 418Apply -6.0dB gain (default) 419@item 0.000 420Silence Surround Channel(s) 421@end table 422 423@end table 424 425@subsubsection Extended Bitstream Information - Part 2 426 427@table @option 428 429@item -dsurex_mode @var{mode} 430Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX 431(7.1 matrixed to 5.1). Using this option does @b{NOT} mean the encoder will actually 432apply Dolby Surround EX processing. 433@table @option 434@item 0 435@itemx notindicated 436Not Indicated (default) 437@item 1 438@itemx on 439Dolby Surround EX Off 440@item 2 441@itemx off 442Dolby Surround EX On 443@end table 444 445@item -dheadphone_mode @var{mode} 446Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone 447encoding (multi-channel matrixed to 2.0 for use with headphones). Using this 448option does @b{NOT} mean the encoder will actually apply Dolby Headphone 449processing. 450@table @option 451@item 0 452@itemx notindicated 453Not Indicated (default) 454@item 1 455@itemx on 456Dolby Headphone Off 457@item 2 458@itemx off 459Dolby Headphone On 460@end table 461 462@item -ad_conv_type @var{type} 463A/D Converter Type. Indicates whether the audio has passed through HDCD A/D 464conversion. 465@table @option 466@item 0 467@itemx standard 468Standard A/D Converter (default) 469@item 1 470@itemx hdcd 471HDCD A/D Converter 472@end table 473 474@end table 475 476@subsection Other AC-3 Encoding Options 477 478@table @option 479 480@item -stereo_rematrixing @var{boolean} 481Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This 482is an optional AC-3 feature that increases quality by selectively encoding 483the left/right channels as mid/side. This option is enabled by default, and it 484is highly recommended that it be left as enabled except for testing purposes. 485 486@item cutoff @var{frequency} 487Set lowpass cutoff frequency. If unspecified, the encoder selects a default 488determined by various other encoding parameters. 489 490@end table 491 492@subsection Floating-Point-Only AC-3 Encoding Options 493 494These options are only valid for the floating-point encoder and do not exist 495for the fixed-point encoder due to the corresponding features not being 496implemented in fixed-point. 497 498@table @option 499 500@item -channel_coupling @var{boolean} 501Enables/Disables use of channel coupling, which is an optional AC-3 feature 502that increases quality by combining high frequency information from multiple 503channels into a single channel. The per-channel high frequency information is 504sent with less accuracy in both the frequency and time domains. This allows 505more bits to be used for lower frequencies while preserving enough information 506to reconstruct the high frequencies. This option is enabled by default for the 507floating-point encoder and should generally be left as enabled except for 508testing purposes or to increase encoding speed. 509@table @option 510@item -1 511@itemx auto 512Selected by Encoder (default) 513@item 0 514@itemx off 515Disable Channel Coupling 516@item 1 517@itemx on 518Enable Channel Coupling 519@end table 520 521@item -cpl_start_band @var{number} 522Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a 523value higher than the bandwidth is used, it will be reduced to 1 less than the 524coupling end band. If @var{auto} is used, the start band will be determined by 525the encoder based on the bit rate, sample rate, and channel layout. This option 526has no effect if channel coupling is disabled. 527@table @option 528@item -1 529@itemx auto 530Selected by Encoder (default) 531@end table 532 533@end table 534 535@anchor{flac} 536@section flac 537 538FLAC (Free Lossless Audio Codec) Encoder 539 540@subsection Options 541 542The following options are supported by FFmpeg's flac encoder. 543 544@table @option 545@item compression_level 546Sets the compression level, which chooses defaults for many other options 547if they are not set explicitly. Valid values are from 0 to 12, 5 is the 548default. 549 550@item frame_size 551Sets the size of the frames in samples per channel. 552 553@item lpc_coeff_precision 554Sets the LPC coefficient precision, valid values are from 1 to 15, 15 is the 555default. 556 557@item lpc_type 558Sets the first stage LPC algorithm 559@table @samp 560@item none 561LPC is not used 562 563@item fixed 564fixed LPC coefficients 565 566@item levinson 567 568@item cholesky 569@end table 570 571@item lpc_passes 572Number of passes to use for Cholesky factorization during LPC analysis 573 574@item min_partition_order 575The minimum partition order 576 577@item max_partition_order 578The maximum partition order 579 580@item prediction_order_method 581@table @samp 582@item estimation 583@item 2level 584@item 4level 585@item 8level 586@item search 587Bruteforce search 588@item log 589@end table 590 591@item ch_mode 592Channel mode 593@table @samp 594@item auto 595The mode is chosen automatically for each frame 596@item indep 597Channels are independently coded 598@item left_side 599@item right_side 600@item mid_side 601@end table 602 603@item exact_rice_parameters 604Chooses if rice parameters are calculated exactly or approximately. 605if set to 1 then they are chosen exactly, which slows the code down slightly and 606improves compression slightly. 607 608@item multi_dim_quant 609Multi Dimensional Quantization. If set to 1 then a 2nd stage LPC algorithm is 610applied after the first stage to finetune the coefficients. This is quite slow 611and slightly improves compression. 612 613@end table 614 615@anchor{opusenc} 616@section opus 617 618Opus encoder. 619 620This is a native FFmpeg encoder for the Opus format. Currently its in development and 621only implements the CELT part of the codec. Its quality is usually worse and at best 622is equal to the libopus encoder. 623 624@subsection Options 625 626@table @option 627@item b 628Set bit rate in bits/s. If unspecified it uses the number of channels and the layout 629to make a good guess. 630 631@item opus_delay 632Sets the maximum delay in milliseconds. Lower delays than 20ms will very quickly 633decrease quality. 634@end table 635 636@anchor{libfdk-aac-enc} 637@section libfdk_aac 638 639libfdk-aac AAC (Advanced Audio Coding) encoder wrapper. 640 641The libfdk-aac library is based on the Fraunhofer FDK AAC code from 642the Android project. 643 644Requires the presence of the libfdk-aac headers and library during 645configuration. You need to explicitly configure the build with 646@code{--enable-libfdk-aac}. The library is also incompatible with GPL, 647so if you allow the use of GPL, you should configure with 648@code{--enable-gpl --enable-nonfree --enable-libfdk-aac}. 649 650This encoder has support for the AAC-HE profiles. 651 652VBR encoding, enabled through the @option{vbr} or @option{flags 653+qscale} options, is experimental and only works with some 654combinations of parameters. 655 656Support for encoding 7.1 audio is only available with libfdk-aac 0.1.3 or 657higher. 658 659For more information see the fdk-aac project at 660@url{http://sourceforge.net/p/opencore-amr/fdk-aac/}. 661 662@subsection Options 663 664The following options are mapped on the shared FFmpeg codec options. 665 666@table @option 667@item b 668Set bit rate in bits/s. If the bitrate is not explicitly specified, it 669is automatically set to a suitable value depending on the selected 670profile. 671 672In case VBR mode is enabled the option is ignored. 673 674@item ar 675Set audio sampling rate (in Hz). 676 677@item channels 678Set the number of audio channels. 679 680@item flags +qscale 681Enable fixed quality, VBR (Variable Bit Rate) mode. 682Note that VBR is implicitly enabled when the @option{vbr} value is 683positive. 684 685@item cutoff 686Set cutoff frequency. If not specified (or explicitly set to 0) it 687will use a value automatically computed by the library. Default value 688is 0. 689 690@item profile 691Set audio profile. 692 693The following profiles are recognized: 694@table @samp 695@item aac_low 696Low Complexity AAC (LC) 697 698@item aac_he 699High Efficiency AAC (HE-AAC) 700 701@item aac_he_v2 702High Efficiency AAC version 2 (HE-AACv2) 703 704@item aac_ld 705Low Delay AAC (LD) 706 707@item aac_eld 708Enhanced Low Delay AAC (ELD) 709@end table 710 711If not specified it is set to @samp{aac_low}. 712@end table 713 714The following are private options of the libfdk_aac encoder. 715 716@table @option 717@item afterburner 718Enable afterburner feature if set to 1, disabled if set to 0. This 719improves the quality but also the required processing power. 720 721Default value is 1. 722 723@item eld_sbr 724Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled 725if set to 0. 726 727Default value is 0. 728 729@item eld_v2 730Enable ELDv2 (LD-MPS extension for ELD stereo signals) for ELDv2 if set to 1, 731disabled if set to 0. 732 733Note that option is available when fdk-aac version (AACENCODER_LIB_VL0.AACENCODER_LIB_VL1.AACENCODER_LIB_VL2) > (4.0.0). 734 735Default value is 0. 736 737@item signaling 738Set SBR/PS signaling style. 739 740It can assume one of the following values: 741@table @samp 742@item default 743choose signaling implicitly (explicit hierarchical by default, 744implicit if global header is disabled) 745 746@item implicit 747implicit backwards compatible signaling 748 749@item explicit_sbr 750explicit SBR, implicit PS signaling 751 752@item explicit_hierarchical 753explicit hierarchical signaling 754@end table 755 756Default value is @samp{default}. 757 758@item latm 759Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0. 760 761Default value is 0. 762 763@item header_period 764Set StreamMuxConfig and PCE repetition period (in frames) for sending 765in-band configuration buffers within LATM/LOAS transport layer. 766 767Must be a 16-bits non-negative integer. 768 769Default value is 0. 770 771@item vbr 772Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty 773good) and 5 is highest quality. A value of 0 will disable VBR, and CBR 774(Constant Bit Rate) is enabled. 775 776Currently only the @samp{aac_low} profile supports VBR encoding. 777 778VBR modes 1-5 correspond to roughly the following average bit rates: 779 780@table @samp 781@item 1 78232 kbps/channel 783@item 2 78440 kbps/channel 785@item 3 78648-56 kbps/channel 787@item 4 78864 kbps/channel 789@item 5 790about 80-96 kbps/channel 791@end table 792 793Default value is 0. 794@end table 795 796@subsection Examples 797 798@itemize 799@item 800Use @command{ffmpeg} to convert an audio file to VBR AAC in an M4A (MP4) 801container: 802@example 803ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a 804@end example 805 806@item 807Use @command{ffmpeg} to convert an audio file to CBR 64k kbps AAC, using the 808High-Efficiency AAC profile: 809@example 810ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a 811@end example 812@end itemize 813 814@anchor{libmp3lame} 815@section libmp3lame 816 817LAME (Lame Ain't an MP3 Encoder) MP3 encoder wrapper. 818 819Requires the presence of the libmp3lame headers and library during 820configuration. You need to explicitly configure the build with 821@code{--enable-libmp3lame}. 822 823See @ref{libshine} for a fixed-point MP3 encoder, although with a 824lower quality. 825 826@subsection Options 827 828The following options are supported by the libmp3lame wrapper. The 829@command{lame}-equivalent of the options are listed in parentheses. 830 831@table @option 832@item b (@emph{-b}) 833Set bitrate expressed in bits/s for CBR or ABR. LAME @code{bitrate} is 834expressed in kilobits/s. 835 836@item q (@emph{-V}) 837Set constant quality setting for VBR. This option is valid only 838using the @command{ffmpeg} command-line tool. For library interface 839users, use @option{global_quality}. 840 841@item compression_level (@emph{-q}) 842Set algorithm quality. Valid arguments are integers in the 0-9 range, 843with 0 meaning highest quality but slowest, and 9 meaning fastest 844while producing the worst quality. 845 846@item cutoff (@emph{--lowpass}) 847Set lowpass cutoff frequency. If unspecified, the encoder dynamically 848adjusts the cutoff. 849 850@item reservoir 851Enable use of bit reservoir when set to 1. Default value is 1. LAME 852has this enabled by default, but can be overridden by use 853@option{--nores} option. 854 855@item joint_stereo (@emph{-m j}) 856Enable the encoder to use (on a frame by frame basis) either L/R 857stereo or mid/side stereo. Default value is 1. 858 859@item abr (@emph{--abr}) 860Enable the encoder to use ABR when set to 1. The @command{lame} 861@option{--abr} sets the target bitrate, while this options only 862tells FFmpeg to use ABR still relies on @option{b} to set bitrate. 863 864@end table 865 866@section libopencore-amrnb 867 868OpenCORE Adaptive Multi-Rate Narrowband encoder. 869 870Requires the presence of the libopencore-amrnb headers and library during 871configuration. You need to explicitly configure the build with 872@code{--enable-libopencore-amrnb --enable-version3}. 873 874This is a mono-only encoder. Officially it only supports 8000Hz sample rate, 875but you can override it by setting @option{strict} to @samp{unofficial} or 876lower. 877 878@subsection Options 879 880@table @option 881 882@item b 883Set bitrate in bits per second. Only the following bitrates are supported, 884otherwise libavcodec will round to the nearest valid bitrate. 885 886@table @option 887@item 4750 888@item 5150 889@item 5900 890@item 6700 891@item 7400 892@item 7950 893@item 10200 894@item 12200 895@end table 896 897@item dtx 898Allow discontinuous transmission (generate comfort noise) when set to 1. The 899default value is 0 (disabled). 900 901@end table 902 903@section libopus 904 905libopus Opus Interactive Audio Codec encoder wrapper. 906 907Requires the presence of the libopus headers and library during 908configuration. You need to explicitly configure the build with 909@code{--enable-libopus}. 910 911@subsection Option Mapping 912 913Most libopus options are modelled after the @command{opusenc} utility from 914opus-tools. The following is an option mapping chart describing options 915supported by the libopus wrapper, and their @command{opusenc}-equivalent 916in parentheses. 917 918@table @option 919 920@item b (@emph{bitrate}) 921Set the bit rate in bits/s. FFmpeg's @option{b} option is 922expressed in bits/s, while @command{opusenc}'s @option{bitrate} in 923kilobits/s. 924 925@item vbr (@emph{vbr}, @emph{hard-cbr}, and @emph{cvbr}) 926Set VBR mode. The FFmpeg @option{vbr} option has the following 927valid arguments, with the @command{opusenc} equivalent options 928in parentheses: 929 930@table @samp 931@item off (@emph{hard-cbr}) 932Use constant bit rate encoding. 933 934@item on (@emph{vbr}) 935Use variable bit rate encoding (the default). 936 937@item constrained (@emph{cvbr}) 938Use constrained variable bit rate encoding. 939@end table 940 941@item compression_level (@emph{comp}) 942Set encoding algorithm complexity. Valid options are integers in 943the 0-10 range. 0 gives the fastest encodes but lower quality, while 10 944gives the highest quality but slowest encoding. The default is 10. 945 946@item frame_duration (@emph{framesize}) 947Set maximum frame size, or duration of a frame in milliseconds. The 948argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller 949frame sizes achieve lower latency but less quality at a given bitrate. 950Sizes greater than 20ms are only interesting at fairly low bitrates. 951The default is 20ms. 952 953@item packet_loss (@emph{expect-loss}) 954Set expected packet loss percentage. The default is 0. 955 956@item fec (@emph{n/a}) 957Enable inband forward error correction. @option{packet_loss} must be non-zero 958to take advantage - frequency of FEC 'side-data' is proportional to expected packet loss. 959Default is disabled. 960 961@item application (N.A.) 962Set intended application type. Valid options are listed below: 963 964@table @samp 965@item voip 966Favor improved speech intelligibility. 967@item audio 968Favor faithfulness to the input (the default). 969@item lowdelay 970Restrict to only the lowest delay modes. 971@end table 972 973@item cutoff (N.A.) 974Set cutoff bandwidth in Hz. The argument must be exactly one of the 975following: 4000, 6000, 8000, 12000, or 20000, corresponding to 976narrowband, mediumband, wideband, super wideband, and fullband 977respectively. The default is 0 (cutoff disabled). 978 979@item mapping_family (@emph{mapping_family}) 980Set channel mapping family to be used by the encoder. The default value of -1 981uses mapping family 0 for mono and stereo inputs, and mapping family 1 982otherwise. The default also disables the surround masking and LFE bandwidth 983optimzations in libopus, and requires that the input contains 8 channels or 984fewer. 985 986Other values include 0 for mono and stereo, 1 for surround sound with masking 987and LFE bandwidth optimizations, and 255 for independent streams with an 988unspecified channel layout. 989 990@item apply_phase_inv (N.A.) (requires libopus >= 1.2) 991If set to 0, disables the use of phase inversion for intensity stereo, 992improving the quality of mono downmixes, but slightly reducing normal stereo 993quality. The default is 1 (phase inversion enabled). 994 995@end table 996 997@anchor{libshine} 998@section libshine 999 1000Shine Fixed-Point MP3 encoder wrapper. 1001 1002Shine is a fixed-point MP3 encoder. It has a far better performance on 1003platforms without an FPU, e.g. armel CPUs, and some phones and tablets. 1004However, as it is more targeted on performance than quality, it is not on par 1005with LAME and other production-grade encoders quality-wise. Also, according to 1006the project's homepage, this encoder may not be free of bugs as the code was 1007written a long time ago and the project was dead for at least 5 years. 1008 1009This encoder only supports stereo and mono input. This is also CBR-only. 1010 1011The original project (last updated in early 2007) is at 1012@url{http://sourceforge.net/projects/libshine-fxp/}. We only support the 1013updated fork by the Savonet/Liquidsoap project at @url{https://github.com/savonet/shine}. 1014 1015Requires the presence of the libshine headers and library during 1016configuration. You need to explicitly configure the build with 1017@code{--enable-libshine}. 1018 1019See also @ref{libmp3lame}. 1020 1021@subsection Options 1022 1023The following options are supported by the libshine wrapper. The 1024@command{shineenc}-equivalent of the options are listed in parentheses. 1025 1026@table @option 1027@item b (@emph{-b}) 1028Set bitrate expressed in bits/s for CBR. @command{shineenc} @option{-b} option 1029is expressed in kilobits/s. 1030 1031@end table 1032 1033@section libtwolame 1034 1035TwoLAME MP2 encoder wrapper. 1036 1037Requires the presence of the libtwolame headers and library during 1038configuration. You need to explicitly configure the build with 1039@code{--enable-libtwolame}. 1040 1041@subsection Options 1042 1043The following options are supported by the libtwolame wrapper. The 1044@command{twolame}-equivalent options follow the FFmpeg ones and are in 1045parentheses. 1046 1047@table @option 1048@item b (@emph{-b}) 1049Set bitrate expressed in bits/s for CBR. @command{twolame} @option{b} 1050option is expressed in kilobits/s. Default value is 128k. 1051 1052@item q (@emph{-V}) 1053Set quality for experimental VBR support. Maximum value range is 1054from -50 to 50, useful range is from -10 to 10. The higher the 1055value, the better the quality. This option is valid only using the 1056@command{ffmpeg} command-line tool. For library interface users, 1057use @option{global_quality}. 1058 1059@item mode (@emph{--mode}) 1060Set the mode of the resulting audio. Possible values: 1061 1062@table @samp 1063@item auto 1064Choose mode automatically based on the input. This is the default. 1065@item stereo 1066Stereo 1067@item joint_stereo 1068Joint stereo 1069@item dual_channel 1070Dual channel 1071@item mono 1072Mono 1073@end table 1074 1075@item psymodel (@emph{--psyc-mode}) 1076Set psychoacoustic model to use in encoding. The argument must be 1077an integer between -1 and 4, inclusive. The higher the value, the 1078better the quality. The default value is 3. 1079 1080@item energy_levels (@emph{--energy}) 1081Enable energy levels extensions when set to 1. The default value is 10820 (disabled). 1083 1084@item error_protection (@emph{--protect}) 1085Enable CRC error protection when set to 1. The default value is 0 1086(disabled). 1087 1088@item copyright (@emph{--copyright}) 1089Set MPEG audio copyright flag when set to 1. The default value is 0 1090(disabled). 1091 1092@item original (@emph{--original}) 1093Set MPEG audio original flag when set to 1. The default value is 0 1094(disabled). 1095 1096@end table 1097 1098@section libvo-amrwbenc 1099 1100VisualOn Adaptive Multi-Rate Wideband encoder. 1101 1102Requires the presence of the libvo-amrwbenc headers and library during 1103configuration. You need to explicitly configure the build with 1104@code{--enable-libvo-amrwbenc --enable-version3}. 1105 1106This is a mono-only encoder. Officially it only supports 16000Hz sample 1107rate, but you can override it by setting @option{strict} to 1108@samp{unofficial} or lower. 1109 1110@subsection Options 1111 1112@table @option 1113 1114@item b 1115Set bitrate in bits/s. Only the following bitrates are supported, otherwise 1116libavcodec will round to the nearest valid bitrate. 1117 1118@table @samp 1119@item 6600 1120@item 8850 1121@item 12650 1122@item 14250 1123@item 15850 1124@item 18250 1125@item 19850 1126@item 23050 1127@item 23850 1128@end table 1129 1130@item dtx 1131Allow discontinuous transmission (generate comfort noise) when set to 1. The 1132default value is 0 (disabled). 1133 1134@end table 1135 1136@section libvorbis 1137 1138libvorbis encoder wrapper. 1139 1140Requires the presence of the libvorbisenc headers and library during 1141configuration. You need to explicitly configure the build with 1142@code{--enable-libvorbis}. 1143 1144@subsection Options 1145 1146The following options are supported by the libvorbis wrapper. The 1147@command{oggenc}-equivalent of the options are listed in parentheses. 1148 1149To get a more accurate and extensive documentation of the libvorbis 1150options, consult the libvorbisenc's and @command{oggenc}'s documentations. 1151See @url{http://xiph.org/vorbis/}, 1152@url{http://wiki.xiph.org/Vorbis-tools}, and oggenc(1). 1153 1154@table @option 1155@item b (@emph{-b}) 1156Set bitrate expressed in bits/s for ABR. @command{oggenc} @option{-b} is 1157expressed in kilobits/s. 1158 1159@item q (@emph{-q}) 1160Set constant quality setting for VBR. The value should be a float 1161number in the range of -1.0 to 10.0. The higher the value, the better 1162the quality. The default value is @samp{3.0}. 1163 1164This option is valid only using the @command{ffmpeg} command-line tool. 1165For library interface users, use @option{global_quality}. 1166 1167@item cutoff (@emph{--advanced-encode-option lowpass_frequency=N}) 1168Set cutoff bandwidth in Hz, a value of 0 disables cutoff. @command{oggenc}'s 1169related option is expressed in kHz. The default value is @samp{0} (cutoff 1170disabled). 1171 1172@item minrate (@emph{-m}) 1173Set minimum bitrate expressed in bits/s. @command{oggenc} @option{-m} is 1174expressed in kilobits/s. 1175 1176@item maxrate (@emph{-M}) 1177Set maximum bitrate expressed in bits/s. @command{oggenc} @option{-M} is 1178expressed in kilobits/s. This only has effect on ABR mode. 1179 1180@item iblock (@emph{--advanced-encode-option impulse_noisetune=N}) 1181Set noise floor bias for impulse blocks. The value is a float number from 1182-15.0 to 0.0. A negative bias instructs the encoder to pay special attention 1183to the crispness of transients in the encoded audio. The tradeoff for better 1184transient response is a higher bitrate. 1185 1186@end table 1187 1188@anchor{libwavpack} 1189@section libwavpack 1190 1191A wrapper providing WavPack encoding through libwavpack. 1192 1193Only lossless mode using 32-bit integer samples is supported currently. 1194 1195Requires the presence of the libwavpack headers and library during 1196configuration. You need to explicitly configure the build with 1197@code{--enable-libwavpack}. 1198 1199Note that a libavcodec-native encoder for the WavPack codec exists so users can 1200encode audios with this codec without using this encoder. See @ref{wavpackenc}. 1201 1202@subsection Options 1203 1204@command{wavpack} command line utility's corresponding options are listed in 1205parentheses, if any. 1206 1207@table @option 1208@item frame_size (@emph{--blocksize}) 1209Default is 32768. 1210 1211@item compression_level 1212Set speed vs. compression tradeoff. Acceptable arguments are listed below: 1213 1214@table @samp 1215@item 0 (@emph{-f}) 1216Fast mode. 1217 1218@item 1 1219Normal (default) settings. 1220 1221@item 2 (@emph{-h}) 1222High quality. 1223 1224@item 3 (@emph{-hh}) 1225Very high quality. 1226 1227@item 4-8 (@emph{-hh -x}@var{EXTRAPROC}) 1228Same as @samp{3}, but with extra processing enabled. 1229 1230@samp{4} is the same as @option{-x2} and @samp{8} is the same as @option{-x6}. 1231 1232@end table 1233@end table 1234 1235@anchor{mjpegenc} 1236@section mjpeg 1237 1238Motion JPEG encoder. 1239 1240@subsection Options 1241 1242@table @option 1243@item huffman 1244Set the huffman encoding strategy. Possible values: 1245 1246@table @samp 1247@item default 1248Use the default huffman tables. This is the default strategy. 1249 1250@item optimal 1251Compute and use optimal huffman tables. 1252 1253@end table 1254@end table 1255 1256@anchor{wavpackenc} 1257@section wavpack 1258 1259WavPack lossless audio encoder. 1260 1261This is a libavcodec-native WavPack encoder. There is also an encoder based on 1262libwavpack, but there is virtually no reason to use that encoder. 1263 1264See also @ref{libwavpack}. 1265 1266@subsection Options 1267 1268The equivalent options for @command{wavpack} command line utility are listed in 1269parentheses. 1270 1271@subsubsection Shared options 1272 1273The following shared options are effective for this encoder. Only special notes 1274about this particular encoder will be documented here. For the general meaning 1275of the options, see @ref{codec-options,,the Codec Options chapter}. 1276 1277@table @option 1278@item frame_size (@emph{--blocksize}) 1279For this encoder, the range for this option is between 128 and 131072. Default 1280is automatically decided based on sample rate and number of channel. 1281 1282For the complete formula of calculating default, see 1283@file{libavcodec/wavpackenc.c}. 1284 1285@item compression_level (@emph{-f}, @emph{-h}, @emph{-hh}, and @emph{-x}) 1286This option's syntax is consistent with @ref{libwavpack}'s. 1287@end table 1288 1289@subsubsection Private options 1290 1291@table @option 1292@item joint_stereo (@emph{-j}) 1293Set whether to enable joint stereo. Valid values are: 1294 1295@table @samp 1296@item on (@emph{1}) 1297Force mid/side audio encoding. 1298@item off (@emph{0}) 1299Force left/right audio encoding. 1300@item auto 1301Let the encoder decide automatically. 1302@end table 1303 1304@item optimize_mono 1305Set whether to enable optimization for mono. This option is only effective for 1306non-mono streams. Available values: 1307 1308@table @samp 1309@item on 1310enabled 1311@item off 1312disabled 1313@end table 1314 1315@end table 1316 1317@c man end AUDIO ENCODERS 1318 1319@chapter Video Encoders 1320@c man begin VIDEO ENCODERS 1321 1322A description of some of the currently available video encoders 1323follows. 1324 1325@section Hap 1326 1327Vidvox Hap video encoder. 1328 1329@subsection Options 1330 1331@table @option 1332@item format @var{integer} 1333Specifies the Hap format to encode. 1334 1335@table @option 1336@item hap 1337@item hap_alpha 1338@item hap_q 1339@end table 1340 1341Default value is @option{hap}. 1342 1343@item chunks @var{integer} 1344Specifies the number of chunks to split frames into, between 1 and 64. This 1345permits multithreaded decoding of large frames, potentially at the cost of 1346data-rate. The encoder may modify this value to divide frames evenly. 1347 1348Default value is @var{1}. 1349 1350@item compressor @var{integer} 1351Specifies the second-stage compressor to use. If set to @option{none}, 1352@option{chunks} will be limited to 1, as chunked uncompressed frames offer no 1353benefit. 1354 1355@table @option 1356@item none 1357@item snappy 1358@end table 1359 1360Default value is @option{snappy}. 1361 1362@end table 1363 1364@section jpeg2000 1365 1366The native jpeg 2000 encoder is lossy by default, the @code{-q:v} 1367option can be used to set the encoding quality. Lossless encoding 1368can be selected with @code{-pred 1}. 1369 1370@subsection Options 1371 1372@table @option 1373@item format @var{integer} 1374Can be set to either @code{j2k} or @code{jp2} (the default) that 1375makes it possible to store non-rgb pix_fmts. 1376 1377@item tile_width @var{integer} 1378Sets tile width. Range is 1 to 1073741824. Default is 256. 1379 1380@item tile_height @var{integer} 1381Sets tile height. Range is 1 to 1073741824. Default is 256. 1382 1383@item pred @var{integer} 1384Allows setting the discrete wavelet transform (DWT) type 1385@table @option 1386@item dwt97int (Lossy) 1387@item dwt53 (Lossless) 1388@end table 1389Default is @code{dwt97int} 1390 1391@item sop @var{boolean} 1392Enable this to add SOP marker at the start of each packet. Disabled by default. 1393 1394@item eph @var{boolean} 1395Enable this to add EPH marker at the end of each packet header. Disabled by default. 1396 1397@item prog @var{integer} 1398Sets the progression order to be used by the encoder. 1399Possible values are: 1400@table @option 1401@item lrcp 1402@item rlcp 1403@item rpcl 1404@item pcrl 1405@item cprl 1406@end table 1407Set to @code{lrcp} by default. 1408 1409@item layer_rates @var{string} 1410By default, when this option is not used, compression is done using the quality metric. 1411This option allows for compression using compression ratio. The compression ratio for each 1412level could be specified. The compression ratio of a layer @code{l} species the what ratio of 1413total file size is contained in the first @code{l} layers. 1414 1415Example usage: 1416 1417@example 1418ffmpeg -i input.bmp -c:v jpeg2000 -layer_rates "100,10,1" output.j2k 1419@end example 1420 1421This would compress the image to contain 3 layers, where the data contained in the 1422first layer would be compressed by 1000 times, compressed by 100 in the first two layers, 1423and shall contain all data while using all 3 layers. 1424 1425@end table 1426 1427@section librav1e 1428 1429rav1e AV1 encoder wrapper. 1430 1431Requires the presence of the rav1e headers and library during configuration. 1432You need to explicitly configure the build with @code{--enable-librav1e}. 1433 1434@subsection Options 1435 1436@table @option 1437@item qmax 1438Sets the maximum quantizer to use when using bitrate mode. 1439 1440@item qmin 1441Sets the minimum quantizer to use when using bitrate mode. 1442 1443@item qp 1444Uses quantizer mode to encode at the given quantizer (0-255). 1445 1446@item speed 1447Selects the speed preset (0-10) to encode with. 1448 1449@item tiles 1450Selects how many tiles to encode with. 1451 1452@item tile-rows 1453Selects how many rows of tiles to encode with. 1454 1455@item tile-columns 1456Selects how many columns of tiles to encode with. 1457 1458@item rav1e-params 1459Set rav1e options using a list of @var{key}=@var{value} pairs separated 1460by ":". See @command{rav1e --help} for a list of options. 1461 1462For example to specify librav1e encoding options with @option{-rav1e-params}: 1463 1464@example 1465ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4 1466@end example 1467 1468@end table 1469 1470@section libaom-av1 1471 1472libaom AV1 encoder wrapper. 1473 1474Requires the presence of the libaom headers and library during 1475configuration. You need to explicitly configure the build with 1476@code{--enable-libaom}. 1477 1478@subsection Options 1479 1480The wrapper supports the following standard libavcodec options: 1481 1482@table @option 1483 1484@item b 1485Set bitrate target in bits/second. By default this will use 1486variable-bitrate mode. If @option{maxrate} and @option{minrate} are 1487also set to the same value then it will use constant-bitrate mode, 1488otherwise if @option{crf} is set as well then it will use 1489constrained-quality mode. 1490 1491@item g keyint_min 1492Set key frame placement. The GOP size sets the maximum distance between 1493key frames; if zero the output stream will be intra-only. The minimum 1494distance is ignored unless it is the same as the GOP size, in which case 1495key frames will always appear at a fixed interval. Not set by default, 1496so without this option the library has completely free choice about 1497where to place key frames. 1498 1499@item qmin qmax 1500Set minimum/maximum quantisation values. Valid range is from 0 to 63 1501(warning: this does not match the quantiser values actually used by AV1 1502- divide by four to map real quantiser values to this range). Defaults 1503to min/max (no constraint). 1504 1505@item minrate maxrate bufsize rc_init_occupancy 1506Set rate control buffering parameters. Not used if not set - defaults 1507to unconstrained variable bitrate. 1508 1509@item threads 1510Set the number of threads to use while encoding. This may require the 1511@option{tiles} or @option{row-mt} options to also be set to actually 1512use the specified number of threads fully. Defaults to the number of 1513hardware threads supported by the host machine. 1514 1515@item profile 1516Set the encoding profile. Defaults to using the profile which matches 1517the bit depth and chroma subsampling of the input. 1518 1519@end table 1520 1521The wrapper also has some specific options: 1522 1523@table @option 1524 1525@item cpu-used 1526Set the quality/encoding speed tradeoff. Valid range is from 0 to 8, 1527higher numbers indicating greater speed and lower quality. The default 1528value is 1, which will be slow and high quality. 1529 1530@item auto-alt-ref 1531Enable use of alternate reference frames. Defaults to the internal 1532default of the library. 1533 1534@item arnr-max-frames (@emph{frames}) 1535Set altref noise reduction max frame count. Default is -1. 1536 1537@item arnr-strength (@emph{strength}) 1538Set altref noise reduction filter strength. Range is -1 to 6. Default is -1. 1539 1540@item aq-mode (@emph{aq-mode}) 1541Set adaptive quantization mode. Possible values: 1542 1543@table @samp 1544@item none (@emph{0}) 1545Disabled. 1546 1547@item variance (@emph{1}) 1548Variance-based. 1549 1550@item complexity (@emph{2}) 1551Complexity-based. 1552 1553@item cyclic (@emph{3}) 1554Cyclic refresh. 1555@end table 1556 1557@item tune (@emph{tune}) 1558Set the distortion metric the encoder is tuned with. Default is @code{psnr}. 1559 1560@table @samp 1561@item psnr (@emph{0}) 1562 1563@item ssim (@emph{1}) 1564@end table 1565 1566@item lag-in-frames 1567Set the maximum number of frames which the encoder may keep in flight 1568at any one time for lookahead purposes. Defaults to the internal 1569default of the library. 1570 1571@item error-resilience 1572Enable error resilience features: 1573@table @option 1574@item default 1575Improve resilience against losses of whole frames. 1576@end table 1577Not enabled by default. 1578 1579@item crf 1580Set the quality/size tradeoff for constant-quality (no bitrate target) 1581and constrained-quality (with maximum bitrate target) modes. Valid 1582range is 0 to 63, higher numbers indicating lower quality and smaller 1583output size. Only used if set; by default only the bitrate target is 1584used. 1585 1586@item static-thresh 1587Set a change threshold on blocks below which they will be skipped by 1588the encoder. Defined in arbitrary units as a nonnegative integer, 1589defaulting to zero (no blocks are skipped). 1590 1591@item drop-threshold 1592Set a threshold for dropping frames when close to rate control bounds. 1593Defined as a percentage of the target buffer - when the rate control 1594buffer falls below this percentage, frames will be dropped until it 1595has refilled above the threshold. Defaults to zero (no frames are 1596dropped). 1597 1598@item denoise-noise-level (@emph{level}) 1599Amount of noise to be removed for grain synthesis. Grain synthesis is disabled if 1600this option is not set or set to 0. 1601 1602@item denoise-block-size (@emph{pixels}) 1603Block size used for denoising for grain synthesis. If not set, AV1 codec 1604uses the default value of 32. 1605 1606@item undershoot-pct (@emph{pct}) 1607Set datarate undershoot (min) percentage of the target bitrate. Range is -1 to 100. 1608Default is -1. 1609 1610@item overshoot-pct (@emph{pct}) 1611Set datarate overshoot (max) percentage of the target bitrate. Range is -1 to 1000. 1612Default is -1. 1613 1614@item minsection-pct (@emph{pct}) 1615Minimum percentage variation of the GOP bitrate from the target bitrate. If minsection-pct 1616is not set, the libaomenc wrapper computes it as follows: @code{(minrate * 100 / bitrate)}. 1617Range is -1 to 100. Default is -1 (unset). 1618 1619@item maxsection-pct (@emph{pct}) 1620Maximum percentage variation of the GOP bitrate from the target bitrate. If maxsection-pct 1621is not set, the libaomenc wrapper computes it as follows: @code{(maxrate * 100 / bitrate)}. 1622Range is -1 to 5000. Default is -1 (unset). 1623 1624@item frame-parallel (@emph{boolean}) 1625Enable frame parallel decodability features. Default is true. 1626 1627@item tiles 1628Set the number of tiles to encode the input video with, as columns x 1629rows. Larger numbers allow greater parallelism in both encoding and 1630decoding, but may decrease coding efficiency. Defaults to the minimum 1631number of tiles required by the size of the input video (this is 1x1 1632(that is, a single tile) for sizes up to and including 4K). 1633 1634@item tile-columns tile-rows 1635Set the number of tiles as log2 of the number of tile rows and columns. 1636Provided for compatibility with libvpx/VP9. 1637 1638@item row-mt (Requires libaom >= 1.0.0-759-g90a15f4f2) 1639Enable row based multi-threading. Disabled by default. 1640 1641@item enable-cdef (@emph{boolean}) 1642Enable Constrained Directional Enhancement Filter. The libaom-av1 1643encoder enables CDEF by default. 1644 1645@item enable-restoration (@emph{boolean}) 1646Enable Loop Restoration Filter. Default is true for libaom-av1. 1647 1648@item enable-global-motion (@emph{boolean}) 1649Enable the use of global motion for block prediction. Default is true. 1650 1651@item enable-intrabc (@emph{boolean}) 1652Enable block copy mode for intra block prediction. This mode is 1653useful for screen content. Default is true. 1654 1655@item enable-rect-partitions (@emph{boolean}) (Requires libaom >= v2.0.0) 1656Enable rectangular partitions. Default is true. 1657 1658@item enable-1to4-partitions (@emph{boolean}) (Requires libaom >= v2.0.0) 1659Enable 1:4/4:1 partitions. Default is true. 1660 1661@item enable-ab-partitions (@emph{boolean}) (Requires libaom >= v2.0.0) 1662Enable AB shape partitions. Default is true. 1663 1664@item enable-angle-delta (@emph{boolean}) (Requires libaom >= v2.0.0) 1665Enable angle delta intra prediction. Default is true. 1666 1667@item enable-cfl-intra (@emph{boolean}) (Requires libaom >= v2.0.0) 1668Enable chroma predicted from luma intra prediction. Default is true. 1669 1670@item enable-filter-intra (@emph{boolean}) (Requires libaom >= v2.0.0) 1671Enable filter intra predictor. Default is true. 1672 1673@item enable-intra-edge-filter (@emph{boolean}) (Requires libaom >= v2.0.0) 1674Enable intra edge filter. Default is true. 1675 1676@item enable-smooth-intra (@emph{boolean}) (Requires libaom >= v2.0.0) 1677Enable smooth intra prediction mode. Default is true. 1678 1679@item enable-paeth-intra (@emph{boolean}) (Requires libaom >= v2.0.0) 1680Enable paeth predictor in intra prediction. Default is true. 1681 1682@item enable-palette (@emph{boolean}) (Requires libaom >= v2.0.0) 1683Enable palette prediction mode. Default is true. 1684 1685@item enable-flip-idtx (@emph{boolean}) (Requires libaom >= v2.0.0) 1686Enable extended transform type, including FLIPADST_DCT, DCT_FLIPADST, 1687FLIPADST_FLIPADST, ADST_FLIPADST, FLIPADST_ADST, IDTX, V_DCT, H_DCT, 1688V_ADST, H_ADST, V_FLIPADST, H_FLIPADST. Default is true. 1689 1690@item enable-tx64 (@emph{boolean}) (Requires libaom >= v2.0.0) 1691Enable 64-pt transform. Default is true. 1692 1693@item reduced-tx-type-set (@emph{boolean}) (Requires libaom >= v2.0.0) 1694Use reduced set of transform types. Default is false. 1695 1696@item use-intra-dct-only (@emph{boolean}) (Requires libaom >= v2.0.0) 1697Use DCT only for INTRA modes. Default is false. 1698 1699@item use-inter-dct-only (@emph{boolean}) (Requires libaom >= v2.0.0) 1700Use DCT only for INTER modes. Default is false. 1701 1702@item use-intra-default-tx-only (@emph{boolean}) (Requires libaom >= v2.0.0) 1703Use Default-transform only for INTRA modes. Default is false. 1704 1705@item enable-ref-frame-mvs (@emph{boolean}) (Requires libaom >= v2.0.0) 1706Enable temporal mv prediction. Default is true. 1707 1708@item enable-reduced-reference-set (@emph{boolean}) (Requires libaom >= v2.0.0) 1709Use reduced set of single and compound references. Default is false. 1710 1711@item enable-obmc (@emph{boolean}) (Requires libaom >= v2.0.0) 1712Enable obmc. Default is true. 1713 1714@item enable-dual-filter (@emph{boolean}) (Requires libaom >= v2.0.0) 1715Enable dual filter. Default is true. 1716 1717@item enable-diff-wtd-comp (@emph{boolean}) (Requires libaom >= v2.0.0) 1718Enable difference-weighted compound. Default is true. 1719 1720@item enable-dist-wtd-comp (@emph{boolean}) (Requires libaom >= v2.0.0) 1721Enable distance-weighted compound. Default is true. 1722 1723@item enable-onesided-comp (@emph{boolean}) (Requires libaom >= v2.0.0) 1724Enable one sided compound. Default is true. 1725 1726@item enable-interinter-wedge (@emph{boolean}) (Requires libaom >= v2.0.0) 1727Enable interinter wedge compound. Default is true. 1728 1729@item enable-interintra-wedge (@emph{boolean}) (Requires libaom >= v2.0.0) 1730Enable interintra wedge compound. Default is true. 1731 1732@item enable-masked-comp (@emph{boolean}) (Requires libaom >= v2.0.0) 1733Enable masked compound. Default is true. 1734 1735@item enable-interintra-comp (@emph{boolean}) (Requires libaom >= v2.0.0) 1736Enable interintra compound. Default is true. 1737 1738@item enable-smooth-interintra (@emph{boolean}) (Requires libaom >= v2.0.0) 1739Enable smooth interintra mode. Default is true. 1740 1741@end table 1742 1743@section libsvtav1 1744 1745SVT-AV1 encoder wrapper. 1746 1747Requires the presence of the SVT-AV1 headers and library during configuration. 1748You need to explicitly configure the build with @code{--enable-libsvtav1}. 1749 1750@subsection Options 1751 1752@table @option 1753@item profile 1754Set the encoding profile. 1755 1756@item level 1757Set the operating point level. 1758 1759@item tier 1760Set the operating point tier. 1761 1762@item rc 1763Set the rate control mode to use. 1764 1765Possible modes: 1766@table @option 1767@item cqp 1768Constant quantizer: use fixed values of qindex (dependent on the frame type) 1769throughout the stream. This mode is the default. 1770 1771@item vbr 1772Variable bitrate: use a target bitrate for the whole stream. 1773 1774@item cvbr 1775Constrained variable bitrate: use a target bitrate for each GOP. 1776@end table 1777 1778@item qmax 1779Set the maximum quantizer to use when using a bitrate mode. 1780 1781@item qmin 1782Set the minimum quantizer to use when using a bitrate mode. 1783 1784@item qp 1785Set the quantizer used in cqp rate control mode (0-63). 1786 1787@item sc_detection 1788Enable scene change detection. 1789 1790@item la_depth 1791Set number of frames to look ahead (0-120). 1792 1793@item preset 1794Set the quality-speed tradeoff, in the range 0 to 8. Higher values are 1795faster but lower quality. Defaults to 8 (highest speed). 1796 1797@item tile_rows 1798Set log2 of the number of rows of tiles to use (0-6). 1799 1800@item tile_columns 1801Set log2 of the number of columns of tiles to use (0-4). 1802 1803@end table 1804 1805@section libkvazaar 1806 1807Kvazaar H.265/HEVC encoder. 1808 1809Requires the presence of the libkvazaar headers and library during 1810configuration. You need to explicitly configure the build with 1811@option{--enable-libkvazaar}. 1812 1813@subsection Options 1814 1815@table @option 1816 1817@item b 1818Set target video bitrate in bit/s and enable rate control. 1819 1820@item kvazaar-params 1821Set kvazaar parameters as a list of @var{name}=@var{value} pairs separated 1822by commas (,). See kvazaar documentation for a list of options. 1823 1824@end table 1825 1826@section libopenh264 1827 1828Cisco libopenh264 H.264/MPEG-4 AVC encoder wrapper. 1829 1830This encoder requires the presence of the libopenh264 headers and 1831library during configuration. You need to explicitly configure the 1832build with @code{--enable-libopenh264}. The library is detected using 1833@command{pkg-config}. 1834 1835For more information about the library see 1836@url{http://www.openh264.org}. 1837 1838@subsection Options 1839 1840The following FFmpeg global options affect the configurations of the 1841libopenh264 encoder. 1842 1843@table @option 1844@item b 1845Set the bitrate (as a number of bits per second). 1846 1847@item g 1848Set the GOP size. 1849 1850@item maxrate 1851Set the max bitrate (as a number of bits per second). 1852 1853@item flags +global_header 1854Set global header in the bitstream. 1855 1856@item slices 1857Set the number of slices, used in parallelized encoding. Default value 1858is 0. This is only used when @option{slice_mode} is set to 1859@samp{fixed}. 1860 1861@item slice_mode 1862Set slice mode. Can assume one of the following possible values: 1863 1864@table @samp 1865@item fixed 1866a fixed number of slices 1867@item rowmb 1868one slice per row of macroblocks 1869@item auto 1870automatic number of slices according to number of threads 1871@item dyn 1872dynamic slicing 1873@end table 1874 1875Default value is @samp{auto}. 1876 1877@item loopfilter 1878Enable loop filter, if set to 1 (automatically enabled). To disable 1879set a value of 0. 1880 1881@item profile 1882Set profile restrictions. If set to the value of @samp{main} enable 1883CABAC (set the @code{SEncParamExt.iEntropyCodingModeFlag} flag to 1). 1884 1885@item max_nal_size 1886Set maximum NAL size in bytes. 1887 1888@item allow_skip_frames 1889Allow skipping frames to hit the target bitrate if set to 1. 1890@end table 1891 1892@section libtheora 1893 1894libtheora Theora encoder wrapper. 1895 1896Requires the presence of the libtheora headers and library during 1897configuration. You need to explicitly configure the build with 1898@code{--enable-libtheora}. 1899 1900For more information about the libtheora project see 1901@url{http://www.theora.org/}. 1902 1903@subsection Options 1904 1905The following global options are mapped to internal libtheora options 1906which affect the quality and the bitrate of the encoded stream. 1907 1908@table @option 1909@item b 1910Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode. In 1911case VBR (Variable Bit Rate) mode is enabled this option is ignored. 1912 1913@item flags 1914Used to enable constant quality mode (VBR) encoding through the 1915@option{qscale} flag, and to enable the @code{pass1} and @code{pass2} 1916modes. 1917 1918@item g 1919Set the GOP size. 1920 1921@item global_quality 1922Set the global quality as an integer in lambda units. 1923 1924Only relevant when VBR mode is enabled with @code{flags +qscale}. The 1925value is converted to QP units by dividing it by @code{FF_QP2LAMBDA}, 1926clipped in the [0 - 10] range, and then multiplied by 6.3 to get a 1927value in the native libtheora range [0-63]. A higher value corresponds 1928to a higher quality. 1929 1930@item q 1931Enable VBR mode when set to a non-negative value, and set constant 1932quality value as a double floating point value in QP units. 1933 1934The value is clipped in the [0-10] range, and then multiplied by 6.3 1935to get a value in the native libtheora range [0-63]. 1936 1937This option is valid only using the @command{ffmpeg} command-line 1938tool. For library interface users, use @option{global_quality}. 1939@end table 1940 1941@subsection Examples 1942 1943@itemize 1944@item 1945Set maximum constant quality (VBR) encoding with @command{ffmpeg}: 1946@example 1947ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg 1948@end example 1949 1950@item 1951Use @command{ffmpeg} to convert a CBR 1000 kbps Theora video stream: 1952@example 1953ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg 1954@end example 1955@end itemize 1956 1957@section libvpx 1958 1959VP8/VP9 format supported through libvpx. 1960 1961Requires the presence of the libvpx headers and library during configuration. 1962You need to explicitly configure the build with @code{--enable-libvpx}. 1963 1964@subsection Options 1965 1966The following options are supported by the libvpx wrapper. The 1967@command{vpxenc}-equivalent options or values are listed in parentheses 1968for easy migration. 1969 1970To reduce the duplication of documentation, only the private options 1971and some others requiring special attention are documented here. For 1972the documentation of the undocumented generic options, see 1973@ref{codec-options,,the Codec Options chapter}. 1974 1975To get more documentation of the libvpx options, invoke the command 1976@command{ffmpeg -h encoder=libvpx}, @command{ffmpeg -h encoder=libvpx-vp9} or 1977@command{vpxenc --help}. Further information is available in the libvpx API 1978documentation. 1979 1980@table @option 1981 1982@item b (@emph{target-bitrate}) 1983Set bitrate in bits/s. Note that FFmpeg's @option{b} option is 1984expressed in bits/s, while @command{vpxenc}'s @option{target-bitrate} is in 1985kilobits/s. 1986 1987@item g (@emph{kf-max-dist}) 1988 1989@item keyint_min (@emph{kf-min-dist}) 1990 1991@item qmin (@emph{min-q}) 1992 1993@item qmax (@emph{max-q}) 1994 1995@item bufsize (@emph{buf-sz}, @emph{buf-optimal-sz}) 1996Set ratecontrol buffer size (in bits). Note @command{vpxenc}'s options are 1997specified in milliseconds, the libvpx wrapper converts this value as follows: 1998@code{buf-sz = bufsize * 1000 / bitrate}, 1999@code{buf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6}. 2000 2001@item rc_init_occupancy (@emph{buf-initial-sz}) 2002Set number of bits which should be loaded into the rc buffer before decoding 2003starts. Note @command{vpxenc}'s option is specified in milliseconds, the libvpx 2004wrapper converts this value as follows: 2005@code{rc_init_occupancy * 1000 / bitrate}. 2006 2007@item undershoot-pct 2008Set datarate undershoot (min) percentage of the target bitrate. 2009 2010@item overshoot-pct 2011Set datarate overshoot (max) percentage of the target bitrate. 2012 2013@item skip_threshold (@emph{drop-frame}) 2014 2015@item qcomp (@emph{bias-pct}) 2016 2017@item maxrate (@emph{maxsection-pct}) 2018Set GOP max bitrate in bits/s. Note @command{vpxenc}'s option is specified as a 2019percentage of the target bitrate, the libvpx wrapper converts this value as 2020follows: @code{(maxrate * 100 / bitrate)}. 2021 2022@item minrate (@emph{minsection-pct}) 2023Set GOP min bitrate in bits/s. Note @command{vpxenc}'s option is specified as a 2024percentage of the target bitrate, the libvpx wrapper converts this value as 2025follows: @code{(minrate * 100 / bitrate)}. 2026 2027@item minrate, maxrate, b @emph{end-usage=cbr} 2028@code{(minrate == maxrate == bitrate)}. 2029 2030@item crf (@emph{end-usage=cq}, @emph{cq-level}) 2031 2032@item tune (@emph{tune}) 2033@table @samp 2034@item psnr (@emph{psnr}) 2035@item ssim (@emph{ssim}) 2036@end table 2037 2038@item quality, deadline (@emph{deadline}) 2039@table @samp 2040@item best 2041Use best quality deadline. Poorly named and quite slow, this option should be 2042avoided as it may give worse quality output than good. 2043@item good 2044Use good quality deadline. This is a good trade-off between speed and quality 2045when used with the @option{cpu-used} option. 2046@item realtime 2047Use realtime quality deadline. 2048@end table 2049 2050@item speed, cpu-used (@emph{cpu-used}) 2051Set quality/speed ratio modifier. Higher values speed up the encode at the cost 2052of quality. 2053 2054@item nr (@emph{noise-sensitivity}) 2055 2056@item static-thresh 2057Set a change threshold on blocks below which they will be skipped by the 2058encoder. 2059 2060@item slices (@emph{token-parts}) 2061Note that FFmpeg's @option{slices} option gives the total number of partitions, 2062while @command{vpxenc}'s @option{token-parts} is given as 2063@code{log2(partitions)}. 2064 2065@item max-intra-rate 2066Set maximum I-frame bitrate as a percentage of the target bitrate. A value of 0 2067means unlimited. 2068 2069@item force_key_frames 2070@code{VPX_EFLAG_FORCE_KF} 2071 2072@item Alternate reference frame related 2073@table @option 2074@item auto-alt-ref 2075Enable use of alternate reference frames (2-pass only). 2076Values greater than 1 enable multi-layer alternate reference frames (VP9 only). 2077@item arnr-maxframes 2078Set altref noise reduction max frame count. 2079@item arnr-type 2080Set altref noise reduction filter type: backward, forward, centered. 2081@item arnr-strength 2082Set altref noise reduction filter strength. 2083@item rc-lookahead, lag-in-frames (@emph{lag-in-frames}) 2084Set number of frames to look ahead for frametype and ratecontrol. 2085@end table 2086 2087@item error-resilient 2088Enable error resiliency features. 2089 2090@item sharpness @var{integer} 2091Increase sharpness at the expense of lower PSNR. 2092The valid range is [0, 7]. 2093 2094@item ts-parameters 2095Sets the temporal scalability configuration using a :-separated list of 2096key=value pairs. For example, to specify temporal scalability parameters 2097with @code{ffmpeg}: 2098@example 2099ffmpeg -i INPUT -c:v libvpx -ts-parameters ts_number_layers=3:\ 2100ts_target_bitrate=250,500,1000:ts_rate_decimator=4,2,1:\ 2101ts_periodicity=4:ts_layer_id=0,2,1,2:ts_layering_mode=3 OUTPUT 2102@end example 2103Below is a brief explanation of each of the parameters, please 2104refer to @code{struct vpx_codec_enc_cfg} in @code{vpx/vpx_encoder.h} for more 2105details. 2106@table @option 2107@item ts_number_layers 2108Number of temporal coding layers. 2109@item ts_target_bitrate 2110Target bitrate for each temporal layer (in kbps). 2111(bitrate should be inclusive of the lower temporal layer). 2112@item ts_rate_decimator 2113Frame rate decimation factor for each temporal layer. 2114@item ts_periodicity 2115Length of the sequence defining frame temporal layer membership. 2116@item ts_layer_id 2117Template defining the membership of frames to temporal layers. 2118@item ts_layering_mode 2119(optional) Selecting the temporal structure from a set of pre-defined temporal layering modes. 2120Currently supports the following options. 2121@table @option 2122@item 0 2123No temporal layering flags are provided internally, 2124relies on flags being passed in using @code{metadata} field in @code{AVFrame} 2125with following keys. 2126@table @option 2127@item vp8-flags 2128Sets the flags passed into the encoder to indicate the referencing scheme for 2129the current frame. 2130Refer to function @code{vpx_codec_encode} in @code{vpx/vpx_encoder.h} for more 2131details. 2132@item temporal_id 2133Explicitly sets the temporal id of the current frame to encode. 2134@end table 2135@item 2 2136Two temporal layers. 0-1... 2137@item 3 2138Three temporal layers. 0-2-1-2...; with single reference frame. 2139@item 4 2140Same as option "3", except there is a dependency between 2141the two temporal layer 2 frames within the temporal period. 2142@end table 2143@end table 2144 2145@item VP9-specific options 2146@table @option 2147@item lossless 2148Enable lossless mode. 2149@item tile-columns 2150Set number of tile columns to use. Note this is given as 2151@code{log2(tile_columns)}. For example, 8 tile columns would be requested by 2152setting the @option{tile-columns} option to 3. 2153@item tile-rows 2154Set number of tile rows to use. Note this is given as @code{log2(tile_rows)}. 2155For example, 4 tile rows would be requested by setting the @option{tile-rows} 2156option to 2. 2157@item frame-parallel 2158Enable frame parallel decodability features. 2159@item aq-mode 2160Set adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3: 2161cyclic refresh, 4: equator360). 2162@item colorspace @emph{color-space} 2163Set input color space. The VP9 bitstream supports signaling the following 2164colorspaces: 2165@table @option 2166@item @samp{rgb} @emph{sRGB} 2167@item @samp{bt709} @emph{bt709} 2168@item @samp{unspecified} @emph{unknown} 2169@item @samp{bt470bg} @emph{bt601} 2170@item @samp{smpte170m} @emph{smpte170} 2171@item @samp{smpte240m} @emph{smpte240} 2172@item @samp{bt2020_ncl} @emph{bt2020} 2173@end table 2174@item row-mt @var{boolean} 2175Enable row based multi-threading. 2176@item tune-content 2177Set content type: default (0), screen (1), film (2). 2178@item corpus-complexity 2179Corpus VBR mode is a variant of standard VBR where the complexity distribution 2180midpoint is passed in rather than calculated for a specific clip or chunk. 2181 2182The valid range is [0, 10000]. 0 (default) uses standard VBR. 2183@item enable-tpl @var{boolean} 2184Enable temporal dependency model. 2185@end table 2186 2187@end table 2188 2189For more information about libvpx see: 2190@url{http://www.webmproject.org/} 2191 2192@section libwebp 2193 2194libwebp WebP Image encoder wrapper 2195 2196libwebp is Google's official encoder for WebP images. It can encode in either 2197lossy or lossless mode. Lossy images are essentially a wrapper around a VP8 2198frame. Lossless images are a separate codec developed by Google. 2199 2200@subsection Pixel Format 2201 2202Currently, libwebp only supports YUV420 for lossy and RGB for lossless due 2203to limitations of the format and libwebp. Alpha is supported for either mode. 2204Because of API limitations, if RGB is passed in when encoding lossy or YUV is 2205passed in for encoding lossless, the pixel format will automatically be 2206converted using functions from libwebp. This is not ideal and is done only for 2207convenience. 2208 2209@subsection Options 2210 2211@table @option 2212 2213@item -lossless @var{boolean} 2214Enables/Disables use of lossless mode. Default is 0. 2215 2216@item -compression_level @var{integer} 2217For lossy, this is a quality/speed tradeoff. Higher values give better quality 2218for a given size at the cost of increased encoding time. For lossless, this is 2219a size/speed tradeoff. Higher values give smaller size at the cost of increased 2220encoding time. More specifically, it controls the number of extra algorithms 2221and compression tools used, and varies the combination of these tools. This 2222maps to the @var{method} option in libwebp. The valid range is 0 to 6. 2223Default is 4. 2224 2225@item -qscale @var{float} 2226For lossy encoding, this controls image quality, 0 to 100. For lossless 2227encoding, this controls the effort and time spent at compressing more. The 2228default value is 75. Note that for usage via libavcodec, this option is called 2229@var{global_quality} and must be multiplied by @var{FF_QP2LAMBDA}. 2230 2231@item -preset @var{type} 2232Configuration preset. This does some automatic settings based on the general 2233type of the image. 2234@table @option 2235@item none 2236Do not use a preset. 2237@item default 2238Use the encoder default. 2239@item picture 2240Digital picture, like portrait, inner shot 2241@item photo 2242Outdoor photograph, with natural lighting 2243@item drawing 2244Hand or line drawing, with high-contrast details 2245@item icon 2246Small-sized colorful images 2247@item text 2248Text-like 2249@end table 2250 2251@end table 2252 2253@section libx264, libx264rgb 2254 2255x264 H.264/MPEG-4 AVC encoder wrapper. 2256 2257This encoder requires the presence of the libx264 headers and library 2258during configuration. You need to explicitly configure the build with 2259@code{--enable-libx264}. 2260 2261libx264 supports an impressive number of features, including 8x8 and 22624x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC 2263entropy coding, interlacing (MBAFF), lossless mode, psy optimizations 2264for detail retention (adaptive quantization, psy-RD, psy-trellis). 2265 2266Many libx264 encoder options are mapped to FFmpeg global codec 2267options, while unique encoder options are provided through private 2268options. Additionally the @option{x264opts} and @option{x264-params} 2269private options allows one to pass a list of key=value tuples as accepted 2270by the libx264 @code{x264_param_parse} function. 2271 2272The x264 project website is at 2273@url{http://www.videolan.org/developers/x264.html}. 2274 2275The libx264rgb encoder is the same as libx264, except it accepts packed RGB 2276pixel formats as input instead of YUV. 2277 2278@subsection Supported Pixel Formats 2279 2280x264 supports 8- to 10-bit color spaces. The exact bit depth is controlled at 2281x264's configure time. FFmpeg only supports one bit depth in one particular 2282build. In other words, it is not possible to build one FFmpeg with multiple 2283versions of x264 with different bit depths. 2284 2285@subsection Options 2286 2287The following options are supported by the libx264 wrapper. The 2288@command{x264}-equivalent options or values are listed in parentheses 2289for easy migration. 2290 2291To reduce the duplication of documentation, only the private options 2292and some others requiring special attention are documented here. For 2293the documentation of the undocumented generic options, see 2294@ref{codec-options,,the Codec Options chapter}. 2295 2296To get a more accurate and extensive documentation of the libx264 2297options, invoke the command @command{x264 --fullhelp} or consult 2298the libx264 documentation. 2299 2300@table @option 2301@item b (@emph{bitrate}) 2302Set bitrate in bits/s. Note that FFmpeg's @option{b} option is 2303expressed in bits/s, while @command{x264}'s @option{bitrate} is in 2304kilobits/s. 2305 2306@item bf (@emph{bframes}) 2307 2308@item g (@emph{keyint}) 2309 2310@item qmin (@emph{qpmin}) 2311Minimum quantizer scale. 2312 2313@item qmax (@emph{qpmax}) 2314Maximum quantizer scale. 2315 2316@item qdiff (@emph{qpstep}) 2317Maximum difference between quantizer scales. 2318 2319@item qblur (@emph{qblur}) 2320Quantizer curve blur 2321 2322@item qcomp (@emph{qcomp}) 2323Quantizer curve compression factor 2324 2325@item refs (@emph{ref}) 2326Number of reference frames each P-frame can use. The range is from @var{0-16}. 2327 2328@item sc_threshold (@emph{scenecut}) 2329Sets the threshold for the scene change detection. 2330 2331@item trellis (@emph{trellis}) 2332Performs Trellis quantization to increase efficiency. Enabled by default. 2333 2334@item nr (@emph{nr}) 2335 2336@item me_range (@emph{merange}) 2337Maximum range of the motion search in pixels. 2338 2339@item me_method (@emph{me}) 2340Set motion estimation method. Possible values in the decreasing order 2341of speed: 2342 2343@table @samp 2344@item dia (@emph{dia}) 2345@item epzs (@emph{dia}) 2346Diamond search with radius 1 (fastest). @samp{epzs} is an alias for 2347@samp{dia}. 2348@item hex (@emph{hex}) 2349Hexagonal search with radius 2. 2350@item umh (@emph{umh}) 2351Uneven multi-hexagon search. 2352@item esa (@emph{esa}) 2353Exhaustive search. 2354@item tesa (@emph{tesa}) 2355Hadamard exhaustive search (slowest). 2356@end table 2357 2358@item forced-idr 2359Normally, when forcing a I-frame type, the encoder can select any type 2360of I-frame. This option forces it to choose an IDR-frame. 2361 2362@item subq (@emph{subme}) 2363Sub-pixel motion estimation method. 2364 2365@item b_strategy (@emph{b-adapt}) 2366Adaptive B-frame placement decision algorithm. Use only on first-pass. 2367 2368@item keyint_min (@emph{min-keyint}) 2369Minimum GOP size. 2370 2371@item coder 2372Set entropy encoder. Possible values: 2373 2374@table @samp 2375@item ac 2376Enable CABAC. 2377 2378@item vlc 2379Enable CAVLC and disable CABAC. It generates the same effect as 2380@command{x264}'s @option{--no-cabac} option. 2381@end table 2382 2383@item cmp 2384Set full pixel motion estimation comparison algorithm. Possible values: 2385 2386@table @samp 2387@item chroma 2388Enable chroma in motion estimation. 2389 2390@item sad 2391Ignore chroma in motion estimation. It generates the same effect as 2392@command{x264}'s @option{--no-chroma-me} option. 2393@end table 2394 2395@item threads (@emph{threads}) 2396Number of encoding threads. 2397 2398@item thread_type 2399Set multithreading technique. Possible values: 2400 2401@table @samp 2402@item slice 2403Slice-based multithreading. It generates the same effect as 2404@command{x264}'s @option{--sliced-threads} option. 2405@item frame 2406Frame-based multithreading. 2407@end table 2408 2409@item flags 2410Set encoding flags. It can be used to disable closed GOP and enable 2411open GOP by setting it to @code{-cgop}. The result is similar to 2412the behavior of @command{x264}'s @option{--open-gop} option. 2413 2414@item rc_init_occupancy (@emph{vbv-init}) 2415 2416@item preset (@emph{preset}) 2417Set the encoding preset. 2418 2419@item tune (@emph{tune}) 2420Set tuning of the encoding params. 2421 2422@item profile (@emph{profile}) 2423Set profile restrictions. 2424 2425@item fastfirstpass 2426Enable fast settings when encoding first pass, when set to 1. When set 2427to 0, it has the same effect of @command{x264}'s 2428@option{--slow-firstpass} option. 2429 2430@item crf (@emph{crf}) 2431Set the quality for constant quality mode. 2432 2433@item crf_max (@emph{crf-max}) 2434In CRF mode, prevents VBV from lowering quality beyond this point. 2435 2436@item qp (@emph{qp}) 2437Set constant quantization rate control method parameter. 2438 2439@item aq-mode (@emph{aq-mode}) 2440Set AQ method. Possible values: 2441 2442@table @samp 2443@item none (@emph{0}) 2444Disabled. 2445 2446@item variance (@emph{1}) 2447Variance AQ (complexity mask). 2448 2449@item autovariance (@emph{2}) 2450Auto-variance AQ (experimental). 2451@end table 2452 2453@item aq-strength (@emph{aq-strength}) 2454Set AQ strength, reduce blocking and blurring in flat and textured areas. 2455 2456@item psy 2457Use psychovisual optimizations when set to 1. When set to 0, it has the 2458same effect as @command{x264}'s @option{--no-psy} option. 2459 2460@item psy-rd (@emph{psy-rd}) 2461Set strength of psychovisual optimization, in 2462@var{psy-rd}:@var{psy-trellis} format. 2463 2464@item rc-lookahead (@emph{rc-lookahead}) 2465Set number of frames to look ahead for frametype and ratecontrol. 2466 2467@item weightb 2468Enable weighted prediction for B-frames when set to 1. When set to 0, 2469it has the same effect as @command{x264}'s @option{--no-weightb} option. 2470 2471@item weightp (@emph{weightp}) 2472Set weighted prediction method for P-frames. Possible values: 2473 2474@table @samp 2475@item none (@emph{0}) 2476Disabled 2477@item simple (@emph{1}) 2478Enable only weighted refs 2479@item smart (@emph{2}) 2480Enable both weighted refs and duplicates 2481@end table 2482 2483@item ssim (@emph{ssim}) 2484Enable calculation and printing SSIM stats after the encoding. 2485 2486@item intra-refresh (@emph{intra-refresh}) 2487Enable the use of Periodic Intra Refresh instead of IDR frames when set 2488to 1. 2489 2490@item avcintra-class (@emph{class}) 2491Configure the encoder to generate AVC-Intra. 2492Valid values are 50,100 and 200 2493 2494@item bluray-compat (@emph{bluray-compat}) 2495Configure the encoder to be compatible with the bluray standard. 2496It is a shorthand for setting "bluray-compat=1 force-cfr=1". 2497 2498@item b-bias (@emph{b-bias}) 2499Set the influence on how often B-frames are used. 2500 2501@item b-pyramid (@emph{b-pyramid}) 2502Set method for keeping of some B-frames as references. Possible values: 2503 2504@table @samp 2505@item none (@emph{none}) 2506Disabled. 2507@item strict (@emph{strict}) 2508Strictly hierarchical pyramid. 2509@item normal (@emph{normal}) 2510Non-strict (not Blu-ray compatible). 2511@end table 2512 2513@item mixed-refs 2514Enable the use of one reference per partition, as opposed to one 2515reference per macroblock when set to 1. When set to 0, it has the 2516same effect as @command{x264}'s @option{--no-mixed-refs} option. 2517 2518@item 8x8dct 2519Enable adaptive spatial transform (high profile 8x8 transform) 2520when set to 1. When set to 0, it has the same effect as 2521@command{x264}'s @option{--no-8x8dct} option. 2522 2523@item fast-pskip 2524Enable early SKIP detection on P-frames when set to 1. When set 2525to 0, it has the same effect as @command{x264}'s 2526@option{--no-fast-pskip} option. 2527 2528@item aud (@emph{aud}) 2529Enable use of access unit delimiters when set to 1. 2530 2531@item mbtree 2532Enable use macroblock tree ratecontrol when set to 1. When set 2533to 0, it has the same effect as @command{x264}'s 2534@option{--no-mbtree} option. 2535 2536@item deblock (@emph{deblock}) 2537Set loop filter parameters, in @var{alpha}:@var{beta} form. 2538 2539@item cplxblur (@emph{cplxblur}) 2540Set fluctuations reduction in QP (before curve compression). 2541 2542@item partitions (@emph{partitions}) 2543Set partitions to consider as a comma-separated list of. Possible 2544values in the list: 2545 2546@table @samp 2547@item p8x8 25488x8 P-frame partition. 2549@item p4x4 25504x4 P-frame partition. 2551@item b8x8 25524x4 B-frame partition. 2553@item i8x8 25548x8 I-frame partition. 2555@item i4x4 25564x4 I-frame partition. 2557(Enabling @samp{p4x4} requires @samp{p8x8} to be enabled. Enabling 2558@samp{i8x8} requires adaptive spatial transform (@option{8x8dct} 2559option) to be enabled.) 2560@item none (@emph{none}) 2561Do not consider any partitions. 2562@item all (@emph{all}) 2563Consider every partition. 2564@end table 2565 2566@item direct-pred (@emph{direct}) 2567Set direct MV prediction mode. Possible values: 2568 2569@table @samp 2570@item none (@emph{none}) 2571Disable MV prediction. 2572@item spatial (@emph{spatial}) 2573Enable spatial predicting. 2574@item temporal (@emph{temporal}) 2575Enable temporal predicting. 2576@item auto (@emph{auto}) 2577Automatically decided. 2578@end table 2579 2580@item slice-max-size (@emph{slice-max-size}) 2581Set the limit of the size of each slice in bytes. If not specified 2582but RTP payload size (@option{ps}) is specified, that is used. 2583 2584@item stats (@emph{stats}) 2585Set the file name for multi-pass stats. 2586 2587@item nal-hrd (@emph{nal-hrd}) 2588Set signal HRD information (requires @option{vbv-bufsize} to be set). 2589Possible values: 2590 2591@table @samp 2592@item none (@emph{none}) 2593Disable HRD information signaling. 2594@item vbr (@emph{vbr}) 2595Variable bit rate. 2596@item cbr (@emph{cbr}) 2597Constant bit rate (not allowed in MP4 container). 2598@end table 2599 2600@item x264opts (N.A.) 2601Set any x264 option, see @command{x264 --fullhelp} for a list. 2602 2603Argument is a list of @var{key}=@var{value} couples separated by 2604":". In @var{filter} and @var{psy-rd} options that use ":" as a separator 2605themselves, use "," instead. They accept it as well since long ago but this 2606is kept undocumented for some reason. 2607 2608For example to specify libx264 encoding options with @command{ffmpeg}: 2609@example 2610ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv 2611@end example 2612 2613@item a53cc @var{boolean} 2614Import closed captions (which must be ATSC compatible format) into output. 2615Only the mpeg2 and h264 decoders provide these. Default is 1 (on). 2616 2617@item x264-params (N.A.) 2618Override the x264 configuration using a :-separated list of key=value 2619parameters. 2620 2621This option is functionally the same as the @option{x264opts}, but is 2622duplicated for compatibility with the Libav fork. 2623 2624For example to specify libx264 encoding options with @command{ffmpeg}: 2625@example 2626ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\ 2627cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\ 2628no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT 2629@end example 2630@end table 2631 2632Encoding ffpresets for common usages are provided so they can be used with the 2633general presets system (e.g. passing the @option{pre} option). 2634 2635@section libx265 2636 2637x265 H.265/HEVC encoder wrapper. 2638 2639This encoder requires the presence of the libx265 headers and library 2640during configuration. You need to explicitly configure the build with 2641@option{--enable-libx265}. 2642 2643@subsection Options 2644 2645@table @option 2646@item b 2647Sets target video bitrate. 2648 2649@item bf 2650 2651@item g 2652Set the GOP size. 2653 2654@item keyint_min 2655Minimum GOP size. 2656 2657@item refs 2658Number of reference frames each P-frame can use. The range is from @var{1-16}. 2659 2660@item preset 2661Set the x265 preset. 2662 2663@item tune 2664Set the x265 tune parameter. 2665 2666@item profile 2667Set profile restrictions. 2668 2669@item crf 2670Set the quality for constant quality mode. 2671 2672@item qp 2673Set constant quantization rate control method parameter. 2674 2675@item qmin 2676Minimum quantizer scale. 2677 2678@item qmax 2679Maximum quantizer scale. 2680 2681@item qdiff 2682Maximum difference between quantizer scales. 2683 2684@item qblur 2685Quantizer curve blur 2686 2687@item qcomp 2688Quantizer curve compression factor 2689 2690@item i_qfactor 2691 2692@item b_qfactor 2693 2694@item forced-idr 2695Normally, when forcing a I-frame type, the encoder can select any type 2696of I-frame. This option forces it to choose an IDR-frame. 2697 2698@item x265-params 2699Set x265 options using a list of @var{key}=@var{value} couples separated 2700by ":". See @command{x265 --help} for a list of options. 2701 2702For example to specify libx265 encoding options with @option{-x265-params}: 2703 2704@example 2705ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4 2706@end example 2707@end table 2708 2709@section libxavs2 2710 2711xavs2 AVS2-P2/IEEE1857.4 encoder wrapper. 2712 2713This encoder requires the presence of the libxavs2 headers and library 2714during configuration. You need to explicitly configure the build with 2715@option{--enable-libxavs2}. 2716 2717The following standard libavcodec options are used: 2718@itemize 2719@item 2720@option{b} / @option{bit_rate} 2721@item 2722@option{g} / @option{gop_size} 2723@item 2724@option{bf} / @option{max_b_frames} 2725@end itemize 2726 2727The encoder also has its own specific options: 2728@subsection Options 2729 2730@table @option 2731@item lcu_row_threads 2732Set the number of parallel threads for rows from 1 to 8 (default 5). 2733 2734@item initial_qp 2735Set the xavs2 quantization parameter from 1 to 63 (default 34). This is 2736used to set the initial qp for the first frame. 2737 2738@item qp 2739Set the xavs2 quantization parameter from 1 to 63 (default 34). This is 2740used to set the qp value under constant-QP mode. 2741 2742@item max_qp 2743Set the max qp for rate control from 1 to 63 (default 55). 2744 2745@item min_qp 2746Set the min qp for rate control from 1 to 63 (default 20). 2747 2748@item speed_level 2749Set the Speed level from 0 to 9 (default 0). Higher is better but slower. 2750 2751@item log_level 2752Set the log level from -1 to 3 (default 0). -1: none, 0: error, 27531: warning, 2: info, 3: debug. 2754 2755@item xavs2-params 2756Set xavs2 options using a list of @var{key}=@var{value} couples separated 2757by ":". 2758 2759For example to specify libxavs2 encoding options with @option{-xavs2-params}: 2760 2761@example 2762ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2 2763@end example 2764@end table 2765 2766@section libxvid 2767 2768Xvid MPEG-4 Part 2 encoder wrapper. 2769 2770This encoder requires the presence of the libxvidcore headers and library 2771during configuration. You need to explicitly configure the build with 2772@code{--enable-libxvid --enable-gpl}. 2773 2774The native @code{mpeg4} encoder supports the MPEG-4 Part 2 format, so 2775users can encode to this format without this library. 2776 2777@subsection Options 2778 2779The following options are supported by the libxvid wrapper. Some of 2780the following options are listed but are not documented, and 2781correspond to shared codec options. See @ref{codec-options,,the Codec 2782Options chapter} for their documentation. The other shared options 2783which are not listed have no effect for the libxvid encoder. 2784 2785@table @option 2786@item b 2787 2788@item g 2789 2790@item qmin 2791 2792@item qmax 2793 2794@item mpeg_quant 2795 2796@item threads 2797 2798@item bf 2799 2800@item b_qfactor 2801 2802@item b_qoffset 2803 2804@item flags 2805Set specific encoding flags. Possible values: 2806 2807@table @samp 2808 2809@item mv4 2810Use four motion vector by macroblock. 2811 2812@item aic 2813Enable high quality AC prediction. 2814 2815@item gray 2816Only encode grayscale. 2817 2818@item gmc 2819Enable the use of global motion compensation (GMC). 2820 2821@item qpel 2822Enable quarter-pixel motion compensation. 2823 2824@item cgop 2825Enable closed GOP. 2826 2827@item global_header 2828Place global headers in extradata instead of every keyframe. 2829 2830@end table 2831 2832@item trellis 2833 2834@item me_method 2835Set motion estimation method. Possible values in decreasing order of 2836speed and increasing order of quality: 2837 2838@table @samp 2839@item zero 2840Use no motion estimation (default). 2841 2842@item phods 2843@item x1 2844@item log 2845Enable advanced diamond zonal search for 16x16 blocks and half-pixel 2846refinement for 16x16 blocks. @samp{x1} and @samp{log} are aliases for 2847@samp{phods}. 2848 2849@item epzs 2850Enable all of the things described above, plus advanced diamond zonal 2851search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion 2852estimation on chroma planes. 2853 2854@item full 2855Enable all of the things described above, plus extended 16x16 and 8x8 2856blocks search. 2857@end table 2858 2859@item mbd 2860Set macroblock decision algorithm. Possible values in the increasing 2861order of quality: 2862 2863@table @samp 2864@item simple 2865Use macroblock comparing function algorithm (default). 2866 2867@item bits 2868Enable rate distortion-based half pixel and quarter pixel refinement for 286916x16 blocks. 2870 2871@item rd 2872Enable all of the things described above, plus rate distortion-based 2873half pixel and quarter pixel refinement for 8x8 blocks, and rate 2874distortion-based search using square pattern. 2875@end table 2876 2877@item lumi_aq 2878Enable lumi masking adaptive quantization when set to 1. Default is 0 2879(disabled). 2880 2881@item variance_aq 2882Enable variance adaptive quantization when set to 1. Default is 0 2883(disabled). 2884 2885When combined with @option{lumi_aq}, the resulting quality will not 2886be better than any of the two specified individually. In other 2887words, the resulting quality will be the worse one of the two 2888effects. 2889 2890@item ssim 2891Set structural similarity (SSIM) displaying method. Possible values: 2892 2893@table @samp 2894@item off 2895Disable displaying of SSIM information. 2896 2897@item avg 2898Output average SSIM at the end of encoding to stdout. The format of 2899showing the average SSIM is: 2900 2901@example 2902Average SSIM: %f 2903@end example 2904 2905For users who are not familiar with C, %f means a float number, or 2906a decimal (e.g. 0.939232). 2907 2908@item frame 2909Output both per-frame SSIM data during encoding and average SSIM at 2910the end of encoding to stdout. The format of per-frame information 2911is: 2912 2913@example 2914 SSIM: avg: %1.3f min: %1.3f max: %1.3f 2915@end example 2916 2917For users who are not familiar with C, %1.3f means a float number 2918rounded to 3 digits after the dot (e.g. 0.932). 2919 2920@end table 2921 2922@item ssim_acc 2923Set SSIM accuracy. Valid options are integers within the range of 29240-4, while 0 gives the most accurate result and 4 computes the 2925fastest. 2926 2927@end table 2928 2929@section MediaFoundation 2930 2931This provides wrappers to encoders (both audio and video) in the 2932MediaFoundation framework. It can access both SW and HW encoders. 2933Video encoders can take input in either of nv12 or yuv420p form 2934(some encoders support both, some support only either - in practice, 2935nv12 is the safer choice, especially among HW encoders). 2936 2937@section mpeg2 2938 2939MPEG-2 video encoder. 2940 2941@subsection Options 2942 2943@table @option 2944@item profile 2945Select the mpeg2 profile to encode: 2946 2947@table @samp 2948@item 422 2949@item high 2950@item ss 2951Spatially Scalable 2952@item snr 2953SNR Scalable 2954@item main 2955@item simple 2956@end table 2957 2958@item level 2959Select the mpeg2 level to encode: 2960 2961@table @samp 2962@item high 2963@item high1440 2964@item main 2965@item low 2966@end table 2967 2968@item seq_disp_ext @var{integer} 2969Specifies if the encoder should write a sequence_display_extension to the 2970output. 2971@table @option 2972@item -1 2973@itemx auto 2974Decide automatically to write it or not (this is the default) by checking if 2975the data to be written is different from the default or unspecified values. 2976@item 0 2977@itemx never 2978Never write it. 2979@item 1 2980@itemx always 2981Always write it. 2982@end table 2983@item video_format @var{integer} 2984Specifies the video_format written into the sequence display extension 2985indicating the source of the video pictures. The default is @samp{unspecified}, 2986can be @samp{component}, @samp{pal}, @samp{ntsc}, @samp{secam} or @samp{mac}. 2987For maximum compatibility, use @samp{component}. 2988@item a53cc @var{boolean} 2989Import closed captions (which must be ATSC compatible format) into output. 2990Default is 1 (on). 2991@end table 2992 2993@section png 2994 2995PNG image encoder. 2996 2997@subsection Private options 2998 2999@table @option 3000@item dpi @var{integer} 3001Set physical density of pixels, in dots per inch, unset by default 3002@item dpm @var{integer} 3003Set physical density of pixels, in dots per meter, unset by default 3004@end table 3005 3006@section ProRes 3007 3008Apple ProRes encoder. 3009 3010FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder. 3011The used encoder can be chosen with the @code{-vcodec} option. 3012 3013@subsection Private Options for prores-ks 3014 3015@table @option 3016@item profile @var{integer} 3017Select the ProRes profile to encode 3018@table @samp 3019@item proxy 3020@item lt 3021@item standard 3022@item hq 3023@item 4444 3024@item 4444xq 3025@end table 3026 3027@item quant_mat @var{integer} 3028Select quantization matrix. 3029@table @samp 3030@item auto 3031@item default 3032@item proxy 3033@item lt 3034@item standard 3035@item hq 3036@end table 3037If set to @var{auto}, the matrix matching the profile will be picked. 3038If not set, the matrix providing the highest quality, @var{default}, will be 3039picked. 3040 3041@item bits_per_mb @var{integer} 3042How many bits to allot for coding one macroblock. Different profiles use 3043between 200 and 2400 bits per macroblock, the maximum is 8000. 3044 3045@item mbs_per_slice @var{integer} 3046Number of macroblocks in each slice (1-8); the default value (8) 3047should be good in almost all situations. 3048 3049@item vendor @var{string} 3050Override the 4-byte vendor ID. 3051A custom vendor ID like @var{apl0} would claim the stream was produced by 3052the Apple encoder. 3053 3054@item alpha_bits @var{integer} 3055Specify number of bits for alpha component. 3056Possible values are @var{0}, @var{8} and @var{16}. 3057Use @var{0} to disable alpha plane coding. 3058 3059@end table 3060 3061@subsection Speed considerations 3062 3063In the default mode of operation the encoder has to honor frame constraints 3064(i.e. not produce frames with size bigger than requested) while still making 3065output picture as good as possible. 3066A frame containing a lot of small details is harder to compress and the encoder 3067would spend more time searching for appropriate quantizers for each slice. 3068 3069Setting a higher @option{bits_per_mb} limit will improve the speed. 3070 3071For the fastest encoding speed set the @option{qscale} parameter (4 is the 3072recommended value) and do not set a size constraint. 3073 3074@section QSV encoders 3075 3076The family of Intel QuickSync Video encoders (MPEG-2, H.264, HEVC, JPEG/MJPEG and VP9) 3077 3078The ratecontrol method is selected as follows: 3079 3080@itemize @bullet 3081@item 3082When @option{global_quality} is specified, a quality-based mode is used. 3083Specifically this means either 3084@itemize @minus 3085@item 3086@var{CQP} - constant quantizer scale, when the @option{qscale} codec flag is 3087also set (the @option{-qscale} ffmpeg option). 3088 3089@item 3090@var{LA_ICQ} - intelligent constant quality with lookahead, when the 3091@option{look_ahead} option is also set. 3092 3093@item 3094@var{ICQ} -- intelligent constant quality otherwise. 3095@end itemize 3096 3097@item 3098Otherwise, a bitrate-based mode is used. For all of those, you should specify at 3099least the desired average bitrate with the @option{b} option. 3100@itemize @minus 3101@item 3102@var{LA} - VBR with lookahead, when the @option{look_ahead} option is specified. 3103 3104@item 3105@var{VCM} - video conferencing mode, when the @option{vcm} option is set. 3106 3107@item 3108@var{CBR} - constant bitrate, when @option{maxrate} is specified and equal to 3109the average bitrate. 3110 3111@item 3112@var{VBR} - variable bitrate, when @option{maxrate} is specified, but is higher 3113than the average bitrate. 3114 3115@item 3116@var{AVBR} - average VBR mode, when @option{maxrate} is not specified. This mode 3117is further configured by the @option{avbr_accuracy} and 3118@option{avbr_convergence} options. 3119@end itemize 3120@end itemize 3121 3122Note that depending on your system, a different mode than the one you specified 3123may be selected by the encoder. Set the verbosity level to @var{verbose} or 3124higher to see the actual settings used by the QSV runtime. 3125 3126Additional libavcodec global options are mapped to MSDK options as follows: 3127 3128@itemize 3129@item 3130@option{g/gop_size} -> @option{GopPicSize} 3131 3132@item 3133@option{bf/max_b_frames}+1 -> @option{GopRefDist} 3134 3135@item 3136@option{rc_init_occupancy/rc_initial_buffer_occupancy} -> 3137@option{InitialDelayInKB} 3138 3139@item 3140@option{slices} -> @option{NumSlice} 3141 3142@item 3143@option{refs} -> @option{NumRefFrame} 3144 3145@item 3146@option{b_strategy/b_frame_strategy} -> @option{BRefType} 3147 3148@item 3149@option{cgop/CLOSED_GOP} codec flag -> @option{GopOptFlag} 3150 3151@item 3152For the @var{CQP} mode, the @option{i_qfactor/i_qoffset} and 3153@option{b_qfactor/b_qoffset} set the difference between @var{QPP} and @var{QPI}, 3154and @var{QPP} and @var{QPB} respectively. 3155 3156@item 3157Setting the @option{coder} option to the value @var{vlc} will make the H.264 3158encoder use CAVLC instead of CABAC. 3159 3160@end itemize 3161 3162@section snow 3163 3164@subsection Options 3165 3166@table @option 3167@item iterative_dia_size 3168dia size for the iterative motion estimation 3169@end table 3170 3171@section VAAPI encoders 3172 3173Wrappers for hardware encoders accessible via VAAPI. 3174 3175These encoders only accept input in VAAPI hardware surfaces. If you have input 3176in software frames, use the @option{hwupload} filter to upload them to the GPU. 3177 3178The following standard libavcodec options are used: 3179@itemize 3180@item 3181@option{g} / @option{gop_size} 3182@item 3183@option{bf} / @option{max_b_frames} 3184@item 3185@option{profile} 3186 3187If not set, this will be determined automatically from the format of the input 3188frames and the profiles supported by the driver. 3189@item 3190@option{level} 3191@item 3192@option{b} / @option{bit_rate} 3193@item 3194@option{maxrate} / @option{rc_max_rate} 3195@item 3196@option{bufsize} / @option{rc_buffer_size} 3197@item 3198@option{rc_init_occupancy} / @option{rc_initial_buffer_occupancy} 3199@item 3200@option{compression_level} 3201 3202Speed / quality tradeoff: higher values are faster / worse quality. 3203@item 3204@option{q} / @option{global_quality} 3205 3206Size / quality tradeoff: higher values are smaller / worse quality. 3207@item 3208@option{qmin} 3209@item 3210@option{qmax} 3211@item 3212@option{i_qfactor} / @option{i_quant_factor} 3213@item 3214@option{i_qoffset} / @option{i_quant_offset} 3215@item 3216@option{b_qfactor} / @option{b_quant_factor} 3217@item 3218@option{b_qoffset} / @option{b_quant_offset} 3219@item 3220@option{slices} 3221@end itemize 3222 3223All encoders support the following options: 3224@table @option 3225@item low_power 3226Some drivers/platforms offer a second encoder for some codecs intended to use 3227less power than the default encoder; setting this option will attempt to use 3228that encoder. Note that it may support a reduced feature set, so some other 3229options may not be available in this mode. 3230 3231@item idr_interval 3232Set the number of normal intra frames between full-refresh (IDR) frames in 3233open-GOP mode. The intra frames are still IRAPs, but will not include global 3234headers and may have non-decodable leading pictures. 3235 3236@item b_depth 3237Set the B-frame reference depth. When set to one (the default), all B-frames 3238will refer only to P- or I-frames. When set to greater values multiple layers 3239of B-frames will be present, frames in each layer only referring to frames in 3240higher layers. 3241 3242@item rc_mode 3243Set the rate control mode to use. A given driver may only support a subset of 3244modes. 3245 3246Possible modes: 3247@table @option 3248@item auto 3249Choose the mode automatically based on driver support and the other options. 3250This is the default. 3251@item CQP 3252Constant-quality. 3253@item CBR 3254Constant-bitrate. 3255@item VBR 3256Variable-bitrate. 3257@item ICQ 3258Intelligent constant-quality. 3259@item QVBR 3260Quality-defined variable-bitrate. 3261@item AVBR 3262Average variable bitrate. 3263@end table 3264 3265@end table 3266 3267Each encoder also has its own specific options: 3268@table @option 3269 3270@item h264_vaapi 3271@option{profile} sets the value of @emph{profile_idc} and the @emph{constraint_set*_flag}s. 3272@option{level} sets the value of @emph{level_idc}. 3273 3274@table @option 3275@item coder 3276Set entropy encoder (default is @emph{cabac}). Possible values: 3277 3278@table @samp 3279@item ac 3280@item cabac 3281Use CABAC. 3282 3283@item vlc 3284@item cavlc 3285Use CAVLC. 3286@end table 3287 3288@item aud 3289Include access unit delimiters in the stream (not included by default). 3290 3291@item sei 3292Set SEI message types to include. 3293Some combination of the following values: 3294@table @samp 3295@item identifier 3296Include a @emph{user_data_unregistered} message containing information about 3297the encoder. 3298@item timing 3299Include picture timing parameters (@emph{buffering_period} and 3300@emph{pic_timing} messages). 3301@item recovery_point 3302Include recovery points where appropriate (@emph{recovery_point} messages). 3303@end table 3304 3305@end table 3306 3307@item hevc_vaapi 3308@option{profile} and @option{level} set the values of 3309@emph{general_profile_idc} and @emph{general_level_idc} respectively. 3310 3311@table @option 3312@item aud 3313Include access unit delimiters in the stream (not included by default). 3314 3315@item tier 3316Set @emph{general_tier_flag}. This may affect the level chosen for the stream 3317if it is not explicitly specified. 3318 3319@item sei 3320Set SEI message types to include. 3321Some combination of the following values: 3322@table @samp 3323@item hdr 3324Include HDR metadata if the input frames have it 3325(@emph{mastering_display_colour_volume} and @emph{content_light_level} 3326messages). 3327@end table 3328 3329@item tiles 3330Set the number of tiles to encode the input video with, as columns x rows. 3331Larger numbers allow greater parallelism in both encoding and decoding, but 3332may decrease coding efficiency. 3333 3334@end table 3335 3336@item mjpeg_vaapi 3337Only baseline DCT encoding is supported. The encoder always uses the standard 3338quantisation and huffman tables - @option{global_quality} scales the standard 3339quantisation table (range 1-100). 3340 3341For YUV, 4:2:0, 4:2:2 and 4:4:4 subsampling modes are supported. RGB is also 3342supported, and will create an RGB JPEG. 3343 3344@table @option 3345@item jfif 3346Include JFIF header in each frame (not included by default). 3347@item huffman 3348Include standard huffman tables (on by default). Turning this off will save 3349a few hundred bytes in each output frame, but may lose compatibility with some 3350JPEG decoders which don't fully handle MJPEG. 3351@end table 3352 3353@item mpeg2_vaapi 3354@option{profile} and @option{level} set the value of @emph{profile_and_level_indication}. 3355 3356@item vp8_vaapi 3357B-frames are not supported. 3358 3359@option{global_quality} sets the @emph{q_idx} used for non-key frames (range 0-127). 3360 3361@table @option 3362@item loop_filter_level 3363@item loop_filter_sharpness 3364Manually set the loop filter parameters. 3365@end table 3366 3367@item vp9_vaapi 3368@option{global_quality} sets the @emph{q_idx} used for P-frames (range 0-255). 3369 3370@table @option 3371@item loop_filter_level 3372@item loop_filter_sharpness 3373Manually set the loop filter parameters. 3374@end table 3375 3376B-frames are supported, but the output stream is always in encode order rather than display 3377order. If B-frames are enabled, it may be necessary to use the @option{vp9_raw_reorder} 3378bitstream filter to modify the output stream to display frames in the correct order. 3379 3380Only normal frames are produced - the @option{vp9_superframe} bitstream filter may be 3381required to produce a stream usable with all decoders. 3382 3383@end table 3384 3385@section vc2 3386 3387SMPTE VC-2 (previously BBC Dirac Pro). This codec was primarily aimed at 3388professional broadcasting but since it supports yuv420, yuv422 and yuv444 at 33898 (limited range or full range), 10 or 12 bits, this makes it suitable for 3390other tasks which require low overhead and low compression (like screen 3391recording). 3392 3393@subsection Options 3394 3395@table @option 3396 3397@item b 3398Sets target video bitrate. Usually that's around 1:6 of the uncompressed 3399video bitrate (e.g. for 1920x1080 50fps yuv422p10 that's around 400Mbps). Higher 3400values (close to the uncompressed bitrate) turn on lossless compression mode. 3401 3402@item field_order 3403Enables field coding when set (e.g. to tt - top field first) for interlaced 3404inputs. Should increase compression with interlaced content as it splits the 3405fields and encodes each separately. 3406 3407@item wavelet_depth 3408Sets the total amount of wavelet transforms to apply, between 1 and 5 (default). 3409Lower values reduce compression and quality. Less capable decoders may not be 3410able to handle values of @option{wavelet_depth} over 3. 3411 3412@item wavelet_type 3413Sets the transform type. Currently only @var{5_3} (LeGall) and @var{9_7} 3414(Deslauriers-Dubuc) 3415are implemented, with 9_7 being the one with better compression and thus 3416is the default. 3417 3418@item slice_width 3419@item slice_height 3420Sets the slice size for each slice. Larger values result in better compression. 3421For compatibility with other more limited decoders use @option{slice_width} of 342232 and @option{slice_height} of 8. 3423 3424@item tolerance 3425Sets the undershoot tolerance of the rate control system in percent. This is 3426to prevent an expensive search from being run. 3427 3428@item qm 3429Sets the quantization matrix preset to use by default or when @option{wavelet_depth} 3430is set to 5 3431@itemize @minus 3432@item 3433@var{default} 3434Uses the default quantization matrix from the specifications, extended with 3435values for the fifth level. This provides a good balance between keeping detail 3436and omitting artifacts. 3437 3438@item 3439@var{flat} 3440Use a completely zeroed out quantization matrix. This increases PSNR but might 3441reduce perception. Use in bogus benchmarks. 3442 3443@item 3444@var{color} 3445Reduces detail but attempts to preserve color at extremely low bitrates. 3446@end itemize 3447 3448@end table 3449 3450@c man end VIDEO ENCODERS 3451 3452@chapter Subtitles Encoders 3453@c man begin SUBTITLES ENCODERS 3454 3455@section dvdsub 3456 3457This codec encodes the bitmap subtitle format that is used in DVDs. 3458Typically they are stored in VOBSUB file pairs (*.idx + *.sub), 3459and they can also be used in Matroska files. 3460 3461@subsection Options 3462 3463@table @option 3464@item palette 3465Specify the global palette used by the bitmaps. 3466 3467The format for this option is a string containing 16 24-bits hexadecimal 3468numbers (without 0x prefix) separated by commas, for example @code{0d00ee, 3469ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 34707b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b}. 3471 3472@item even_rows_fix 3473When set to 1, enable a work-around that makes the number of pixel rows 3474even in all subtitles. This fixes a problem with some players that 3475cut off the bottom row if the number is odd. The work-around just adds 3476a fully transparent row if needed. The overhead is low, typically 3477one byte per subtitle on average. 3478 3479By default, this work-around is disabled. 3480@end table 3481 3482@c man end SUBTITLES ENCODERS 3483