libvpx-vp9 Good vs Best Deadline Settings
When encoding video using the libvpx-vp9 library in
FFmpeg, the deadline parameter (configured via -deadline or
-quality) controls the trade-off between encoding speed and
compression efficiency. This article explains the practical differences
between the good and best deadline settings,
helping you choose the right configuration for your video rendering
pipeline.
Understanding the Deadline Parameter
The libvpx-vp9 encoder offers three target quality/speed
deadlines: realtime, good, and
best. While realtime is designed for live
streaming where encoding must happen instantly, good and
best are intended for two-pass or single-pass offline
encoding where quality is prioritized over real-time processing.
The “good” Deadline Setting
The good setting is the default option for
libvpx-vp9 and is widely considered the industry standard
for most encoding tasks.
- Performance: It offers a balanced approach, delivering high visual quality at a reasonable encoding speed.
- Flexibility: When using
good, you can fine-tune the speed and quality ratio using the-cpu-usedparameter (ranging from 0 to 5). A lower-cpu-usedvalue (like 0 or 1) results in higher quality but slower encoding, while a higher value (like 4 or 5) speeds up the process with a minor hit to quality. - Best For: Almost all general-use cases, including web streaming, video-on-demand (VOD) platforms, and personal media libraries.
The “best” Deadline Setting
The best setting instructs the encoder to prioritize
compression efficiency above all else, exhaustively analyzing the video
to save every possible bit.
- Performance: It is notoriously slow. Encoding with
the
bestsetting can take multiple times longer than thegoodsetting, often resulting in agonizingly long render times. - Quality Gains: While it technically delivers the
highest possible quality-per-bitrate, the visual improvement over
good(especiallygoodat low-cpu-usedsettings) is usually imperceptible to the human eye. The mathematical improvement (measured in PSNR or VMAF) is highly marginal. - Best For: Archival encoding where CPU time and electricity costs are irrelevant, or very short, high-profile clips where maximizing bandwidth efficiency is the absolute highest priority.
Direct Comparison
| Feature | good Deadline |
best Deadline |
|---|---|---|
| Encoding Speed | Moderate to Fast (adjustable) | Extremely Slow |
| Compression Efficiency | Excellent | Maximum (slightly better than
good) |
| CPU Utilization | Highly efficient | Heavy, exhaustive resource consumption |
| Recommended Use | Standard VOD, Web Video, Plex | Archive-grade encoding, short loops |
Recommendation
For 99% of video projects, you should use -deadline good
(or -quality good in newer FFmpeg versions). If you want to
maximize quality under the good deadline, pair it with
-cpu-used 0 or -cpu-used 1. This configuration
will yield a video file that is virtually identical in visual quality to
one encoded with the best deadline, but it will finish
encoding in a fraction of the time.