Recommended VOD Encoding Command Lines
The following command lines provide recommended starting points for VOD encoding with Capped CRF (CRF + VBV) rate control.
1. VOD – Normal Content – 1080p SDR
ffmpeg:
./ffmpeg -hide_banner -i $INPUT -c:v libwzav1 -wzav1-sp $SPEED -g $GOP_MAX -keyint_min $GOP_MIN -b:v $BITRATE -bufsize $BUF_SZ -lag-in-frames 72 -threads $THREADS -end-usage 3 -crf $CRF -fpp 4 -pass 1 -wzav1-params passes=2:max-gf-interval=16:enable-vbv=1:rc-model=1:tune-content=auto -an -passlogfile $2pass_log_file -f null -y /dev/null && \
./ffmpeg -hide_banner -i $INPUT -c:v libwzav1 -wzav1-sp $SPEED -g $GOP_MAX -keyint_min $GOP_MIN -b:v $BITRATE -bufsize $BUF_SZ -lag-in-frames 72 -threads $THREADS -end-usage 3 -crf $CRF -fpp 4 -pass 2 -wzav1-params passes=2:max-gf-interval=16:enable-vbv=1:rc-model=1:tune-content=auto -an -passlogfile $2pass_log_file -f ivf -y $OUTPUT
aurora_av1enc:
./aurora_av1enc input.y4m --passes=2 --cpu-used=$SPEED --rc-model=1 --end-usage=q --cq-level={CRF} --enable-vbv=1 --buf-sz=$BUF_SZ --target-bitrate=$BITRATE --kf-max-dist=$GOP_MAX --kf-min-dist=$GOP_MIN --threads=$THREADS --enable-frame-mt=4 --max-gf-interval=16 --lag-in-frames=72 --bit-depth=$BIT_DEPTH --input-bit-depth=$BIT_DEPTH --tune-content=auto -o $OUTPUT
2. VOD – Normal Content – 4K HDR
ffmpeg:
./ffmpeg -hide_banner -i $INPUT -c:v libwzav1 -wzav1-sp $SPEED -g $GOP_MAX -keyint_min $GOP_MIN -b:v $BITRATE -bufsize $BUF_SZ -lag-in-frames 72 -threads $THREADS -end-usage 3 -crf $CRF -fpp 4 -pass 1 -wzav1-params passes=2:max-gf-interval=16:enable-vbv=1:rc-model=1:color-primaries=$COLOR_PRIMARIES:transfer-characteristics=$TRANSFER:matrix-coefficients=$MATRIX:tune-content=auto -an -passlogfile $2pass_log_file -f null -y /dev/null && \
./ffmpeg -hide_banner -i $INPUT -c:v libwzav1 -wzav1-sp $SPEED -g $GOP_MAX -keyint_min $GOP_MIN -b:v $BITRATE -bufsize $BUF_SZ -lag-in-frames 72 -threads $THREADS -end-usage 3 -crf $CRF -fpp 4 -pass 2 -wzav1-params passes=2:max-gf-interval=16:enable-vbv=1:rc-model=1:color-primaries=$COLOR_PRIMARIES:transfer-characteristics=$TRANSFER:matrix-coefficients=$MATRIX:tune-content=auto -an -passlogfile $2pass_log_file -f ivf -y $OUTPUT
aurora_av1enc:
./aurora_av1enc input.y4m --passes=2 --cpu-used=$SPEED --rc-model=1 --end-usage=q --cq-level={CRF} --enable-vbv=1 --buf-sz=$BUF_SZ --target-bitrate=$BITRATE --kf-max-dist=$GOP_MAX --kf-min-dist=$GOP_MIN --threads=$THREADS --enable-frame-mt=4 --max-gf-interval=16 --lag-in-frames=72 --bit-depth=$BIT_DEPTH --input-bit-depth=$BIT_DEPTH --color-primaries=$COLOR_PRIMARIES --transfer-characteristics=$TRANSFER --matrix-coefficients=$MATRIX --tune-content=auto -o $OUTPUT
3. VOD – Grain Preservation – 1080p SDR
ffmpeg:
./ffmpeg -hide_banner -i $INPUT -c:v libwzav1 -wzav1-sp $SPEED -g $GOP_MAX -keyint_min $GOP_MIN -b:v $BITRATE -bufsize $BUF_SZ -lag-in-frames 72 -threads $THREADS -end-usage 3 -crf $CRF -fpp 4 -pass 1 -qmin 4 -wzav1-params passes=2:max-gf-interval=16:enable-vbv=1:rc-model=1:tune-content=auto -an -passlogfile $2pass_log_file -f null -y /dev/null && \
./ffmpeg -hide_banner -i $INPUT -c:v libwzav1 -wzav1-sp $SPEED -g $GOP_MAX -keyint_min $GOP_MIN -b:v $BITRATE -bufsize $BUF_SZ -lag-in-frames 72 -threads $THREADS -end-usage 3 -crf $CRF -fpp 4 -pass 2 -qmin 4 -wzav1-params passes=2:max-gf-interval=16:enable-vbv=1:rc-model=1:tune-content=auto -an -passlogfile $2pass_log_file -f ivf -y $OUTPUT
aurora_av1enc:
./aurora_av1enc input.y4m --passes=2 --cpu-used=$SPEED --rc-model=1 --end-usage=q --cq-level=$CRF --enable-vbv=1 --buf-sz=$BUF_SZ --target-bitrate=$BITRATE --kf-max-dist=$GOP_MAX --kf-min-dist=$GOP_MIN --threads=$THREADS --enable-frame-mt=4 --max-gf-interval=16 --lag-in-frames=72 --bit-depth=$BIT_DEPTH --input-bit-depth=$BIT_DEPTH --min-q=4 --tune-content=auto -o $OUTPUT
4. VOD – Grain Preservation – 4K HDR
ffmpeg:
./ffmpeg -hide_banner -i $INPUT -c:v libwzav1 -wzav1-sp $SPEED -g $GOP_MAX -keyint_min $GOP_MIN -b:v $BITRATE -bufsize $BUF_SZ -lag-in-frames 72 -threads $THREADS -end-usage 3 -crf $CRF -fpp 4 -pass 1 -qmin 4 -wzav1-params passes=2:max-gf-interval=16:enable-vbv=1:rc-model=1:tune-content=auto:color-primaries=$COLOR_PRIMARIES:transfer-characteristics=$TRANSFER:matrix-coefficients=$MATRIX -an -passlogfile $2pass_log_file -f null -y /dev/null && \
./ffmpeg -hide_banner -i $INPUT -c:v libwzav1 -wzav1-sp $SPEED -g $GOP_MAX -keyint_min $GOP_MIN -b:v $BITRATE -bufsize $BUF_SZ -lag-in-frames 72 -threads $THREADS -end-usage 3 -crf $CRF -fpp 4 -pass 2 -qmin 4 -wzav1-params passes=2:max-gf-interval=16:enable-vbv=1:rc-model=1:tune-content=auto:color-primaries=$COLOR_PRIMARIES:transfer-characteristics=$TRANSFER:matrix-coefficients=$MATRIX -an -passlogfile $2pass_log_file -f ivf -y $OUTPUT
aurora_av1enc:
./aurora_av1enc input.y4m --passes=2 --cpu-used=$SPEED --rc-model=1 --end-usage=q --cq-level=$CRF --enable-vbv=1 --buf-sz=$BUF_SZ --target-bitrate=$BITRATE --kf-max-dist=$GOP_MAX --kf-min-dist=$GOP_MIN --threads=$THREADS --enable-frame-mt=4 --max-gf-interval=16 --lag-in-frames=72 --bit-depth=$BIT_DEPTH --input-bit-depth=$BIT_DEPTH --min-q=4 --tune-content=auto --color-primaries=$COLOR_PRIMARIES --transfer-characteristics=$TRANSFER --matrix-coefficients=$MATRIX -o $OUTPUT
5. HDR PQ
For HDR PQ content, append the following options to the FFmpeg and aurora_av1enc 4K HDR command lines, respectively:
-
ffmpeg: hdr-boost=1:deltaq-mode=3:deltaq-strength=100
-
aurora_av1enc: --hdr-boost=1 --deltaq-mode=3 --deltaq-strength=100
Common Settings:
The following variables are used in the command lines above.
| Variable | Description |
|---|---|
SPEED |
Encoding speed preset; recommended values: 1, 3, or 5 |
THREADS |
Number of encoding threads |
BITRATE |
Target bitrate; in kbps for aurora_av1enc and bps for FFmpeg |
CRF |
Quality level, see WZE_SET_CQ_LEVEL |
BUF_SZ |
VBV buffer size; in milliseconds for aurora_av1enc and bps for FFmpeg |
GOP_MAX |
Maximum keyframe interval (frames) |
GOP_MIN |
Minimum keyframe interval (frames) |
BIT_DEPTH |
Source bit depth; 8, 10, or 12. Must match the actual input. |
$COLOR_PRIMARIES, $TRANSFER, $MATRIX |
See the API parameters for available values. |