如何使用ffmpeg从avi生成gif?

如何使用ffmpeg从avi生成gif?,ffmpeg,Ffmpeg,我正在尝试使用以下命令将视频的一部分提取为动画gif: ffmpeg -i video.avi -t 5 out.gif 它生成了一个动画gif,但质量令人难以置信。但是,当我使用以下方法生成gif图像时: ffmpeg-i video.avi-t 10 out%d.gif 它生成可接受质量的gif图像。如何使用第一个命令生成动画gif,但质量与第二个命令相同?我以前没有制作过动画gif,但您可以尝试使用比特率参数指定质量,尽管它是图像(可能没有速率)。缩略图质量响应-b参数。如果所说的疯狂,

我正在尝试使用以下命令将视频的一部分提取为动画gif:

ffmpeg -i video.avi -t 5 out.gif
它生成了一个动画gif,但质量令人难以置信。但是,当我使用以下方法生成gif图像时:

ffmpeg-i video.avi-t 10 out%d.gif


它生成可接受质量的gif图像。如何使用第一个命令生成动画gif,但质量与第二个命令相同?

我以前没有制作过动画gif,但您可以尝试使用比特率参数指定质量,尽管它是图像(可能没有速率)。缩略图质量响应-b参数。如果所说的疯狂,您的意思是“疯狂地糟糕”,那么可以指定非常高的比特率和比特率容差(不确定是否使用vbr或cbr源)。(如果你的意思是太好了,你想限制尺寸,那就做相反的事情)

“-b”、“10000000”、“bt”、“20000000”

或者,您也可以使用-s参数更改尺寸,该参数将采用尺寸的普通表示形式,如“1920X1200”


这实际上取决于源材料的比特率和压缩,以及您希望gif是什么样子。也许考虑提供更多的信息比“疯狂”,但我想这将给你一个良好的开端无论哪种方式。祝你好运

我在尝试从一系列从电影中提取的图像生成高质量的动画gif时遇到了类似的问题

出于某些原因,使用ffmpeg生成的动画gif仅包含103种颜色,使用固定的256级系统调色板可假定为103种颜色,从而导致可怕的结果。我的解决办法是

ffmpeg -i video.avi -t 10 out%02d.gif
然后

质量是相当好的。你可以找到吉西科尔


编辑:更新帖子以反映亚历克斯·卡恩的建议。

感谢您的回复。但是我发现ffmpeg并不擅长处理gif图像,所以我用它来提取图像,然后用imagemagick生成gif。我不知道为什么我会在这里收到很多反对票。我事先声明我没有制作动画GIF。试图将问题指向其他相关参数。旧的FFMPEG项目似乎以将其许多参数隐藏在文档之外而自豪。也许我因为揭露了它可怕的、黑暗的秘密而被否决了?谢谢!一个成人:用完%02d.gif。这将在文件名中填充数字,以便它们按正确的字母顺序排列。否则,顺序将是1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23。。。这使得生成的gif具有奇怪的跳过效果。您还可以使用
ffmpeg
输出PNG而不是gif,以避免糟糕的质量。FWIW,这里有一篇关于在Bash中创建GIF的好文章:这非常有效。您可能还想做的一件事是跳过帧:使用gifsicle命令中的
seq-f%02g.gif start skip stop
而不是
*.gif
,您可以跳过
skip
帧,从
start
开始,到
stop
帧结束。非常有用。例如:gifsicle--delay=10--loop
seq-f%02g.gif 1 3 156
>anim.gif将从第1帧开始,跳过3帧并在第156帧停止。此外,我建议下一步:转换-层优化anim.gif anim_opt.gif
gifsicle
看起来根本不起作用。响应命令时显示“gifsicle.EXE:.gif:无效参数”这可能很方便
gifsicle --delay=10 --loop *.gif > anim.gif