【发布时间】:2011-08-30 01:34:33
【问题描述】:
我正在尝试使用以下命令将视频的一部分提取为动画 gif:
ffmpeg -i video.avi -t 5 out.gif
它会生成一个动画 gif,但质量很差。但是,当我使用以下方法生成 gif 图像时:
ffmpeg -i video.avi -t 10 out%d.gif
它会生成可接受的 gif 图像质量。如何使用第一个命令生成动画 gif,但质量与第二个命令相同?
【问题讨论】:
标签: ffmpeg
我正在尝试使用以下命令将视频的一部分提取为动画 gif:
ffmpeg -i video.avi -t 5 out.gif
它会生成一个动画 gif,但质量很差。但是,当我使用以下方法生成 gif 图像时:
ffmpeg -i video.avi -t 10 out%d.gif
它会生成可接受的 gif 图像质量。如何使用第一个命令生成动画 gif,但质量与第二个命令相同?
【问题讨论】:
标签: ffmpeg
我在尝试从电影中提取的一系列图像中生成高质量的动画 gif 时遇到了类似的问题。
由于某些原因,使用 ffmpeg 生成的动画 gif 仅包含 103 种颜色,可使用固定的 256 级系统调色板假设,导致可怕的结果。我的解决方案是
ffmpeg -i video.avi -t 10 out%02d.gif
然后
gifsicle --delay=10 --loop *.gif > anim.gif
质量非常好。你可以找到gifsiclehere
编辑:更新帖子以反映 Alex Kahn 的建议。
【讨论】:
ffmpeg 输出 PNG 而不是 GIF,以避免质量不佳。 FWIW,这里有一篇关于在 Bash 中创建 GIFS 的精彩文章:blog.room208.org/post/48793543478
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 帧停止。
gifsicle 看起来根本不起作用。响应您的命令时说“gifsicle.EXE: *.gif: Invalid argument”
我之前没有制作过动画 GIF,但您可以尝试使用比特率参数来指定质量,尽管它是图像(并且可能没有速率)。缩略图质量响应 -b 参数。如果用 insane 来表示“非常糟糕”,您可以指定非常高的比特率和比特率容差(不确定您使用的是 vbr 还是 cbr 源)。 (或者如果你的意思是它太好了并且你想限制大小,就做相反的事情)
'-b', '10000000','-bt', '20000000'
或者,您也可以使用 -s 参数更改尺寸,这将采用普通外观的尺寸表示,例如“1920X1200”。
这实际上取决于您的源材料的比特率和压缩率以及您希望 gif 的样子。也许考虑提供比“疯狂”更多的信息,但我想这会给你一个好的开始。祝你好运
【讨论】: