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