Encodage de base
Principes de base de la compression vidéo
Cette section décrit les options de base pour l'encodage VP9, y compris la taille du frame, le contrôle de base du débit binaire et la qualité.
Si vous n'avez jamais compressé de vidéo, nous vous conseillons de regarder cette vidéo pour en savoir plus sur la nécessité de compresser les vidéos et sur le fonctionnement de la compression.
Un encodage simple
La commande FFmpeg suivante convertit un fichier d'entrée en vidéo VP9 avec audio Opus. Il s'agit de l'encodage le plus simple possible, qui utilise les paramètres par défaut.
ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm
Cet encodage FFmpeg utilise les paramètres de ligne de commande suivants :
FFmpeg | |
---|---|
-i <filename> |
Indique le nom du fichier d'entrée. |
-c:v libvpx-vp9 |
Indique à FFmpeg de créer une vidéo VP9. |
-c:a libopus |
Indique à FFmpeg de créer un fichier audio Opus |
output.webm |
Spécifie le nom du fichier de sortie |
FFmpeg déduit le type de fichier à créer à partir du nom de fichier de sortie que vous utilisez. Dans cet exemple, FFmpeg générera un fichier WebM, car nous avons demandé output.webm
.
Solution
Chaque vidéo a une taille d'image (indiquant la largeur et la hauteur en pixels). Le paramètre de ligne de commande FFmpeg suivant peut être utilisé pour contrôler la taille des images vidéo de sortie pour l'encodage VP9 :
FFmpeg | |
---|---|
-vf scale=<width>x<height> |
Largeur et hauteur du cadre |
Par exemple, la commande FFmpeg suivante génère une vidéo WebM VP9 de 640 x 480.
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-c:v libvpx-vp9 -c:a libopus output.webm
Les résolutions plus petites sont de qualité inférieure, mais les résolutions plus grandes nécessitent plus de bande passante et de puissance de traitement pour le décodage. Elles peuvent également ne pas être compatibles avec les appareils plus anciens. Pour le VP9, la résolution 640 x 480 est considérée comme sûre pour un large éventail d'appareils mobiles et Web.
Débit (débit binaire)
VP9 est compatible avec plusieurs modes de débits binaires :
mode | |
---|---|
Quantificateur constant (Q) | Vous permet de spécifier une valeur de quantificateur fixe. Le débit binaire varie. |
Qualité limitée (CQ) | Vous permet de définir un niveau de qualité maximal. La qualité peut varier en fonction des paramètres de débit binaire |
Débit variable (VBR) | Équilibre la qualité et le débit au fil du temps dans les limites du débit |
Débit constant (CBR) | Tente de maintenir le débit binaire assez constant, tandis que la qualité varie |
Le mode CQ est recommandé pour les vidéos basées sur des fichiers (par opposition au streaming en direct). Les paramètres de ligne de commande FFmpeg suivants sont utilisés pour le mode CQ :
FFmpeg | |
---|---|
-b:v <arg> |
Définit le débit cible (par exemple, 500 k) |
-minrate <arg> -maxrate <arg> |
Définit le débit minimal et maximal. |
-crf <arg> |
Définit le niveau de qualité maximal. Les valeurs autorisées sont comprises entre 0 et 63. Plus le nombre est bas, meilleure est la qualité. |
Par exemple, la commande FFmpeg suivante crée un fichier vidéo de qualité moyenne de 640x480 en mode CQ, avec un débit moyen de 750 kbit/s et une qualité maximale limitée à 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
Le débit binaire varie en fonction de la qualité souhaitée et de la résolution de la vidéo. Vous trouverez un ensemble complet de recommandations concernant les débits binaires pour différentes résolutions sur cette page.
Paramètres de qualité et de vitesse
La compression vidéo est un compromis entre la qualité du résultat et le temps nécessaire à sa création. En règle générale, vous pouvez toujours obtenir une meilleure qualité en allouant plus de temps à l'encodage, mais le temps nécessaire pour obtenir la meilleure qualité possible peut être irréaliste.
VP9 propose plusieurs paramètres pour équilibrer la qualité et la vitesse :
Le paramètre de qualité indique à l'encodeur l'approche à adopter pour compresser la vidéo. Les modes disponibles sont "Meilleur", "Bon" et "Temps réel".
Les paramètres de threading permettent à l'encodeur d'utiliser plusieurs threads de processeur pour encoder la vidéo. Ces paramètres peuvent légèrement réduire la qualité, mais peuvent améliorer considérablement la vitesse d'encodage et de décodage.
Ces deux types de paramètres sont contrôlés par plusieurs paramètres de ligne de commande :
FFmpeg | |
---|---|
-threads |
Indique le nombre de threads à utiliser lors de l'encodage. |
-quality |
Peut être défini sur good , best ou realtime |
-speed |
Ce paramètre a une signification différente selon que la qualité est définie sur good ou realtime . Les paramètres de vitesse 0-4 s'appliquent à la VOD dans good et best , 0 étant la qualité la plus élevée et 4 la plus faible. Les valeurs valides pour Realtime sont 5-8 . Plus le nombre est faible, plus la qualité est élevée. |
-tile-columns |
Le tiling divise la vidéo en régions rectangulaires, ce qui permet le multithreading pour l'encodage et le décodage. Le nombre de tuiles est toujours une puissance de deux. 0 =1 tuile, 1 =2, 2 =4, 3 =8, 4 =16, 5 =32. |
La commande FFmpeg suivante crée un fichier 640x480 avec une qualité définie sur "good" (bonne) et une vitesse définie sur 0 (haute 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
Vos choix de paramètres de qualité et de vitesse peuvent varier en fonction de la résolution et de la puissance de traitement disponible. Vous trouverez un ensemble complet de recommandations dans la section suivante.