Linux下GIF制作指南

2015-11-06

样图:

安装桌面录制工具

这些工具有:Record my desktop、Kazam、Vokoscreen等。

Record my desktop生成ogv格式,Kazam生成Mp4格式。

Kazam更好用,还可以用来截屏。

安装Kazam:

sudo apt-get install kazam

安装mplayer、ffmpeg(或者avconv)、convert等工具

sudo apt-get install mplayer imagemagick libav-tools

从视频中提取图片

例如将output.mp4提取图片放入output目录:

mplayer -ao null input.mp4 -vo jpeg:outdir=output

也可以用avconv/ffmpeg命令:

 avconv -i input.mp4 -r 1 output/%04d.jpg

-r 1是指每秒提取1帧。

这些命令可以对视频进行更加细致的操作,可以参考stackoverflow中的讨论:
How to convert video to images?
How to extract images from video file?

由多张图片生成gif

convert output/* output.gif

可以用-delay指定两张图片之间的延时。

convert -delay 100 output/* output.gif

可以使用下面的方法优化output.gif文件的体积:

convert output.gif -fuzz 20% -layers optimize optimised.gif

fuzz,模糊的意思,这个参数的说明如下:

-fuzz distance       colors within this distance are considered equal

Fuzz Distance and Transparent Colors有参数值的解释。黑与白之间的距离是100%。fuzz应该是针对每个颜色通道的。

-layers的解释见http://www.imagemagick.org/script/command-line-options.php?#layers

补充

一个比较实用的方案是使用LICEcap,不过需要在wine中安装。

https://procedural.github.io/post/GifRecorder/ 看起来也不错。

参考资料

recordMyDesktop
Top 4 screen recorders in Linux
Is FFmpeg missing from the official repositories in 14.04?
How to create animated GIF images of a screencast?
Convert Ogv -video to Gif -animation?