使用FFmpeg将视频转成高质量的Gif动图

有时候我们需要将拍摄或录制的视频文件转成Gif图。

比如我在写博客时就需要将录屏的视频文件转成Gif动图以便在页面中直接展示。

本文记录一下视频转高质量Gif图的命令。

生成Gif的FFmpeg的命令

  1. 使用ffmpeg生成调色板文件

这个命令是使用ffmpeg生成一个高质量的调色板图片(palette.png),调色板可以帮我们生成色彩高还原度的Gif:

1
ffmpeg -y -i input.mp4 -vf fps=30,scale=320:-1:flags=lanczos,palettegen palette.png
  1. 结合调色板生成Gif动图
1
ffmpeg -y -i input.mp4 -i palette.png -filter_complex "fps=30,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" foo.gif

简化成一个函数,供系统调用

由于我使用的是Mac系统,所以我可以在当前用户根目录的.zprofile中新建一个函数:

1
2
3
4
5
function makegif {
ffmpeg -y -i $1 -vf fps=30,scale=300:-1:flags=lanczos,palettegen palette.png
ffmpeg -y -i $1 -i palette.png -filter_complex "fps=30,scale=300:-1:flags=lanczos[x];[x][1:v]paletteuse" $1.gif
rm palette.png
}

这样,每次需要生成Gif图的时候,只需要在终端中执行命令即可,例如:

1
makegif 1589167714045893.mp4

-c300

程序员磊哥 wechat
扫描微信二维码,关注磊哥的公众号