回到首页

转换视频为小体积的gif

方法一(推荐,试过的三个方法中表现最好的):使用imagemagick实现gif和jpg图片的相互转换。见识了imagemagick转换pdf为图片的能力后,调研imagemagick转换jpg和gif的能力,convert exam.gif p.png分解exam.gif的帧分别为p-0.png、p-1.png,convert *.jpg dest.gif把图片合成gif,合成gif的时候两个重要的参数-delay控制每帧的切换时间,如帧率为24的视频,转换为对应的gif,delay应设为4.17,因为4.17*10*24=1000,对帧率为20的视频,转换为对应的gif,delay应设为5,因为5*10*20=1000,delay厘秒后切换【笑哭】,-loop控制gif的播放次数,默认是0,表示无尽地循环播放。

mkdir ll
ffmpeg -i ll.mp4 -r 24 ll/%05d.jpg // 图片原大小为852x480,ll.mp4是用shotcut裁剪导出的目标视频片段,24是右键视频属性详细信息找到的视频帧速率
cd ll
mogrify -resize 213x120 // 图片长宽各缩小至原来的1/4,减小最后生成的gif体积
cd ..
convert -delay 4.17 -loop 0 ll/*.jpg ll.gif
将视频转换为gif,imagemagick的windows二进制命令程序可以从官网下载,安装程序会帮你配置好环境变量。
参考链接:ImageMagick之制作gif图片
【ImageMagick】用convert制作gif图片动画

方法二:gifify项目,依赖nodejs,ffmpeg,imagemagick,npm和gifsicle,gifsicle需要源码编译,下载源码后,里面有configure.ac,执行autoreconf -i,然后./configure&&make&&make installnpm intall -g gififygifify a.mp4 -o a.gif转换,其他选项:如速度、帧率、颜色、压缩、缩放、字幕、时域处理以后再说。

方法三:网上提到的优秀的视频转gif在线工具网站:https://ezgif.com/,体验后觉得速度好慢,用上面的方法本地制作1秒搞定,且看着该网站转出的gif宽高和size与本地转出的一致,应该是用的相似的方法,比较之后本地方法更强👍!

拓展:使用ffmpeg完成视频和图片的转换。从视频到图片ffmpeg -i a.mp4 -r 25 img%05d.jpg,图片转视频ffmpeg -framerate 25 -i "img%05d.jpg" -b:v 25313k a.mp4-b:v 25313k表示视频的码率,可通过ffmpeg将视频变为图片时查到,亦或参考此处,参考链接:ffmpeg将视频转图片,图片转视频

本文创建于2022.7.8/20.25,修改于2023.4.21/16.56