用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

 

 

 

 

 

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