web-dev-qa-db-fra.com

Utilisation de 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'essaie 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.

88
CakeMaster

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 comment ils fonctionnent, mais en réglant le débit à l'aide de la commande -b _ switch, je peux obtenir une vidéo de haute qualité. Vous devez trouver un débit qui offre 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 cadence et de la quantité de mouvement dans le contenu de votre vidéo. Gardez à l'esprit que les DVD ont tendance à se situer autour de 4 à 5 Mbit/s en moyenne pour 720x480, je commence donc généralement à partir de là et décide si j'ai besoin de plus ou de moins, puis expérimente. Par exemple, vous pouvez ajouter -b 5000k sur la ligne de commande pour obtenir plus ou moins le débit binaire d'un DVD vidéo.

  • Vous devez spécifier un codec vidéo. Si vous ne le faites pas, ffmpeg utilisera par défaut MPEG-1, qui est assez ancien et ne fournit pas un taux de compression proche de celui de MPEG-4 ou H.264. Si votre version de ffmpeg est générée avec le support de libx264, vous pouvez spécifier -vcodec libx264 en tant que partie de la ligne de commande. Autrement -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é au plus bas débit. Jetez un oeil ici pour quelques exemples.

61
Jason B

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

39
jeff7

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

14
Oran Fry

Sauf si vous effectuez un travail de post-traitement, la vidéo ne sera jamais meilleure que les images d'origine. En outre, comme pour un livre à feuilles mobiles, si vous avez un grand "saut" entre les 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

0
JustBoo