剪切动画 gif 的时长

剪切动画 gif 的时长

我有一个动画 gif,我想截取最后 5 秒。有人知道如何在 Linux/Ubuntu 中做到这一点吗?

答案1

有多种方法可以做到这一点。

选项1:使用名为吉夫西勒。它在默认的 Ubuntu/Debian 存储库中可用。

它速度快,不会影响质量,但它只接受帧数,而不是时间,所以如果你需要剪切精确的时间,你应该自己找出帧数。你可以用这个命令查看总帧数和每帧之间的延迟时间:

gifsicle --info YOURFILE.gif

然后,您可以用帧延迟除以您想要剪切的时间,它会给出这段时间内的帧数,这样您就可以找出开始帧和结束帧。

将 XXXX 替换为您希望 GIF 开始的帧,将 YYYY 替换为您希望 GIF 结束的帧。

gifsicle YOURFILE.gif '#XXXX-YYYYY' -O3 > cut.gif

选项 2:使用 FFMPEG。它也可以在 apt 中使用。

FFMPEG 直接接受时间,因此非常简单,但在某些情况下它可能会降低输出 gif 的质量并增加文件大小。

ffmpeg -i YOURFILE.gif -ss 00:00:04 -t 00:00:08 -async 1 cut.gif

选项 3:如果你可以使用在线工具,并且你的 GIF 不超过 20MB,这个在线工具可以按帧号或者按时间剪切 GIF,并且不会影响质量。

答案2

这里还有一个例子。使用图像魔术师, 命令:

 magick Long.gif[0-100] Short.gif

取出前 100 帧Long.gif并保存为Short.gif

您可以看到开始使用多少帧:

magick identify Long.gif

输出的最后一行将在方括号中显示帧数,例如:

Long.gif[829] GIF 64x64 64x64+0+0 8-bit sRGB 256c 1.86076MiB 0.031u 0:00.034

这表明Long.gif有830帧。

请注意,ImageMagick 的许多旧文档都引用了identify(now magick identify) 和convert(now magick) 命令,这些命令可能正是您所需要的,具体取决于您的版本有多新。

相关内容