Encoder en VP9 avec FFmpeg en 4 étapes
- Vérifiez votre build FFmpeg : lancez
ffmpeg -encoderset cherchezlibvpx-vp9dans la liste. La plupart des builds l'incluent. - Choisissez une qualité :
-crf 30 -b:v 0est un bon point de départ pour une vidéo web en 1080p. Un CRF plus bas signifie une qualité plus élevée et des fichiers plus lourds. - Choisissez une vitesse :
-cpu-used 3ou 4 avec-row-mt 1garde des temps d'encodage raisonnables. - Ajoutez l'audio Opus avec
-c:a libopus -b:a 128ket enregistrez le fichier de sortie en.webm.
Modes d'encodage VP9
Qualité constante (CRF + b:v 0)
Notre approche recommandée pour la conversion de fichiers. Fixez un objectif de qualité avec CRF et laissez l'encodeur décider du bitrate image par image. Le flag -b:v 0 est requis pour activer le mode CRF pur (sinon FFmpeg applique un plafond de bitrate par défaut).
Commande : ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm
Qualité contrainte (CRF + plafond de bitrate)
Combine un objectif de qualité CRF avec un bitrate maximum. Utile pour le streaming où il faut rester dans les limites de bande passante tout en préservant la qualité.
Commande : ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 2M output.webm
Bitrate variable (VBR)
Vise un bitrate moyen spécifique. Utilisé pour la diffusion et le streaming où la bande passante doit être prévisible.
Commande : ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M output.webm
Valeurs CRF pour VP9
L'échelle CRF de VP9 va de 0 (meilleure qualité) à 63 (qualité la pire). Plus le nombre est élevé, plus la compression est forte et la qualité basse. Le vrai sans perte nécessite -lossless 1.
| Plage CRF | Qualité | Cas d'usage |
|---|---|---|
| 0 | Qualité avec perte la plus élevée | Archivage (utilisez -lossless 1 pour un vrai sans perte) |
| 15–20 | Haute qualité | Copies master, diffusion haute qualité |
| 30–35 | Bon équilibre (par défaut) | Diffusion web, usage général |
| 40–50 | Qualité inférieure | Aperçus, miniatures |
| 50–63 | Qualité médiocre | Rarement utile |
Notre valeur par défaut est CRF 30, qui produit une qualité visuelle à peu près équivalente à H.264 CRF 23, avec des fichiers 30 à 50 % plus petits.
Paramètres de vitesse (cpu-used)
Le paramètre cpu-used contrôle le compromis entre vitesse d'encodage et efficacité de compression. Les valeurs 0 à 5 servent à l'encodage normal (bonne qualité) ; les valeurs supérieures relèvent du mode temps réel.
| cpu-used | Vitesse relative | Pénalité de compression | Cas d'usage |
|---|---|---|---|
| 0 | La plus lente | Aucune (la meilleure) | Traitement par lots hors ligne |
| 1 | Lente | Très faible | Encodage haute qualité |
| 3 | Moyenne | Faible | Convertisseurs en ligne (notre réglage) |
| 5 | Rapide | Perceptible | Aperçus rapides |
| 8 | La plus rapide (mode temps réel) | La plus forte | Temps réel / latence minimale |
Multithreading (row-mt)
Le flag -row-mt 1 active le multithreading par lignes, qui peut accélérer l'encodage plusieurs fois sur les systèmes multi-cœurs, avec un impact faible ou nul sur la qualité. C'est un gain de vitesse pur, et il doit toujours être activé.
Audio : paramètres Opus
WebM associe la vidéo VP9 à l'audio Opus, efficace à tous les bitrates courants :
- 64 kbps : bon pour la parole et les podcasts
- 128 kbps : transparent pour la plupart des contenus (notre valeur par défaut)
- 192 kbps : haute qualité pour la musique
Two-pass vs single-pass
Le CRF single-pass (notre approche) produit le meilleur rapport qualité/taille pour la conversion de fichiers. L'encodeur ajuste le bitrate image par image selon la complexité, ce qui donne la meilleure qualité possible pour le CRF visé.
L'encodage two-pass n'est nécessaire que lorsque vous devez atteindre un bitrate cible précis (streaming, diffusion). La première passe analyse le contenu, la seconde encode avec une allocation de bits optimale.
Le pipeline VP9 de notre convertisseur
La commande FFmpeg de base utilisée par notre convertisseur (il applique aussi les deux derniers flags de la liste ci-dessous) :
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -cpu-used 3 -row-mt 1 -c:a libopus -b:a 128k output.webm
Flag par flag :
-c:v libvpx-vp9— utiliser le codec vidéo VP9-crf 30— objectif de qualité (équivalent à H.264 CRF 23)-b:v 0— mode CRF pur, pas de plafond de bitrate-cpu-used 3— vitesse équilibrée pour la conversion en ligne-row-mt 1— multithreading par lignes pour un encodage plus rapide-c:a libopus— codec audio Opus-b:a 128k— qualité audio transparente pour la plupart des contenus-pix_fmt yuv420p— couleur 8 bits 4:2:0, lue par tous les décodeurs VP9-vf scale=trunc(iw/2)*2:trunc(ih/2)*2— arrondit la largeur et la hauteur au nombre pair inférieur
Paramètres suggérés selon la résolution
| Résolution | CRF suggéré | Bitrate cible (VBR) |
|---|---|---|
| 360p | 36–40 | 200–400 kbps |
| 480p | 33–36 | 500–900 kbps |
| 720p | 30–33 | 1–2 Mbps |
| 1080p | 28–32 | 2–4 Mbps |
| 2160p (4K) | 25–30 | 8–16 Mbps |
Encodage VP9 dans HandBrake
- Ouvrez la vidéo source.
- Dans l'onglet Résumé, réglez le format sur WebM.
- Dans l'onglet Vidéo, choisissez l'encodeur VP9 et réglez la qualité constante. Comme pour le CRF, une valeur RF plus élevée donne un fichier plus petit.
- Dans l'onglet Audio, choisissez Opus, puis cliquez sur Démarrer l'encodage.
HandBrake utilise le même encodeur libvpx que FFmpeg : les conseils sur le CRF et la vitesse de cette page s'appliquent donc.
VP9 en 10 bits et HDR
Pour une vidéo 10 bits, ajoutez -pix_fmt yuv420p10le -profile:v 2. Le HDR nécessite aussi les métadonnées de couleur, par exemple -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc. Le convertisseur de cette page produit du 8 bits 4:2:0 (yuv420p), lu par tous les décodeurs VP9.