Modalità di codifica VP9
Qualità costante (CRF + b:v 0)
Il nostro approccio consigliato per la conversione dei file. Imposta un obiettivo di qualità con CRF e lascia che sia l'encoder a decidere il bitrate per fotogramma. Il flag -b:v 0 è necessario per abilitare la modalità CRF pura (altrimenti FFmpeg applica un tetto di bitrate predefinito).
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm
Qualità vincolata (CRF + limite di bitrate)
Combina l'obiettivo di qualità CRF con un bitrate massimo. Utile per lo streaming, quando occorre restare entro limiti di banda mantenendo la qualità.
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 2M output.webm
Bitrate variabile (VBR)
Punta a un bitrate medio specifico. Usato per broadcast e streaming, dove la banda deve essere prevedibile.
Comando: ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M output.webm
Valori CRF per VP9
La scala CRF di VP9 va da 0 (lossless) a 63 (qualità peggiore). Numeri più alti significano maggiore compressione e qualità inferiore.
| Intervallo CRF | Qualità | Caso d'uso |
|---|---|---|
| 0 | Lossless | Archiviazione (file enormi) |
| 15–20 | Alta qualità | Copie master, consegna di alta qualità |
| 30–35 | Buon equilibrio (predefinito) | Consegna web, uso generale |
| 40–50 | Qualità inferiore | Anteprime, miniature |
| 50–63 | Qualità scarsa | Raramente utile |
Il nostro valore predefinito è CRF 30, che produce una qualità visiva all'incirca equivalente a H.264 CRF 23 con file dal 30 al 50% più piccoli.
Impostazioni di velocità (cpu-used)
Il parametro cpu-used controlla il compromesso tra velocità di codifica ed efficienza di compressione. Intervallo: 0 a 8.
| cpu-used | Velocità relativa | Penalità di compressione | Caso d'uso |
|---|---|---|---|
| 0 | 1x (riferimento) | Nessuna (la migliore) | Elaborazione batch offline |
| 1 | ~2x | ~2% | Codifica di alta qualità |
| 3 | ~8x | ~5% | Convertitori online (la nostra impostazione) |
| 5 | ~15x | ~10% | Anteprime rapide |
| 8 | ~30x | ~20% | Tempo reale / latenza minima |
Multithreading (row-mt)
Il flag -row-mt 1 abilita il multithreading basato su righe, che può fornire un'accelerazione da 2 a 4x sui sistemi multi-core senza impatto sulla qualità. È un guadagno di velocità puro e dovrebbe essere sempre attivato.
Audio: impostazioni Opus
WebM abbina il video VP9 all'audio Opus, superiore ad AAC a bitrate equivalenti:
- 64 kbps: buono per parlato e podcast
- 128 kbps: trasparente per la maggior parte dei contenuti (nostro predefinito)
- 192 kbps: alta qualità per la musica
Two-pass vs single-pass
Il CRF single-pass (il nostro approccio) produce il miglior rapporto qualità/dimensione per la conversione dei file. L'encoder regola il bitrate per fotogramma in base alla complessità, ottenendo la migliore qualità possibile al CRF scelto.
La codifica two-pass è necessaria solo quando bisogna centrare un bitrate obiettivo specifico (streaming, broadcast). La prima passata analizza il contenuto, la seconda codifica con allocazione ottimale dei bit.
La pipeline VP9 del nostro convertitore
Il comando FFmpeg completo che utilizza il nostro convertitore:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -cpu-used 3 -row-mt 1 -c:a libopus -b:a 128k output.webm
Flag per flag:
-c:v libvpx-vp9— usa il codec video VP9-crf 30— obiettivo di qualità (equivalente a H.264 CRF 23)-b:v 0— modalità CRF pura, nessun limite di bitrate-cpu-used 3— velocità bilanciata per la conversione online-row-mt 1— multithreading basato su righe per una codifica più veloce-c:a libopus— codec audio Opus-b:a 128k— qualità audio trasparente
Impostazioni consigliate da Google per risoluzione
| Risoluzione | CRF suggerito | Bitrate obiettivo (VBR) |
|---|---|---|
| 360p | 36–40 | 200–400 kbps |
| 480p | 33–36 | 500–900 kbps |
| 720p | 30–33 | 1–2 Mbps |
| 1080p | 28–32 | 2–4 Mbps |
| 2160p (4K) | 25–30 | 8–16 Mbps |