Codifica di base
Nozioni di base sulla compressione video
Questa sezione illustra le opzioni di base per la codifica VP9, tra cui le dimensioni del frame, il controllo di base del bitrate e la qualità.
Se non hai mai utilizzato la compressione video, ti consigliamo di guardare questo video per scoprire di più sulla necessità di comprimere i video e su come funziona.
A Simple Encode
Il seguente comando FFmpeg converte un file di input in un video VP9 con audio Opus. Si tratta della codifica più semplice possibile, che utilizza le impostazioni predefinite.
ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm
La codifica FFmpeg utilizza i seguenti parametri della riga di comando:
FFmpeg | |
---|---|
-i <filename> |
Specifica il nome del file di input |
-c:v libvpx-vp9 |
Indica a FFmpeg di creare un video VP9 |
-c:a libopus |
Indica a FFmpeg di creare audio Opus |
output.webm |
Specifica il nome del file di output |
FFmpeg deduce il tipo di file da creare dal nome del file di output che utilizzi. In
questo esempio, FFmpeg genererà un file WebM perché abbiamo richiesto
output.webm
.
Risoluzione
Ogni video ha una dimensione del frame (che indica la larghezza e l'altezza in pixel). Il seguente parametro della riga di comando FFmpeg può essere utilizzato per controllare le dimensioni del frame del video di output per la codifica VP9:
FFmpeg | |
---|---|
-vf scale=<width>x<height> |
Larghezza e altezza del frame |
Ad esempio, il seguente comando FFmpeg genererà un video WebM VP9 640x480.
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-c:v libvpx-vp9 -c:a libopus output.webm
Le risoluzioni più piccole sono di qualità inferiore, ma quelle più grandi richiedono più larghezza di banda, più potenza di elaborazione per la decodifica e potrebbero non essere supportate sui dispositivi più vecchi. Per VP9, 640 x 480 è considerata una risoluzione sicura per un'ampia gamma di dispositivi mobili e web.
Velocità in bit
VP9 supporta diverse modalità di bitrate:
modalità | |
---|---|
Quantizzatore costante (Q) | Consente di specificare un valore di quantizzazione fisso; il bitrate varierà |
Qualità vincolata (CQ) | Ti consente di impostare un livello di qualità massimo. La qualità può variare all'interno dei parametri di bitrate |
Bitrate variabile (VBR) | Bilancia la qualità e la velocità in bit nel tempo entro i limiti della velocità in bit |
Velocità in bit costante (CBR) | Tenta di mantenere il bitrate abbastanza costante, mentre la qualità varia |
La modalità CQ è consigliata per i video basati su file (anziché per i live streaming). Per la modalità CQ vengono utilizzati i seguenti parametri della riga di comando FFmpeg:
FFmpeg | |
---|---|
-b:v <arg> |
Imposta la velocità in bit target (ad es. 500 k) |
-minrate <arg> -maxrate <arg> |
Imposta la velocità in bit minima e massima. |
-crf <arg> |
Imposta il livello di qualità massimo. I valori validi sono 0-63, i numeri più bassi sono di qualità superiore. |
Ad esempio, il seguente comando FFmpeg creerà un file video di qualità media a 640x480 utilizzando la modalità CQ, con un bitrate medio di 750 kbps e una qualità massima limitata a 33.
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm
La velocità in bit varia a seconda della qualità che vuoi ottenere e della risoluzione del video. Un insieme completo di consigli per i bit rate a varie risoluzioni è disponibile qui.
Impostazioni di qualità e velocità
La compressione video è un compromesso tra la qualità dell'output e il tempo necessario per crearlo. In generale, puoi sempre ottenere una qualità superiore se concedi più tempo per la codifica, ma il tempo necessario per ottenere la massima qualità possibile potrebbe non essere pratico.
VP9 offre diverse impostazioni per bilanciare qualità e velocità:
L'impostazione della qualità indica al codificatore l'approccio da adottare per comprimere il video. Le modalità disponibili sono Migliore, Buona e In tempo reale.
Le impostazioni di threading consentono al codificatore di utilizzare più thread della CPU per codificare il video. Queste impostazioni potrebbero ridurre leggermente la qualità, ma possono migliorare significativamente la velocità di codifica e decodifica.
Questi due tipi di impostazioni sono controllati da diversi parametri della riga di comando:
FFmpeg | |
---|---|
-threads |
Indica il numero di thread da utilizzare durante la codifica. |
-quality |
Può essere impostato su good , best o realtime |
-speed |
Questo parametro ha significati diversi a seconda che la qualità sia impostata su good o realtime . Le impostazioni di velocità 0-4 si applicano ai contenuti VOD in good e best , dove 0 è la qualità più alta e 4 la più bassa. I valori validi di Realtime sono 5-8 ; i numeri più bassi indicano una qualità superiore |
-tile-columns |
La suddivisione in riquadri divide il video in regioni rettangolari, il che consente il multithreading per la codifica e la decodifica. Il numero di tessere è sempre una potenza di due. 0 =1 riquadro, 1 =2, 2 =4, 3 =8, 4 =16, 5 =32. |
Il seguente comando FFmpeg creerà un file 640x480 con la qualità impostata su "good" (buona) e la velocità impostata su 0 (alta qualità):
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
output.webm
Le tue scelte per le impostazioni di qualità e velocità possono variare a seconda della risoluzione e della potenza di elaborazione disponibile. Un insieme completo di consigli è disponibile nella sezione successiva.