Aomenc

GIT: AOM

Table of Contents

Important command line options

Command LineDescription
--helpShow usage options and exit
--end-usage=argRate control mode (vbr, cbr(default), cq, q). VBR and CBR are self explanatory. CQ (Constrained Quality) try to follow quantizer, adjusted to fit given rate , Q is for Quality.
--cq-level=argConstant/Constrained Quality level, used in Q/CQ modes.
--cpu-used=argCPU Used (0..6) Good mode, (5..9) realtime mode (default). Default is good mode(CPU-0 to CPU-6). If realtime flag(--rt), every speed set above 6 will default back to 6. Lower numbers are slower.
--target-bitrate=argBitrate (kbps)
--bit-depth=argBit depth (8, 10, 12). Default is the bit-depth recognized by aomenc from the source file. It's recommened to set 10-bit, even with 8-bit source, as it improves efficiency, 12-bit is not recommended for end compression, as it is not supported in the main AV1 HW decoding profile.
--tile-columns=argNumber of tile columns to use, log2 (number to power of 2). With --tile-columns=2, will result in 4 tile columns.
--tile-rows=argNumber of tile rows to use, log2 (number to power of 2). With --tile-rows=1 will result in 2 tile rows.
--threads=argLimit on allowed number of threads to use. Up to 64.
--lag-in-frames=argNumber of lagged frames used by the encoder for lookahead and alternate reference frame placement(default 19, max 35).
--enable-cdef=argEnable the constrained directional enhancement filter (0: false, 1: true (default)). CDEF is a filter used to clean up artifacts inflicted by encoder
--aq-mode=argAdaptive quantization mode(0: default. 1: Variance. 2: Complexity. 3: Cyclic Refresh)
--tune-content=argTune content type (default,screen).
--enable-fwd-kf=argEnable forward reference keyframes(default=0).
--kf-min-dist=argMinimum keyframe interval in frames(default=12).
--kf-max-dist=argMaximum interval in frames at which forced keyframes will be placed(default=9999, or adaptive keyframe placement only).
--enable-keyframe-filtering=argApply temporal filtering on key frame(0: no filter, 1: filter without overlay (default), 2: filter with overlay - experimental, may break random access in players.)
--arnr-maxframes=argMaximum number of alternate reference noise reduced frames used by the encoder(default=7).
--arnr-strength=argARNR frames filtering strength(default=5).
--enable-qm=argEnable quantisation matrices (0: false (default), 1: true).
--quant-b-adapt=argUse adaptive quantize_b(default=0).
--mv-cost-upd-freq=argUpdate freq for mv costs(motion vector estimation cost calculation) (0: SB(SuperBlock), 1: SB Row per Tile, 2: Tile, 3: Off.)
--enable-chroma-deltaq=argEnable chroma delta quant (0: false (default), 1: true). May be broken below --cq-level=15.
--color-primaries=argColor primaries (CICP) of input content: bt709, unspecified, bt601, bt470m, bt470bg, smpte240, film, bt2020, xyz, smpte431, smpte432, ebu3213.
--transfer-characteristics=argTransfer characteristics (CICP) of input content(unspecified, bt709, bt470m, bt470bg, bt601, smpte240, lin, log100, log100sq10, iec61966, bt1361, srgb, bt2020-10bit, bt2020-12bit, smpte2084, hlg, smpte428.
--matrix-coefficients=argMatrix coefficients (CICP) of input content: identity, bt709, unspecified, fcc73, bt470bg, bt601, smpte240, ycgco, bt2020ncl, bt2020cl, smpte2085, chromncl, chromcl, ictcp.

Example settings and explanation

Constant quality

--end-usage=q --cq-level=30 --cpu-used=4 --threads=64

It is recommended to set it the rate control --end-usage=q to get the highest quality rate control method possible. Only use CQ if you are planning to stream with a maximum bitrate, and CBR/VBR for livestreaming.

It is recommended to the --cq-level in range 20-40 depending on your source.

Target Bitrate

--end-usage=vbr --target-bitrate=1000 --cpu-used=4 --threads=64

To get good efficiency with VBR, it is strongly recommended to use aomenc in 2-pass mode(which is the default in av1an).

Tiles(tile columns and rows)

... --tile-columns=2 --tile-rows=1 ...

If tiles required to improve playback on old devices or high framerates, set --tile-columns=2 and --tile-rows=1 at 1080p. For higher resolution/higher framerate encoding, set it to --tile-columns=3 and --tile-rows=2.

CPU preset

... --cpu-used=6 ...

--cpu-used=6 requires ~30% less bitrate than x265 for same quality, gains by preset increments are relatively smaller than x264/x265.

Bit-depth

... --bit-depth=10 ... .. -b 8.. .. -b 10.. .. -b 12.. It is recommended to set it to 10-bit even for 8-bit content for higher efficiency (due to better compression efficiency) and less banding.

Lag-in-frames

... --lag-in-frames=48 ...

More is better, up to a limit of 48 (default is 35).

Content tune

... --tune-content=default ...

default: tuned for most content. screen: tuned for screen recordings

Flags used for most native 10-bit HDR content

... --color-primaries=bt2020 --transfer-characteristics=smpte2084 --matrix-coefficients=bt2020ncl ...

Example command line for good quality

--end-usage=q --cq-level=22 --cpu-used=4 --threads=8 --bit-depth=10 --lag-in-frames=35 --enable-fwd-kf=1 --enable-qm=1 --enable-chroma-deltaq=1 --quant-b-adapt=1 --mv-cost-upd-freq=2

Example command line for fast speed

--end-usage=q --cq-level=22 --cpu-used=6 --threads=64 --tile-columns=2 --tile-rows=1 --bit-depth=8