Utiliser ffmpeg pour encoder une vidéo de haute qualité

J’ai un ensemble d’images vidéo enregistrées en tant qu’images dans un répertoire, et j’essaye de les encoder en une vidéo de bonne qualité, mais chaque paramètre et chaque format que j’essaie produisent des artefacts très visibles.

La commande de base est la suivante:

ffmpeg -r 25 -i %4d.png myvideo.mpg 

et j’ai essayé les indicateurs minrate et maxrate. N’importe lequel des formats {mpg, avi, mov, flv} fera l’affaire.

Des suggestions pour les parameters? La taille finale du fichier n’est pas un problème.

Un certain nombre de choses:

  • Vous devez définir le débit vidéo. Je n’ai jamais utilisé minrate et maxrate, donc je ne sais pas exactement comment ils fonctionnent, mais en définissant le bitrate à l’aide de l’option -b , je peux obtenir une vidéo de haute qualité. Vous devez proposer un débit binary offrant un bon compromis entre compression et qualité vidéo. Vous devrez peut-être expérimenter cela car tout dépend de la taille de l’image, de la fréquence d’images et de la quantité de mouvement dans le contenu de votre vidéo. Gardez à l’esprit que les DVD ont tendance à être autour de 4-5 Mbit / s en moyenne pour 720×480, donc je commence généralement à partir de là et décide si j’ai besoin de plus ou moins et ensuite juste expérimenter. Par exemple, vous pouvez append -b 5000k à la ligne de commande pour obtenir plus ou moins de bitrate vidéo DVD.

  • Vous devez spécifier un codec vidéo. Si vous ne le faites pas, ffmpeg utilisera par défaut le format MPEG-1, qui est assez ancien et ne fournit pas une compression proche de celle du format MPEG-4 ou H.264. Si votre version de ffmpeg est construite avec le support de libx264, vous pouvez spécifier -vcodec libx264 dans la ligne de commande. Sinon, -vcodec mpeg4 fera également un meilleur travail que MPEG-1, mais pas aussi bien que x264.

  • Il existe de nombreuses autres options avancées qui vous aideront à obtenir la meilleure qualité aux débits les plus bas. Jetez un coup d’oeil ici pour quelques exemples.

Vous devez spécifier l’option -vb pour augmenter le débit vidéo, sinon vous obtenez la valeur par défaut qui produit des vidéos plus petites mais avec plus d’artefacts.

Essayez quelque chose comme ça:

ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg

Assurez-vous que les fichiers PNG sont complètement opaques avant de créer la vidéo

par exemple avec imagemagick, leur donner un fond noir:

 convert 0.png -background black -flatten +matte 0_opaque.png 

D’après mes tests, aucun bitrate ou codec n’est suffisant pour rendre la vidéo plus belle si vous transmettez des fichiers PNG ffmpeg avec transparence

Si vous ne faites pas de post-traitement, la vidéo ne sera jamais meilleure que les images d’origine. Tout comme un flip-book, si vous avez un grand “saut” entre les images-clés, cela vous semblera amusant. Vous avez généralement besoin de suffisamment de “tweens” entre les images clés pour donner une animation fluide. HTH