本文记录一下在linux上将视频转换成动态gif图片的方法。
首先,需要在Linux系统上安装FFmpeg,我会用这个工具去解压从视频中解压出视频帧。
下面的指令会解压出独立的视频帧,将它们保存为GIF图片。确保使用诸如("out%04d.gif")的输出文件格式。这样,独立的帧就被合适地命名并保存。
ffmpeg -t <时长> -ss <hh:mm:ss格式的开始位置> -i <视频文件> out%04d.gif
例如,如果你想解压输入视频的视频帧,从第10秒开始,每5秒一帧,请运行下列命令。
$ ffmpeg -t 5 -ss 00:00:10 -i funny.mp4 out%04d.gif
在完成FFmpeg之后,你会看到一组创建出来的GIF文件,它们被命名为"out[\d+].gif"。
合并视频帧进一副动态GIF
下面这一步要合并单个的GIF文件成一副动态GIF图片。为此,你可以使用ImageMagick。
首先,如果你还没有的话,在Linux系统上安装ImageMagick。
Ubuntu 上直接运行 sudo apt-get install imagemagick 命令即可自动安装。
convert -delay <帧数>x<每秒帧数> -loop 0 out*gif <输出文件>
在这个命令中,"-delay"是控制动态速度的选项。这个选项表示在显示下一帧画面前需要等待的秒数:帧数/每秒帧数 。
"-loop 0"选项表示动画的无限次循环。如果你愿意,你可以指定"-loop N"让动画只重复N次。
例如,为了生成一副每秒20帧和循环无数次的动态GIF图片,使用如下命令。
$ convert -delay 1x20 -loop 0 out*.gif animation.gif
第四步(可选):减少动态GIF的大小
最后这一步(可选)是通过使用ImageMagick的GIF优化功能来减少生成的GIF文件的大小。
使用下列命令去减少GIF大小。
convert -layers Optimize animation.gif animation_small.gif
现在你已经准备好在你的社交网络上分享制作完成的GIF图片。