Impostazioni consigliate per VOD
Scopo
Questa sezione fornisce suggerimenti per le impostazioni di codifica VP9 quando si esegue la codifica basata su file (ovvero non in tempo reale).
Questi consigli sono stati concepiti per i seguenti obiettivi:
- Un equilibrio tra qualità e velocità di codifica
- La velocità in bit minima per ottenere una qualità ragionevole
- Impostazioni per soddisfare un'ampia gamma di tipi di contenuti
Questi consigli non:
- Codifica live live
- Ottimizzati per tipi di contenuti specifici (ad esempio filmati sportivi di grandi dimensioni)
- Configurare impostazioni per dispositivi o requisiti di rete specifici
Codifica a risoluzione singola
VP9 supporta un'ampia gamma di dimensioni di fotogrammi, dalle piccole risoluzioni alla risoluzione 4K. I frame di dimensioni più grandi offrono una qualità migliore, ma richiedono più larghezza di banda per la pubblicazione e maggiore potenza di elaborazione per la decodifica.
Se stai creando un'unica risoluzione, 640 x 480 è una scelta sicura per un'ampia gamma di dispositivi web e mobili. I seguenti parametri a riga di comando FFmpeg consentono di creare un file a risoluzione singola a 750 kbps.
-vf scale=640x480 -b:v 750k -quality good -speed 0 -crf 33 \
-c:v libvpx-vp9 -c:a libopus output.webm
Codifica multirisoluzione
Se prevedi di scegliere come target più risoluzioni o se la tua rete di distribuzione ha una larghezza di banda variabile, ti consigliamo di creare più risoluzioni. A questo punto, il tuo player può decidere quale risoluzione viene inviata allo spettatore.
Le codifiche video a più risoluzioni vengono spesso utilizzate nella velocità in bit adattiva, in cui il video player passa da una risoluzione all'altra in tempo reale in base alla larghezza di banda dell'utente. Ad esempio, Shaka Player ti consente di riprodurre codificazioni multirisoluzione, dove ogni codifica VP9 si trova in un file separato e il manifest DASH fornisce informazioni su ogni codice.
Per ulteriori informazioni sulla creazione di pacchetti video in formati adattivi, consulta la sezione Shaka Packager. Questa guida si concentra sulle impostazioni di codifica per VP9 in più risoluzioni.
Impostazioni consigliate
Tutte le impostazioni seguenti possono essere utilizzate per singoli file a varie risoluzioni, combinati offrono un set completo adatto per lo streaming adattivo. Tieni presente che la versione 640 x 480 ha due versioni, una di bassa qualità (LQ) e l'altra di media qualità (MQ).
Velocità in bit
Si consiglia di utilizzare la modalità Qualità costante (CQ) durante la codifica dei file VP9 per la visualizzazione on demand. Questa modalità di codifica ti consente di specificare una velocità in bit target media, controllando sia la qualità massima del video sia la velocità in bit minima e massima.
I seguenti velocità in bit sono consigliati come basi per la distribuzione su Web e dispositivi mobili. Questi suggerimenti minimizzano la velocità in bit che raggiunge la qualità video adatta per la distribuzione sul Web mobile e sui dispositivi mobili; considerali come un consiglio per velocità in bit bassa e bassa, che può comunque raggiungere una qualità ragionevole.
Per gli esempi sopra riportati, si consiglia di impostare una velocità in bit minima al 50% di una velocità in bit target massima del 145%.
Dimensioni frame/frequenza fotogrammi | Velocità in bit target (VOD, kbps) | Velocità in bit min (50%) | Velocità in bit massima (145%) |
---|---|---|---|
320 x 240p a 24,25,30 | 150 | 75 | 218 |
640 x 360p a 24,25,30 | 276 | 138 | 400 |
640x480p @ 24,25,30 | 512 (LQ), 750 (MQ) | 256 (LQ) 375 (MQ) | 742 (LQ) 1088 (MQ) |
1280 x 720p a 24,25,30 | 1024 | 512 | 1485 |
1280 x 720p a 50,60 | 1800 | 900 | 2610 |
1920 x 1080p a 24,25,30 | 1800 | 900 | 2610 |
1920 x 1080p a 50,60 | 3000 | 1500 | 4350 |
2560 x 1440p a 24,25,30 | 6000 | 3000 | 8700 |
2560 x 1440p a 50,60 | 9000 | 4500 | 13050 |
3840x2160p @ 24,25,30 | 12000 | 6000 | 17400 |
3840 x 2160p a 50,60 | 18000 | 9000 | 26100 |
In FFmpeg, la velocità in bit è controllata tramite i seguenti comandi:
FFmpeg | |
---|---|
-b:v <arg> |
Imposta la velocità in bit (ad es.500. 000) |
-minrate <arg> -maxrate <arg> |
Imposta la velocità in bit minima e massima. |
Ad esempio, per codificare contenuti 640 x 480, puoi utilizzare la riga di comando
-b:v 750k -minrate 375 -maxrate 1088
.
Qualità
In modalità CQ, imposterai anche il livello qualitativo massimo. Per la codifica VP9 basata su file sono consigliati i seguenti livelli qualitativi:
Altezza frame | Qualità target (CQ) |
---|---|
240 | 37 |
360 | 36 |
480 | 34 (LQ) o 33 (MQ) |
720 | 32 |
1080 | 31 |
1440 | 24 |
2160 | 15 |
In FFmpeg, la qualità è impostata con il comando -crf
. Ad esempio, per impostare la qualità su 33, devi utilizzare il comando -crf 33
Codifica multipass e velocità di codifica
La codifica basata su file offre flessibilità in termini di velocità. Puoi anche eseguire più pass per lo stesso materiale per aumentare la qualità e scegliere la velocità per ciascuno.
Quando codifichi i file VP9 in FFmpeg, è consigliabile impostare il parametro -quality
su good
e poi la velocità del primo e del secondo pass in base alla tabella riportata di seguito con il parametro -speed
. Offre un buon equilibrio tra il tempo di codifica e la qualità dell'output.
Altezza frame | Velocità (primo pass) | Velocità (secondo pass) |
---|---|---|
240 | 4 | 1 |
360 | 4 | 1 |
480 | 4 | 1 |
720 | 4 | 2 |
1080 | 4 | 2 |
1440 | 4 | 2 |
2160 | 4 | 2 |
Ad esempio, una stringa di codifica primo pass in FFmpeg potrebbe includere
-quality good -speed 4
.
Spaziatura dei fotogrammi chiave
Consigliamo di consentire fino a 240 fotogrammi di video tra un fotogramma chiave e un altro (8 secondi per i contenuti di 30 f/s). I fotogrammi chiave sono fotogrammi video autosufficienti; non si affidano ad altri frame da visualizzare, ma tendono a essere più grandi di altri tipi di frame. Per la riproduzione web e per dispositivi mobili, la generosa spaziatura tra i fotogrammi chiave consente al codificatore di scegliere il posizionamento migliore dei fotogrammi chiave per massimizzare la qualità.
Nella spaziatura dei fotogrammi chiave FFmpeg viene controllato il comando -g
, che indica il numero di frame. Per 240 frame sarebbe -g 240
.
Consigli su piastrelle e thread
Il riquadro divide il frame video in più colonne, riducendo leggermente la qualità, ma velocizza le prestazioni di codifica. I riquadri devono avere una larghezza di almeno 256 pixel, quindi esiste un limite al numero di riquadri che possono essere utilizzati.
A seconda del numero di riquadri e della risoluzione del frame di output, potrebbero essere utili più thread della CPU. In linea generale, quando la dimensione del frame di output è molto ridotta, il valore è limitato a più thread.
Le seguenti impostazioni sono consigliate per l'aggiunta di piastrelle e thread a diverse risoluzioni.
Dimensioni frame | Numero di colonne-colonne | Numero di thread |
---|---|---|
320x240 | 1 (-tile-columns 0 ) |
2 |
640 x 360 | 2 (-tile-columns 1 ) |
4 |
640x480 | 2 (-tile-columns 1 ) |
4 |
1280x720 | 4 (-tile-columns 2 ) |
8 |
1920x1080 | 4 (-tile-columns 2 ) |
8 |
2560 x 1440 | 8 (-tile-columns 3 ) |
16 |
3840x2160 | 8 (-tile-columns 3 ) |
16 |
In FFmpeg, il numero di riquadri è controllato con il parametro -tile-columns
e il numero di thread di -threads
. Ad esempio, un codificatore 640x480 utilizzerebbe la riga di comando -tile-columns 2 -threads 4
.
Righe di comando FFmpeg
Riunendo i consigli precedenti, è possibile utilizzare i seguenti comandi FFmpeg per codificare i contenuti VP9.
Tieni presente che i comandi di primo e secondo passaggio sono concatenati. L'argomento -y
nel comando di secondo passaggio risponde"Yes"quando FFmpeg chiede di sovrascrivere il file delle statistiche del primo pass con il video di output.
Tieni presente inoltre che un'origine a 1080p viene utilizzata per codificare i tag fino a 1280 x 720. Un'origine 4K viene utilizzata per output più grandi.
320 x 240 (24, 25 o 30 fotogrammi al secondo)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 1 -speed 4 tos-320x240.webm && \ ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 2 -speed 1 -y tos-320x240.webm
- File di input: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- File di output: tos-320x240.webm (320 x 240, 21,73 MB)
640 x 360 (24, 25 o 30 fotogrammi al secondo)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x360.webm
- File di input: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- File di output: tos-640x360.webm (640 x 360, 31,53 MB)
640 x 480 (bassa qualità, 24, 25 o 30 frame al secondo)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-low.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-low.webm
- File di input: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- File di output: tos-640x480-low.webm (640x480, 51,18 MB)
640 x 480 (qualità media, 24, 25 o 30 fotogrammi al secondo)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-medium.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-medium.webm
- File di input: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- File di output: tos-640x480-medium.webm (640 x 480, 69,27 MB)
1280 x 720 (24, 25 o 30 fotogrammi al secondo)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-24-30fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1280x720-24-30fps.webm
- File di input: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- File di output: tos-1280x720-24-30fps.webm (1280 x 720, 98,2 MB)
1280 x 720 (50 o 60 frame al secondo)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-50-60fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4-y tos-1280x720-50-60fps.webm
- File di input: tears_of_steel_1080p.webm (1920 x 800, 544,88 MB)
- File di output: tos-1280x720-50-60fps.webm (1280 x 720, 157,1 MB)
1920 x 1080 (24, 25 o 30 fotogrammi al secondo)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-24-30fps.webm
- File di input: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- File di output: tos-1920x1080-24-30fps.webm (1920 x 1080, 151,51 MB)
1920 x 1080 (50 o 60 fotogrammi al secondo)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-50-60fps.webm
- File di input: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- File di output: tos-1920x1080-50-60fps.webm (1920 x 1080, 238,18 MB)
2560 x 1440 (24, 25 o 30 frame al secondo)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-24-30fps.webm
- File di input: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- File di output: tos-2560x1440-24-30fps.webm 2560 x 1440, 533,54 MB)
2560 x 1440 (50 o 60 fotogrammi al secondo)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-50-60fps.webm
- File di input: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- File di output: tos-2560x1440-50-60fps.webm 2560 x 1440, 664,04 MB)
3840 x 2160 (24, 25 o 30 frame al secondo)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-3840x2160-24-30fps.webm
- File di input: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- File di output: tos-3840x2160-24-30fps.webm 3840x2160, 1,03 GB)
3840 x 2160 (50 o 60 frame al secondo)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-quality good -speed 4 -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -y tos-3840x2160-50-60fps.webm
- File di input: tearsofsteel_4k.mov (3840 x 1714, 6,76 GB)
- File di output: tos-3840x2160-50-60fps.webm 3840x2160, 1,56 GB)