Files
av1-encoding-scripts/parameters.md
2026-03-02 15:07:13 +01:00

3.6 KiB

Encoding Configuration Parameters

This document details the configuration parameters used across the AomEnc and SVT-AV1 encoding scripts.

Audio Demuxing & Downmixing

The audio processing extracts streams using ffmpeg and automatically downmixes surround layouts to stereo if requested.

Downmixing Parameters

  • 5.1 Channel Layouts (6 channels)

    -af "pan=stereo|c0=c2+0.30*c0+0.30*c4|c1=c2+0.30*c1+0.30*c5"
    
  • 7.1 Channel Layouts (8 channels)

    -af "pan=stereo|c0=c2+0.30*c0+0.30*c4+0.30*c6|c1=c2+0.30*c1+0.30*c5+0.30*c7"
    

Non-Downmixed Encoding Bitrates (Opus)

When preserving the original channel layout (no downmixing) or if the source is already stereo/mono, audio is encoded with the following bitrates based on channel count:

  • Mono (1 channel): 64k
  • Stereo (2 channels): 128k
  • 5.1 Surround (6 channels): 256k
  • 7.1 Surround (8 channels): 384k
  • Other/Uncommon Layouts: 192k (fallback default)

VFR to CFR Conversion

To handle Variable Frame Rate (VFR) sources reliably on UTVideo intermediate generation, HandBrakeCLI is used to convert them to Constant Frame Rate (CFR) before processing.

The exact HandBrakeCLI arguments used:

HandBrakeCLI \
  --input <source_file> \
  --output <intermediate_cfr_file> \
  --cfr \
  --rate <target_cfr_fps> \
  --encoder x264_10bit \
  --quality 0 \
  --encoder-preset superfast \
  --encoder-tune fastdecode \
  --audio none \
  --subtitle none \
  --crop-mode none

Encoder-Specific Parameters

AomEnc (aom-psy101)

Special Version Repository: https://gitlab.com/damian101/aom-psy101

Parameters parsed to the aom encoder:

--bit-depth=10 \
--cpu-used=2 \
--end-usage=q \
--cq-level=<crf_value> \
--min-q=6 \
--threads=2 \
--tune-content=psy \
--frame-parallel=1 \
--tile-columns=1 \
--gf-max-pyr-height=4 \
--deltaq-mode=2 \
--enable-keyframe-filtering=0 \
--disable-kf \
--enable-fwd-kf=0 \
--kf-max-dist=9999 \
--sb-size=dynamic \
--enable-chroma-deltaq=1 \
--enable-qm=1 \
--color-primaries=bt709 \
--transfer-characteristics=bt709 \
--matrix-coefficients=bt709

(Note: --cq-level dynamically defaults to 28 but can be overwritten when executing the script via the --crf argument).

SVT-AV1 (SVT-AV1-Essential)

Special Version Repository: https://github.com/nekotrix/SVT-AV1-Essential/

Parameters initialized for the svt-av1 encoder:

--speed slower \
--quality medium \
--film-grain <grain_value> \
--color-primaries 1 \
--transfer-characteristics 1 \
--matrix-coefficients 1 \
--scd 0 \
--keyint 0 \
--lp 2 \
--auto-tiling 1 \
--tune 1 \
--progress 2

(Note: Parameters such as --speed, --quality, and --film-grain can be overridden when executing the script).

av1an Initiation Commands

AomEnc

Arguments used to start av1an using the AomEnc encoder:

av1an -i <vpy_script> -o <encoded_mkv> -n \
  -e aom \
  --photon-noise <grain> \
  --resume \
  --sc-pix-format yuv420p \
  -c mkvmerge \
  --set-thread-affinity 2 \
  --pix-format yuv420p10le \
  --force \
  --no-defaults \
  -w <calculated_workers> \
  --passes 2 \
  -v "<aom_encoder_parameters_above>"

SVT-AV1

Arguments used to start av1an using the SVT-AV1 encoder:

av1an -i <vpy_script> -o <encoded_mkv> -n \
  -e svt-av1 \
  --resume \
  --sc-pix-format yuv420p \
  -c mkvmerge \
  --set-thread-affinity 2 \
  --pix-format yuv420p10le \
  --force \
  --no-defaults \
  -w <calculated_workers> \
  -v "<svt_av1_encoder_parameters_above>"