Come codificare in VP9 con FFmpeg in 4 passaggi
- Verifica la tua build di FFmpeg: esegui
ffmpeg -encoderse cercalibvpx-vp9nell'elenco. La maggior parte delle build lo include. - Scegli la qualità:
-crf 30 -b:v 0è un buon punto di partenza per i video web a 1080p. Un CRF più basso significa qualità più alta e file più grandi. - Scegli la velocità:
-cpu-used 3o 4 con-row-mt 1mantiene ragionevoli i tempi di codifica. - Aggiungi l'audio Opus con
-c:a libopus -b:a 128ke salva l'output come.webm.
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 (migliore) a 63 (qualità peggiore). Numeri più alti significano maggiore compressione e qualità inferiore. Per un vero lossless serve -lossless 1.
| Intervallo CRF | Qualità | Caso d'uso |
|---|---|---|
| 0 | Massima qualità lossy | Archiviazione (usa -lossless 1 per un vero lossless) |
| 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. I valori da 0 a 5 si usano per la codifica normale (good quality); i valori più alti appartengono alla modalità realtime.
| cpu-used | Velocità relativa | Penalità di compressione | Caso d'uso |
|---|---|---|---|
| 0 | La più lenta | Nessuna (la migliore) | Elaborazione batch offline |
| 1 | Lenta | Minima | Codifica di alta qualità |
| 3 | Media | Ridotta | Convertitori online (la nostra impostazione) |
| 5 | Veloce | Percepibile | Anteprime rapide |
| 8 | La più veloce (modalità realtime) | La più alta | Tempo reale / latenza minima |
Multithreading (row-mt)
Il flag -row-mt 1 abilita il multithreading basato su righe, che può rendere la codifica diverse volte più veloce sui sistemi multi-core con un impatto sulla qualità minimo o nullo. È un guadagno di velocità puro e dovrebbe essere sempre attivato.
Audio: impostazioni Opus
WebM abbina il video VP9 all'audio Opus, efficiente a tutti i bitrate più comuni:
- 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 di base usato dal nostro convertitore (che applica anche gli ultimi due flag dell'elenco qui sotto):
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 per la maggior parte dei contenuti-pix_fmt yuv420p— colore 4:2:0 a 8 bit, riproducibile da qualsiasi decoder VP9-vf scale=trunc(iw/2)*2:trunc(ih/2)*2— arrotonda larghezza e altezza al numero pari inferiore
Impostazioni consigliate 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 |
Codifica VP9 in HandBrake
- Apri il video sorgente.
- Nella scheda Riepilogo, imposta il formato su WebM.
- Nella scheda Video, scegli l'encoder VP9 e imposta Qualità costante. Come per il CRF, un valore RF più alto significa un file più piccolo.
- Nella scheda Audio, scegli Opus, poi fai clic su Avvia codifica.
HandBrake usa lo stesso encoder libvpx di FFmpeg, quindi i consigli su CRF e velocità di questa pagina valgono anche lì.
VP9 a 10 bit e HDR
Per i video a 10 bit, aggiungi -pix_fmt yuv420p10le -profile:v 2. L'HDR richiede anche i metadati del colore, ad esempio -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc. Il convertitore di questa pagina produce un output a 8 bit 4:2:0 (yuv420p), riproducibile da qualsiasi decoder VP9.