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.
Preset Categories and Recommended Use Cases
- 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.mp4Alternatively, to pass it explicitly through SVT-AV1 parameters:
ffmpeg -i input.mp4 -c:v libsvtav1 -svtav1-params preset=6 -crf 28 output.mp4Using 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.