J'ai un ensemble d'images vidéo enregistrées sous forme d'images dans un répertoire, et j'essaie de les encoder en une vidéo de bonne qualité, mais chaque paramètre et chaque format que j'essaye produit 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 drapeaux minrate et maxrate. Tous les formats {mpg, avi, mov, flv} feront l'affaire.
Des suggestions de paramètres? La taille finale du fichier n'est pas un problème.
video
ffmpeg
video-encoding
CakeMaster
la source
la source
ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4
. J'ai trouvé que pour forcer le framerate, je devais le spécifier à la fois pour les fichiers d'entrée et de sortie. Ce codec semble fonctionner pour moi - vous n'aurez peut-être pas besoin de le spécifier. Je voulais juste inclure ce que j'ai fait parce que j'ai passé beaucoup de temps à y travailler. Le seul inconvénient est que mes images d'entrée sont à contraste élevé (boules bleues et rouges sur fond blanc) et plus tard dans le film, les boules commencent toutes à devenir de la même couleur sombre - un effet de contraste indésirable.Réponses:
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 réglant le débit binaire à l'aide du
-b
commutateur, je suis capable d'obtenir une vidéo de haute qualité. Vous devez trouver un débit binaire qui offre un bon compromis entre la compression et la 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 le DVD a tendance à être d'environ 4-5 Mbit / s en moyenne pour 720x480, donc je commence généralement à partir de là et décide si j'ai besoin de plus ou moins, puis j'expérimente. Par exemple, vous pouvez ajouter-b 5000k
à la ligne de commande pour obtenir plus ou moins de débit binaire vidéo DVD.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 près de la quantité de compression MPEG-4 ou H.264. Si votre version ffmpeg est compilée avec la prise en charge de libx264, vous pouvez spécifier
-vcodec libx264
dans le cadre de 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 binaires les plus bas. Jetez un œil ici pour quelques exemples.
la source
ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …
. 18 est le CRF avec une perte de qualité très marginale, mais le débit sera probablement faible. Et vous pouvez essayer des valeurs CRF plus grandes si vous avez besoin d'une taille de fichier plus petite. Et comme vous le voyez, c'est assez simple.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 ceci:
ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg
la source
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:
D'après mes tests, aucun débit ni codec n'est suffisant pour rendre la vidéo bonne si vous alimentez des PNG ffmpeg avec transparence
la source
À moins que vous ne fassiez un travail de post-traitement, la vidéo ne sera jamais meilleure que les images d'origine. Aussi juste comme un flip-book, si vous avez un grand "saut" entre les images clés, cela aura l'air drôle. Vous avez généralement besoin de suffisamment d '"interpolations" entre les images clés pour donner une animation fluide. HTH
la source