通过上篇文章,我们得到了MP4文件,接下来,我们将把这个文件转化成gif图片,这篇不啰嗦,直接干货,本篇主要围绕ffmpeg来讲述,ffmpeg对于很多人来说就是只闻其声不见其人,是的,在本篇博客之前,我也没怎么接触过,FFmpeg是开源的。但我们不必去下载它的源代码。下载已经编译好的exe/dll即可。可以到
http://www.ffmpeg.org/download.html
,然后点击“Windows Builds”,再根据你当前的机器是32位还是64位来决定下载哪个包。我的机器跑的是Win 7的64位,所以我选择了“Download ffmpeg-git-0a9e781-64-bit-static”。如果图方便,也可以在我的资源里面下载,免费的哦^_^,
点击下载
。
下载完成后解压,我把解压后的文件放在了D盘的ffmpeg文件夹下,打开cmd窗口,进入到ffmpeg中的bin文件夹中
我们再把之前的zero.mp4文件放在D盘的media文件夹下,接下来开始放大招了,在cmd中键入:
ffmpeg -i D:\media\zero.mp4 D:\media\zero.gif
这行代码的意思是把D盘media文件夹下的zero.mp4文件转换成zero.gif文件,放在D盘的media文件夹下。敲击回车后就会出现有一米长的打印,我和这串打印不熟悉,它不认识我,我也不认识它,但这不影响我们的结果
细心的朋友一定发现这个文件好大啊,如果上传到CSDN是没法通过的,CSDN最大的限制只有2M,如果ffmpeg要是能有adb里面那些命令就好了,压缩比特率和减小宽高这个问题就可以完美解决了,带着这个疑问我们去官网查看,
点此在线查看3.0文档
,在此附上我下载到的离线文档,但是版本有点低,
点击下载。
如果后续有必要,再好好解读下ffmpeg的源码和api,在这里就不去深入探讨了,就围绕今天的话题,去转换一个合适的gif出来,之前的MP4是10s,有点长了,我们只需要5s就好,通过查看文档后得知,我们只需要键入:
D:\ffmpeg\bin>ffmpeg -ss 2 -t 5 -i D:\media\zero.mp4 -s 300x200 -b:v 1500k D:\media\zero2.gif
这里我们先解读下,-ss 2 -t 5,从第2秒的地方开始,往后截取5秒钟,-ss和-t参数必须放在-i前面,表示是限定后面跟着的输入文件的。-s 300×200,指的是图像帧尺寸,从宽高上进行压缩,为了保证图像缩放后的质量,最好加上码流参数-b:v。现在这个图片只有700度kb,我们上传看下效果:
丫的,我搞了这么久,你居然这么不争气,还给我来个反的,一定是看我好欺负,嗯,一定是的,我搞不死你,再来转换一次:
D:\ffmpeg\bin>ffmpeg -ss 2 -t 5 -i D:\media\zero.mp4 -vf "rotate=180*PI/180" -s 300x200 -b:v 1500k D:\media\zere3.gif
聪明人看一眼,傻子看一晚,对于-vf “rotate=180*PI/180”这句话,大家都是聪明的程序员,一看就知道是旋转180度,好了,我们在通过cmd最后一次打印文件信息:
OK了,现在对于ffmpeg,是不是忽然有了信心学好它,其实,ffmpeg可以转换的格式太多,不仅仅只有MP4和gif,有兴趣的可以自己尝试下。哈哈,一起努力爬坑吧,日后如有机会,希望能和大家一起分享ffmpeg更多的东西。