用ffmpeg 生成git 动图

ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -f gif D:\a.gif

意思是:将D:\Media目录下的源文件bear.wmv,从第25秒的位置开始,截取10秒长度的视频转成GIF文件,保存为D:\a.gif。

想要知道FFmpeg到底支持哪些格式吗?执行ffmpeg –formats即可。发现gif赫然在列,放心了

问题来了,你的源文件可能是1080P的高清视频,帧率可能还比较高。为了便于网络分享,GIF文件最好小一点。于是,我们需要使用-s参数来进行图像的缩放,使用-r参数来限制目标文件的帧率。命令行如下:

ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -s 320x240 -f gif -r 1 D:\b.gif

把b.gif拖进浏览器预览,结果发现:虽然帧率降到了1 fps(从源视频里每隔一秒抽取一帧图像输出到目标文件),整个动画播放还是持续了10秒钟,看着很揪心!能不能在源视频跳帧的情况下同时提高GIF的播放速率呢(比如说在2秒内播完)?查了一遍FFmpeg的说明文档,似乎没有哪个参数可以快速达到这样的目的。也罢,那就分两步走吧:

首先,执行ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -r 1 -s 320x240 -f image2 D:\foo-%03d.jpeg,从源视频中每秒钟抽取一帧图像,保存为一系列JPEG文件。然后,再执行ffmpeg -f image2 -framerate 5 -i D:\foo-%03d.jpeg D:\c.gif,将这一系列JPEG图像合成为帧率5 fps的GIF文件。Bingo!

上面提到,把GIF文件拖进浏览器可以进行预览。当然,使用ffplay.exe工具也是可以的——命令行:ffplay D:\a.gif。

 

 

p.s. 附送一条指令:截取视频内任意时间点(比如第16.1秒处)的一帧图像保存为JPEG文件:ffmpeg -ss 16.1 -i D:\Media\bear.wmv -s 320x240 -vframes 1 -f image2 D:\d.jpeg

在这里做一下记录,方便后面使用。

文章来自这位兄台的博客:https://blog.csdn.net/happydeer/article/details/45727227

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章