FFmpeg:截取视频片段转成GIF动画
前段時間寫過一篇文章,介紹了FFmpeg的幾個常用的命令行。最近,項目里需要做一個把視頻片段轉成GIF動畫的功能,便于用戶分享到微博。驚奇地發現,原來強大的FFmpeg是支持的!
可以簡單地執行下面的命令行:
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
---------------------?
作者:happydeer?
來源:CSDN?
原文:https://blog.csdn.net/happydeer/article/details/45727227?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的FFmpeg:截取视频片段转成GIF动画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台式计算机的安装顺序,台式电脑安装系统步
- 下一篇: CFCA安心签接入