FFmpeg:截取视频片段转成GIF动画
前段時間寫過一篇文章,介紹了FFmpeg的幾個常用的命令行。最近,項目里需要做一個把視頻片段轉(zhuǎn)成GIF動畫的功能,便于用戶分享到微博。驚奇地發(fā)現(xiàn),原來強(qiáng)大的FFmpeg是支持的!
可以簡單地執(zhí)行下面的命令行:
ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -f gif D:\a.gif
意思是:將D:\Media目錄下的源文件bear.wmv,從第25秒的位置開始,截取10秒長度的視頻轉(zhuǎn)成GIF文件,保存為D:\a.gif。
想要知道FFmpeg到底支持哪些格式嗎?執(zhí)行ffmpeg –formats即可。發(fā)現(xiàn)gif赫然在列,放心了!
問題來了,你的源文件可能是1080P的高清視頻,幀率可能還比較高。為了便于網(wǎng)絡(luò)分享,GIF文件最好小一點。于是,我們需要使用-s參數(shù)來進(jìn)行圖像的縮放,使用-r參數(shù)來限制目標(biāo)文件的幀率。命令行如下:
ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -s 320x240 -f gif -r 1 D:\b.gif
把b.gif拖進(jìn)瀏覽器預(yù)覽,結(jié)果發(fā)現(xiàn):雖然幀率降到了1 fps(從源視頻里每隔一秒抽取一幀圖像輸出到目標(biāo)文件),整個動畫播放還是持續(xù)了10秒鐘,看著很揪心!能不能在源視頻跳幀的情況下同時提高GIF的播放速率呢(比如說在2秒內(nèi)播完)?查了一遍FFmpeg的說明文檔,似乎沒有哪個參數(shù)可以快速達(dá)到這樣的目的。也罷,那就分兩步走吧:
首先,執(zhí)行ffmpeg -ss 25 -t 10 -i D:\Media\bear.wmv -r 1 -s 320x240 -f image2 D:\foo-%03d.jpeg,從源視頻中每秒鐘抽取一幀圖像,保存為一系列JPEG文件。然后,再執(zhí)行ffmpeg -f image2 -framerate 5?-i D:\foo-%03d.jpeg D:\c.gif,將這一系列JPEG圖像合成為幀率5 fps的GIF文件。Bingo!
上面提到,把GIF文件拖進(jìn)瀏覽器可以進(jìn)行預(yù)覽。當(dāng)然,使用ffplay.exe工具也是可以的——命令行:ffplay D:\a.gif。
p.s. 附送一條指令:截取視頻內(nèi)任意時間點(比如第16.1秒處)的一幀圖像保存為JPEG文件:ffmpeg -ss 16.1 -i D:\Media\bear.wmv -s 320x240 -vframes 1 -f image2 D:\d.jpeg
---------------------?
作者:happydeer?
來源:CSDN?
原文:https://blog.csdn.net/happydeer/article/details/45727227?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的FFmpeg:截取视频片段转成GIF动画的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台式计算机的安装顺序,台式电脑安装系统步
- 下一篇: CFCA安心签接入