Skip to content

Reading option tables

current

Each encoder and image-format page ends with a Full option reference: every option of one named release, with its default and what it does. The practical guidance is at the top of each page; the tables are for looking up a specific flag. This page explains how to read them.

AreaPages
AV1 encodersSVT-AV1 and its forks (HDR, PSY, PSYEX, Essential, 5fish), aomenc and its forks (AV1-lavish, aom-psy101), rav1e, AVM (AV2)
Other videox264, x265, vpxenc, VVenC
HardwareNVENC, QSV, AMF, VAAPI, Vulkan, MediaCodec (FFmpeg wrapper options)
AudioOpus (opusenc, libopus), AAC (FFmpeg aac, libfdk_aac, fdkaac), qaac, exhale
ImagesAVIF, HEIC, JPEG XL, WebP, JPEG, JPEG 2000, PNG, GIF, QOI
Pipeline toolsFFmpeg, Av1an, MKVToolNix, MP4Box, dav1d, dovi_tool, hdr10plus_tool — the options that matter, not full inventories

Commercial SDKs such as Eve-AV1 and Aurora1 publish no option reference.

A table covers one interface at one release. aomenc, SvtAv1EncApp, FFmpeg’s libsvtav1 wrapper and a GPU driver accept different flags with different defaults, and a fork can change both, so check the version named above the table against the one you run.

The Default column says what happens when you omit the option.

Default shownMeaning
A valueThe interface uses this value unless you override it.
Automatic / sentinelA value is chosen later from the input, preset or hardware. -1, 0 and auto mean different things in different tools.
Preset- or tune-dependentThe preset or tune sets it; the row gives the value for the default preset where it matters.
Input- or mode-dependentPicture size, channel count, sample rate or rate-control mode changes it.
UnsetNothing is passed, so the library’s own behaviour applies. Not the same as zero.
RequiredYou must supply it.

A displayed range can include sentinel values, so read the description before using an endpoint: 0 often means “automatic” rather than “minimum”. An option with an optional value can behave differently when written bare — Gifsicle’s omitted --lossy is 0, a bare --lossy means 20. Quality scales are private to each encoder: CRF 30 in x264, SVT-AV1 and libvpx are three unrelated settings, and “quality 90” in two image encoders are not comparable.

FFmpeg options that apply to every encoder

Section titled “FFmpeg options that apply to every encoder”

ffmpeg -h encoder=<name> lists only an encoder wrapper’s private options. These generic options apply to every encoder and are not repeated in the per-encoder tables:

OptionWhat it sets
-b:v, -b:aTarget bitrate in bits/s (5M, 160k).
-maxrate, -minrate, -bufsizeRate-control limits in bits/s and the VBV buffer in bits, for encoders and modes that honour them.
-g, -bf, -refsMaximum GOP length in frames, consecutive B-frames and reference frames.
-q:v, -global_quality, -crf, -cq, -qpQuality controls. Which one an encoder uses, and its scale, is encoder-specific.
-preset, -tune, -profile:v, -level:vEncoder-specific names. A profile or level constrains compatibility; it is not a quality setting.
-pix_fmt, -ar, -acPixel format, audio sample rate in Hz and channel count. Setting them converts if the input differs.
-threadsRequested threads; encoders may cap or ignore it.

Use stream specifiers (-b:v:0, -c:a:1) when an option could match several streams. Library pass-through strings such as -svtav1-params, -x264-params and -x265-params use the library’s own key=value:key=value syntax, not the standalone command-line spelling.