减少动画 gif 的持续时间

Rot*_*eti 17 gif

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

Maa*_*nsh 22

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

选项 1:使用名为gifsicle的命令行工具。它在默认的 Ubuntu/Debian 存储库中可用。

速度快,不影响质量,买它只接受帧数,不接受时间,所以如果你需要精确的时间,你应该自己弄清楚帧数。您可以使用以下命令查看总帧数和每帧之间的延迟时间:

gifsicle --info YOURFILE.gif
Run Code Online (Sandbox Code Playgroud)

然后你可以用帧延迟除以你想要切割的时间,它会给你这个时间的帧数,这样你就可以计算出开始帧和结束帧。

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

gifsicle YOURFILE.gif '#XXXX-YYYYY' -O3 > cut.gif
Run Code Online (Sandbox Code Playgroud)

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

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

ffmpeg -i YOURFILE.gif -ss 00:00:04 -t 00:00:08 -async 1 cut.gif
Run Code Online (Sandbox Code Playgroud)

选项3:如果你对在线工具没问题,并且你的GIF不超过20MB,这个在线工具可以按帧数或时间切割GIF,不会影响质量。

  • 仅供参考,`-O3` 是一个 [优化选项](https://www.lcdf.org/gifsicle/man.html) 而不是必需的(虽然可能有帮助),`#XXXX` 只是框架的占位符数字。使用出现在前一个 `--info` 步骤输出中的帧编号。在我的例子中`'#0-74'` 是我刚制作的 gif。(当我第一次看到这个时,我暂时挂了四位数字。) (3认同)