Aller au contenu principal
Emir Chouchane - Carnet de notes

Comprendre le bitrate et les options d'encodage avec ffmpeg

Il est important de comprendre comment les bons paramètres ffmpeg influencent la qualité de la vidéo. En général, plus le bitrate est élevé, meilleure sera la qualité. À bitrate égal, une vidéo encodée en H.265 sera de meilleure qualité que son équivalent en H.264.

Dans cette note, on va s’intéresser à ce paramètre avec l’encodeur x264, ainsi qu’aux différentes options pour bien manipuler la compression vidéo avec ce codec.

C’est quoi le bitrate ?

Le bitrate, c’est la quantité de données par seconde. Plus il est élevé, meilleure est la qualité… mais aussi plus grande sera la taille du fichier. Par exemple, 1 mégaoctet par seconde correspond à un bitrate de 8 mégabits par seconde (8 Mbps). Une vidéo YouTube en 1080p tourne autour de 8 Mbps, un DVD autour de 6 Mbps.

Choisir le bon bitrate, c’est choisir le bon équilibre entre qualité et poids du fichier.

Choisir le bon bitrate

L’appareil cible a un rôle à jouer : smartphone, TV, web, etc. On distingue deux types de bitrate :

VBR est recommandé pour la plupart des usages car il permet une meilleure gestion de la qualité selon les moments clés de la vidéo.

Par défaut, ffmpeg utilise le CRF (voir plus bas). Si vous ne spécifiez rien, vous aurez :

Encoder en CBR

ffmpeg -i video.mp4 -c:v libx264 -b:v 1500k -minrate 1000k -maxrate 2000k -bufsize 60k output.mp4

Le paramètre -bufsize est souvent : bitrate / fps. Le CBR n'est jamais totalement constant avec x264, mais on s'en approche.

Le CRF

ffmpeg -i video.mp4 -c:v libx264 -crf 23 output.mp4

Le CRF (Constant Rate Factor) permet d’équilibrer qualité et taille automatiquement. Voici quelques repères :

Un changement de ±6 double ou divise la taille du fichier.

Les presets

Un preset influe sur la vitesse d'encodage et la compression :

Choisissez selon votre priorité : temps ou taille.

Les profiles

Les profils assurent la compatibilité :

Le Tune

Un tune adapte l’encodage au contenu :

Ces paramètres activent des filtres anti-blocs pour améliorer la qualité visuelle.

Encodage en Two-Pass

Si vous visez une taille de fichier précise, utilisez le two-pass :

Exemple de calcul :

Fichier de 200 Mo pour une vidéo de 300 secondes :

(200 × 8192) / 300 ≈ 5461 kbps

Exemple de commandes :

1ère passe :

ffmpeg -i video.mp4 -pix_fmt yuv420p -vsync 1 -sn -r 25 -threads 0 -c:v libx264 \
-b:v 5461k -bufsize 218k -maxrate 6000k -minrate 4000k -an -pass 1 -preset slow \
-profile:v high -g 48 -tune film -x264opts no-scenecut -f mp4 -y /dev/null

2ème passe :

ffmpeg -i video.mp4 -pix_fmt yuv420p -vsync 1 -sn -r 25 -threads 0 -c:v libx264 \
-b:v 5461k -bufsize 218k -maxrate 6000k -minrate 4000k -an -pass 2 -preset slow \
-profile:v high -g 48 -tune film -x264opts no-scenecut -f mp4 -y output.mp4

Ne changez aucune valeur entre les deux passes.


Et voilà ! Avec ces bases, vous êtes prêt à dompter le bitrate et encodages vidéo avec ffmpeg.