视频转GIF
直接转化
ffmpeg -i sour.mp4 -y des.gif
- -y 文件存在时,直接覆盖,不再询问
截取视频部分进行转化
ffmpeg -ss 8 -t 15 -i 11.mp4 -s 600x400 -r 15 res.gif
- -ss 从第几秒开始,也可以为时间字串如:00:00:08
- -t 往后截取几秒
- -i 输入文件
- -s 输出分辨率,切记中间是小写的x
- -r 输出帧率,一般gif设置成15帧就很流畅了
转化高质量GIF
ffmpeg -i small.mp4 -b 2048k small.gif
- -b 指定比特率
缩放尺寸
ffmpeg -i big.mov -vf scale=360:-1 small.gif
- -vf 执行缩放
- scale 视频宽度值,必须是偶数
- -1 表示保持长宽比,根据宽度值自适应高度。如果要求压缩出来的视频尺寸长宽都保持为偶数,可以使用-2
完整常用命令
ffmpeg -i big.mp4 -b 1024k -vf scale=360:-1 -r 15 -y small.gif
带过滤器
有点耗时,但是转出来的动图质量高,噪点不明显。
ffmpeg -i sour.mp4 -vf "[in]scale=240:-1,split[a][b];[a]palettegen=stats_mode=single[pal];[b][pal]paletteuse=new=1" -r 15 -y des.gif
以上可以根据自己的需要进行选择,如果要求不高,大小又有限制,就直接转,还快
多个图片生成Gif
ffmpeg -f image2 -framerate 5 -i D:\MyData\img\%02d.png D:\MyData\img.gif
将图片存放到指定目录下,然后重命名成有序数列如:%02d 即为 01 ~ 99
常见问题
降低文件大小
修改宽高尺寸
大部分情况下我们中宽度是600px左右的gif就可以了
修改颜色值
gif本身只有256种颜色,颜色越多,文件越大,可以根据图片情况,适当降低颜色值
降低帧数
减少重复帧时,记得把延迟时间加到上一帧上来保持动画的节奏,而不是通过帧数来保持节奏
最后
如果自己弄这个觉得麻烦,推荐一个小巧的软件 Screen To Gif ,小巧但功能绝对强大
视频转Webp
作为谷歌新推出的图片格式,不仅包含静态图片,还有动态图片。
不管动态还是静态,最大的优势就是,体积小
而且ffmpeg转出来的动图质量还很高,一个字 牛
ffmpeg -ss 25 -t 5 -i sour.mp4 -vf scale=240:-1 -r 15 -qscale 80 -loop 0 -y des.webp
很好用,结果也很好,然而,手机上的图库无法播放,glide也加载不出来,一个字:惨
电脑上太旧的图片查看器也不会动,如果不想搞图片查看器,那就放到浏览器里看吧。
如果有其他需求,这个还是不错的。