Understanding the SVT-AV1 Preset Switch in FFmpeg

When encoding video with the SVT-AV1 codec using the FFmpeg command-line interface, the --preset switch determines the balance between encoding speed and compression efficiency. This guide explains the core mechanics of the SVT-AV1 preset parameter, detailing how it modulates encoder complexity, how numerical values affect performance, and how to implement it correctly in an FFmpeg workflow.

The Function of the --preset Switch

The --preset option directly controls the trade-off between computational processing time and compression efficiency (the quality retained at a given file size). SVT-AV1 provides a numerical scale ranging from 0 to 13:

  • Lower numbers (e.g., 0 to 4) instruct the encoder to prioritize compression efficiency. The encoder conducts exhaustive mathematical searches for optimal frame representation, resulting in smaller file sizes and higher fidelity at the cost of significantly longer processing times.
  • Higher numbers (e.g., 8 to 13) prioritize speed. The encoder utilizes aggressive pruning, heuristics, and simplified mathematical models to process frames quickly, but produces larger file sizes for equivalent visual quality.

What the Preset Changes Under the Hood

Adjusting the preset alters dozens of internal algorithmic decisions within SVT-AV1 rather than changing the video resolution or baseline target quality. Specifically, the switch controls:

  • Block Partitioning Search: AV1 supports variable block sizes ranging from 128x128 down to 4x4 pixels. Lower presets analyze deeper block partition trees; higher presets skip less common splits.
  • Motion Estimation: Dictates how exhaustively the encoder searches reference frames for motion vectors, including sub-pixel precision searches.
  • Rate-Distortion Optimization (RDO): Controls the mathematical rigor used to evaluate whether a specific coding decision yields enough visual quality to justify the bit cost.
  • AV1 Tool Enablement: Dynamically enables or simplifies advanced AV1 features such as Constrained Directional Enhancement Filtering (CDEF), loop restoration filters, and complex intra/inter prediction modes.
  • Presets 0 to 3 (Extreme Archival): These presets run exceedingly slow and offer diminishing returns in compression efficiency. They are generally impractical for everyday use and are primarily reserved for codec development benchmarks.
  • Presets 4 to 6 (High Efficiency / Archival): The optimal range for permanent media libraries and high-fidelity video archiving. Preset 5 or 6 offers an ideal balance of superior AV1 compression gains over older codecs (like HEVC) within reasonable encoding times on modern multi-core CPUs.
  • Presets 7 to 9 (General Purpose / Desktop Transcoding): Faster encodes suitable for user-generated content, quick distribution, or rendering on lower-powered hardware where encoding time is limited.
  • Presets 10 to 13 (Real-Time and Live Streaming): Strips away the most computationally expensive AV1 features to achieve ultra-low latency. Presets 10 and above are tuned for real-time video conferencing, live broadcasting, and draft previews.

Using the Preset Switch in FFmpeg

In the FFmpeg CLI, the preset can be declared using either the native FFmpeg -preset option or passed directly through the -svtav1-params flag:

ffmpeg -i input.mp4 -c:v libsvtav1 -preset 6 -crf 28 output.mp4

Alternatively, to pass it explicitly through SVT-AV1 parameters:

ffmpeg -i input.mp4 -c:v libsvtav1 -svtav1-params preset=6 -crf 28 output.mp4

Using the switch in combination with a target Constant Rate Factor (-crf) allows the preset to focus strictly on producing the smallest possible file size for that defined visual baseline.