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:

  1. Livello CQ di 36 (vedi Figura 2b)
  2. Velocità in bit target di 276 kbps (vedi Figura 2a)
  3. Velocità in bit minima consentita di 138 kbps (50% del target)
  4. Velocità in bit massima consentita di 414 kbps (150% del target)
  5. Spaziatura massima dei fotogrammi chiave di 240 secondi
  6. 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:

  1. 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);
  2. 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:

  1. CBR, velocità in bit target di 386 kbps (vedi Figura 2a)
  2. 2 colonne di riquadri (vedi Figura 2d)
  3. 4 thread (vedi Figura 2d)
  4. Rendimento in tempo reale
  5. 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

Codifica VP9 live per DASH/YouTube

Codifica WebRTC