90 votes

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'essaie de les encoder en une vidéo de bonne qualité. Cependant, chaque réglage et chaque format que j'essaye produit des artefacts très remarquables.

La commande de base est la suivante:

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

et j'ai essayé les drapeaux minrate et maxrate. Tous les formats {mpg, avi, mov, flv} feront l'affaire.

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

62voto

Jason B Points 6574

Un couple de choses:

  • Vous avez besoin de régler le débit vidéo. Je n'ai jamais utilisé minrate et maxrate donc je ne sais pas exactement comment ils fonctionnent, mais en réglant le débit à l'aide de l' -b switch, je suis en mesure d'obtenir des vidéos de haute qualité. Vous devez venir avec un débit qui offre un bon compromis entre compression et la qualité de la vidéo. Vous pourriez avoir à expérimenter avec cela, car tout dépend de la taille de l'image, la fréquence d'image et la quantité de mouvement dans le contenu de votre vidéo. Gardez à l'esprit que le DVD a tendance à être d'environ 4 ou 5 Mbit/s en moyenne pour 720x480, donc j'ai l'habitude de commencer à partir de là et de décider si j'ai besoin de plus ou de moins, et puis juste à expérimenter. Par exemple, vous pouvez ajouter de l' -b 5000k de la ligne de commande pour obtenir plus ou moins de DVD vidéo bitrate.

  • Vous devez spécifier un codec vidéo. Si vous ne le faites pas, ffmpeg sera, par défaut, MPEG-1, qui est assez vieux et ne fournit pas proche de la quantité de compression MPEG-4 ou H. 264. Si votre version de ffmpeg est construit avec libx264 de soutien, vous pouvez spécifier -vcodec libx264 dans le cadre de la ligne de commande. Sinon, -vcodec mpeg4 permettra également de faire un meilleur travail que le MPEG-1, mais pas aussi bien que le x264.

  • Il y a beaucoup d'autres options avancées qui vous aideront à presser la meilleure qualité au plus bas débits. Jetez un oeil ici pour voir quelques exemples.

40voto

jeff7 Points 1264

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

15voto

Oran Fry Points 89

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

par exemple avec imagemagick, donnez-leur un fond noir:

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

D'après mes tests, aucun débit ou codec n'est suffisant pour rendre la vidéo belle si vous alimentez des PNG ffmpeg avec transparence

0voto

JustBoo Points 1590

Sauf si vous effectuez un travail de post-traitement, la vidéo ne sera jamais meilleure que les images d'origine. En outre, tout comme un livre-papier, si vous avez un grand "saut" entre images clés, cela aura l'air drôle. Vous avez généralement besoin d'assez d'interpolations entre les images clés pour une animation fluide. HTH

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X