Impostazioni consigliate
Questa sezione elenca i consigli per la codifica VP9 per una serie di profili comuni:
- Video altamente ottimizzato per il web e il mobile (VOD)
- Distribuzione di contenuti premium (VOD)
- Sport, animazione, contenuti a 10 bit (VOD)
- Codifica live
- WebRTC
Introduzione
Quando codifichi un video, ci sono diversi fattori da considerare:
- Stai creando una singola versione dei tuoi contenuti multimediali o più versioni a velocità in bit e risoluzioni diverse?
- Stai creando un live streaming video o file video on demand?
- Che tipo di contenuti multimediali stai codificando? Contengono molti movimenti? Dettaglio? Animazione?
- Stai codificando per ottenere la massima qualità (ad es. contenuti premium) o velocità (ad es. web conference)?
Questa sezione inizia con le impostazioni per un file video on demand di base e poi fornisce consigli per tutte queste domande.
Impostazioni di base
Velocità in bit di codifica
Le seguenti velocità in bit sono suggerite come valori di base per la distribuzione sul web e sui dispositivi mobili. Questi suggerimenti riducono al minimo il bitrate, ottenendo una qualità video adatta alla distribuzione web e mobile per i consumatori. Considerali come una raccomandazione di bitrate "basso" che può comunque raggiungere una qualità ragionevole.
Bitrate target suggeriti
Dimensioni/frequenza dei frame | Velocità in bit media (VOD, kbps) | Velocità in bit media (live, kbps) |
---|---|---|
320x240p a 24,25,30 | 150 | 250 |
640 x 360 p a 24,25,30 | 276 | 386 |
640x480p a 24,25,30 | 512 (LQ), 750 (MQ) | 720 (LQ), 1024 (MQ) |
1280x720p a 24,25,30 | 1024 | 1440 |
1280 x 720p a 50,60 | 1800 | 2500 |
1920x1080p a 24,25,30 | 1800 | 2500 |
1920x1080p a 50,60 | 3000 | 4200 |
2560x1440p a 24,25,30 | 6000 | 8400 |
2560x1440p a 50,60 | 9000 | 12600 |
3840x2160p a 24,25,30 | 12000 | 16800 |
3840x2160p a 50,60 | 18000 | 25200 |
Figura 2a: bit rate target
Impostazioni di codifica VOD
Impostazioni per la maggior parte dei tipi di contenuti
Per la maggior parte dei tipi di contenuti, consigliamo di utilizzare la modalità Qualità vincolata (CQ) con limiti di bitrate. La maggior parte dei video contiene un mix di scene con movimenti rapidi (ad es. sequenze d'azione) e scene con meno dettagli (ad es. conversazioni). La modalità CQ consente all'encoder di mantenere un livello di qualità ragionevole durante le scene più lunghe e semplici (senza sprecare bit) allocando più bit per le sequenze difficili.
Ti consigliamo inoltre di consentire un intervallo di bitrate compreso tra il 50% e il 150% del target, utilizzando i valori di qualità indicati nel grafico di seguito. Questa modalità richiede la codifica a due passaggi ed è consigliabile utilizzare impostazioni più veloci per HD e risoluzioni superiori, come indicato di seguito.
Impostazioni del codificatore per la codifica CQ
Altezza frame | Qualità target (CQ) | Modalità di codifica |
---|---|---|
240 | 37 | TWO_PASS_MEDIUM |
360 | 36 | TWO_PASS_MEDIUM |
480 | 34 (qualità bassa) o 33 (qualità media) | TWO_PASS_MEDIUM |
720 | 32 | TWO_PASS_FAST |
1080 | 31 | TWO_PASS_FAST |
1440 | 24 | TWO_PASS_FAST |
2160 | 15 | TWO_PASS_FAST |
Figura 2b: impostazioni consigliate di CQ
Infine, consigliamo 240 fotogrammi di video tra i fotogrammi chiave (per i contenuti a 30 f/s ciò si traduce in 8 secondi). I keyframe sono frame video autosufficienti, ovvero non dipendono da altri frame per il rendering (vedi Struttura GOP per una spiegazione più dettagliata). Per la riproduzione web e mobile, consentiamo una spaziatura generosa tra i fotogrammi chiave perché ciò consente al codificatore di scegliere il posizionamento "migliore" dei fotogrammi chiave per massimizzare la qualità.
Parametri della riga di comando di esempio: video 640x360
In base a quanto sopra, i consigli per i video a 360p sono i seguenti:
- Livello CQ di 36 (vedi Figura 2b)
- Velocità in bit target di 276 kbps (vedi Figura 2a)
- Velocità in bit minima consentita di 138 kbps (50% del target)
- Velocità in bit massima consentita di 414 kbps (150% del target)
- Spaziatura massima dei fotogrammi chiave di 240 secondi
- Due passaggi, profilo "Medio"
In questo modo, vengono forniti i seguenti parametri della riga di comando per libvpx e FFmpeg:
libvpx
--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
--maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2
FFmpeg
-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2
Impostazioni dei contenuti premium
Negli esempi precedenti, abbiamo utilizzato impostazioni di codifica piuttosto veloci per creare i nostri stream video in modo efficiente. Tuttavia, per alcuni contenuti (come i film premium) vale la pena dedicare più tempo alla codifica per ottenere un output di qualità superiore.
Per i contenuti premium, consigliamo le stesse impostazioni indicate sopra, ma con preset diversi, che indicano al codificatore di dedicare più tempo all'ottimizzazione per la qualità:
Modalità di codifica dei contenuti premium e parametri della riga di comando
Altezza frame | Modalità di codifica | libvpx | FFmpeg |
---|---|---|---|
240 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
360 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
480 | TWO_PASS_VERY_SLOW |
--good --cpu-used 0 |
-good -speed 0 |
720 | TWO_PASS_SLOW |
--good --cpu-used 1 |
-good -speed 1 |
1080 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
1440 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
2160 | TWO_PASS_MEDIUM |
--good --cpu-used 2 |
-good -speed 2 |
Figura 2c: modalità di codifica dei contenuti premium
Impostazioni per sport e contenuti ad alto movimento
Consigliamo la codifica VBR per i contenuti sportivi. Gli sport tendono ad avere un livello abbastanza costante di movimento e complessità elevati e l'utilizzo di VBR consente di ottenere una qualità superiore durante i periodi di movimento più lento rispetto alla codifica QP.
Per la riga di comando, la differenza principale tra la modalità QP e VBR è che non specificherai un livello CQ; in caso contrario, le impostazioni consigliate sono le stesse.
Parametri della riga di comando VBR di esempio: video 640x360
libvpx
--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
--kf-max-dist=240 --passes=2 --good --cpu-used=2
FFmpeg
-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2
Impostazioni di animazione e giochi
Impostazioni per contenuti rumorosi / di bassa qualità
Per i contenuti rumorosi, consigliamo di aumentare il numero e la forza dei frame alt-ref. I frame di riferimento alternativi sono frame "invisibili", mai mostrati all'utente, ma utilizzati come riferimento per la creazione dei frame finali (puoi leggere ulteriori informazioni qui).
I seguenti parametri sono consigliati per indicare a VP9 di utilizzare più frame alt-ref:
libvpx
--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3
FFmpeg
Codifica a 10 bit/HDR
Per la codifica a 10 bit, ti consigliamo di utilizzare VP9 profilo 2. La codifica a 10 bit non richiede altri bit, quindi il resto dei parametri è lo stesso:
libvpx
--profile=2
FFmpeg
-profile 2
Impostazioni di codifica live
Live streaming
La codifica live viene in genere eseguita come CBR, il che limita la capacità del codificatore di massimizzare la qualità. Per questo motivo, utilizzeremo bit rate più elevati come indicato nella Figura 2a.
Per la codifica live, vogliamo anche massimizzare il threading. A questo scopo:
- Consentire a VP9 di dividere il video in colonne (che non possono avere una larghezza inferiore a 256 pixel e devono essere una potenza di due);
- Indica a VP9 di utilizzare più potenza della CPU. La tabella seguente elenca i suggerimenti per ogni risoluzione.
Suggerimenti per la suddivisione in riquadri e la creazione di thread
Impostazioni del codificatore per la codifica CQ
Dimensioni del telaio | Numero di colonne di riquadri | Numero di thread |
---|---|---|
320x240 | 1 | 2 |
640 x 360 | 2 | 4 |
640x480 | 2 | 4 |
1280x720 | 4 | 8 |
1920x1080 | 4 | 8 |
2560 x 1440 | 8 | 16 |
3840x2160 | 8 | 16 |
Figura 2d. Tiling e threading consigliati per la codifica live
La codifica live imposterà anche la scadenza su "in tempo reale" per garantire le prestazioni e indicherà ai frame alt-ref di non guardare al futuro (il che introdurrebbe latenza):
Da questo, i consigli per i video live a 360p sono i seguenti:
- CBR, velocità in bit target di 386 kbps (vedi Figura 2a)
- 2 colonne di riquadri (vedi Figura 2d)
- 4 thread (vedi Figura 2d)
- Rendimento in tempo reale
- Nessuna latenza dovuta a frame alternativi (nessun ritardo dei frame)
In questo modo, vengono forniti i seguenti parametri della riga di comando per libvpx e FFmpeg:
libvpx
--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0
FFmpeg
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
-minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm