如何制作循环播放的 gif 动画?

如何制作循环播放的 gif 动画?

我有一个 mp4 剪辑,我想将其转换为看起来流畅的 gif,这样它就可以以与正向播放相同的速度和质量反向播放。也就是说,当它到达剪辑的末尾时,它会反向播放,然后当到达反向版本的末尾时,它会开始播放正常版本并继续循环,这样它看起来就会很流畅,不会跳跃。

我正在运行带有 GNOME 3.22 的 Ubuntu GNOME 16.10,是否有任何视频编辑器或其他应用程序可用于执行这些操作?如果有,哪些以及如何执行?或者也许有一个脚本可以反转所有帧以创建新帧,然后将它们合并为 gif?只要速度和质量良好且相同且没有跳跃,那么我真的不介意它是如何完成的。

答案1

最简单的方法是用这个在线工具。只需上传 GIF 并勾选“运行到末尾并返回到开始”复选框。

我还没有看到任何内置有此类功能的 Linux 工具,但如果你不想使用在线工具或文件太大,你可以使用 gifsicle 拆分 GIF,复制并重命名帧,或者只是按升序和降序列出文件名,然后再次将它们连接在一起 - 使用 gifsicle。

像这样的事情可以解决问题:

gifsicle --unoptimize --explode original.gif && 
find . -iname "*\.gif\.*" | sort > frame_list.txt && 
find . -iname "*\.gif\.*" | sort -r >> frame_list.txt && 
cat frame_list.txt | xargs gifsicle > reversed.gif

(如果您收到损坏/闪烁的 gif 或某些 gifsicle 错误,您可能需要在拆分之前使用 imagemagick 删除优化convert original.gif -coalesce unoptimized.gif:)


对于 mp4 到 gif 的转换步骤,在线和离线都有很多不同的选项,但我发现这个可以产生最好的结果:http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html

制作 GIF 后对其进行拆解和重新组装根本不会影响质量,mp4 到 gif 的转换步骤将决定质量。

答案2

为了创建一个“前进 + 后退” GIF,在 Ubuntu / Linux 下,我们使用名为吉夫西勒
命令很简单:

gifsicle --unoptimize original.gif original.gif "#-1-0" > reversed.gif

它只是将同一个 gif 连接两次,一次向前,一次向后。(请注意,当 gif 经过优化时,取消优化很有用,并且可能导致向后播放时出现故障)

答案3

使用任何方法/工具准备好普通 gif 后,请使用以下命令:

http://www.imagemagick.org/Usage/anim_mods/#patrol

convert YourGifFile.gif -coalesce -duplicate 1,-2-1 -quiet \
-layers OptimizePlus -loop 0 OutputPatrolCycleFile.gif

PS:我只回答了如何优雅地解决核心问题。

相关内容