Vidéo :
Contrairement à H.264 où les paramètres par défaut de ffmpeg assurent une bonne qualité, la qualité par défaut est très faible avec H.262 et la qualité est liée a plusieurs paramètres qui sont liés entre eux (modifier un seul paramètre risque d’entraîner des erreurs).
Qualité vidéo :
Deux possibilités : débit fixe ou qualité fixe.
Le débit fixe, c'est du gâchis lors des scènes qui nécessite peu de débit, je préfère mettre une qualité variable et un débit maximum (le débit maximum est pour ne pas dépasser la capacité de lecture ou de décodage du lecteur)
Qualité fixe (recommandé) : Fixer la qualité d'encodage : -q:v 2 : Le nombre ici à 2 peut être modifié entre 2 et 31. 2= la meilleure qualité et 31 la pire qualité (1 accepté, mais il ne va pas en dessous de 2). Il y a un forte dégradation de la qualité au-delà de 4 ou 5.
Débit moyen fixé : Pour un débit d'encodage moyen de 6 Mbit/s : -b:v 6000k.
Débit maximal ou maxrate :
-maxrate:v 9000k : Aussi bien pour un débit fixe qu'une qualité fixe, il faut fixer un débit maximum sur une durée de la taille du buffer. Ne pas fixer ce débit maximal entraine un flux qui sera généralement illisible. Attention en qualité fixe : pour ne pas avoir des erreurs affichées en rouge lors de la compression, il faut donc augmenter maxrate parallèlement avec l'augmentation de la résolution ou du nombre d'image par seconde.
Pour mon flux 720p j'ai essayé plusieurs valeurs et de maxrate (mon souhait est de rester avec un q de 2) et je dois augmenter le débit maximum à 12 Mb/s minimum pour ne plus avoir d'erreur (pour d'autres vidéos 720p j'ai même dû monter à 15 Mb/s).
Vous vous dites que si cela se trouve, on a monté le maxrate à un débit tellement élevé qu'il est inutile ? La réponse est non. Sans le maxrate, le débit monte encore plus haut.
Taille du buffer vidéo :
Le buffer vidéo bufsize ne doit être spécifié que s'il y a une contrainte en termes de débit (comme -maxrate:v 9000k). Spécifier un buffer bufsize sans contrainte de débit mettra en erreur ffmpeg. En cas de flux sans contrainte de débit, il faut préciser un "VBV buffer" sachant que sa valeur par défaut provoquera des problèmes à haut débit. Comme je pense qu'il n'est pas prudent de mettre aucune contrainte sur le débit (pb de lecture), je ne parle pas du "VBV buffer" ici.
Pour une vidéo de qualité (-q:v 2 avec -maxrate:v 9000k), ne pas toucher au buffer par défaut va provoquer des erreurs :
buffer underflow - packet too large, ignoring buffer limits to mux it
La taille du buffer par défaut, si non spécifié dans la ligne de commande, est déterminé automatiquement par ffmpeg (sa valeur n'est pas fixe) et le buffer est de quelques dizaines de ko à quelques centaines de Ko (le maximum que j'ai eu, c'est 224 Ko pour un flux encodé en 720p, q:v 2 avec limitation à 9 Mb/s), ce qui est bien trop petit.
Spécifier un buffer de 1,8 Mo, adapté à un encodage DVD : -bufsize:v 1835008
Pour un flux 720p, il est nécessaire d'augmenter le buffer de 1,84 Mo à 2,00 Mo permet de ne plus avoir d'erreur avec un débit maximum de 11 Mb/s en restant avec un q de 2.
Il ne faut pas non plus mettre de valeur trop grande, on aurait aussi des erreurs.
Je dois dire que déterminer la taille du buffer n'est pas évident, s'il est trop grand, on se prend aussi des buffer underflow (sans le message "packet too large, ignoring buffer limits to mux it") !
Il faut bien sûr adapter le buffer en fonction de la définition vidéo de votre flux, de la qualité et du débit maximum autorisé.
Les codecs plus récents sont plus simples à utiliser et n'ont pas ces problématiques.