2011-05-21 90 views
44

我想視頻的部分提取到使用以下命令GIF動畫:如何使用ffmpeg從avi生成gif?

ffmpeg -i video.avi -t 5 out.gif 

它生成GIF動畫,但質量是瘋了。然而,當我生成使用GIF圖像:

ffmpeg -i video.avi -t 10 out%d.gif

它產生可接受的GIF圖像的質量。我如何使用第一個命令生成動畫gif,但與第二個命令的質量相同?

+2

這可能很方便http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html – 2015-03-18 02:02:27

回答

0

我還沒有製作過GIF動畫,但您可以嘗試使用比特率參數來指定畫質,儘管它是一個圖像(並且可能沒有比例)。縮略圖質量響應-b參數。如果通過瘋狂,你的意思是「非常糟糕」,你可以指定非常高的比特率和比特率容忍度(不確定你是否使用vbr或cbr源)。 (或者做相反,如果你的意思是太好了,你希望限制大小)

'-b', '10000000','-bt', '20000000'

另外,您還可以使用-s參數,將採取的一個普通的望着表示更改尺寸尺寸如「1920X1200」。

它確實取決於您的源素材的比特率和壓縮以及您希望gif會是什麼樣子。也許考慮提供比「瘋狂」更多的信息,但我想這會給你一個很好的開始。祝你好運

+2

感謝您的回覆。但是我發現ffmpeg並不擅長處理gif圖像,所以我用它來提取圖像,然後使用imagemagick來生成gif。 – Marconi 2011-05-22 01:20:45

+0

不知道爲什麼我在這裏收到很多downvotes。我在前面說過,我沒有製作GIF動畫。試圖將問題的人指向其他相關參數。舊的FFMPEG項目似乎很榮幸將其參數隱藏在文檔之外。也許我因爲揭示其可怕的黑暗祕密而陷入低谷? – Profane 2011-08-09 12:46:36

61

我有一個類似的問題,試圖從一系列從電影中提取的圖像生成高品質的動畫gif。

由於某些原因,使用ffmpeg生成的動畫gif僅包含103種顏色,使用固定的256級系統顏色調色板可導致可怕的結果。我的解決辦法,而不是

ffmpeg -i video.avi -t 10 out%02d.gif 

然後

gifsicle --delay=10 --loop *.gif > anim.gif 

質量是那麼相當不錯。你可以找到gifsicle here

編輯:更新了帖子,以反映亞歷克斯卡恩的建議。

+7

謝謝!一個調整:使用%02d.gif。這填充文件名中的數字,以便它們按照正確的字母順序排列。否則,訂單結束爲1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23 ...這給出了由此產生的gif一個奇怪的跳過效果。 – 2012-12-17 00:32:11

+2

您也可以使用'ffmpeg'輸出PNG而不是GIF來避免糟糕的質量。 FWIW,這裏有一個關於在Bash中創建GIFS的精彩文章:http://blog.room208.org/post/48793543478 – 2013-09-30 10:48:50

+1

這很好用。你可能還想做的一件事是跳過幀:使用'seq -f%02g。gif start skip stop「代替gifsicle命令中的」* .gif「,你可以跳過'skip'幀,從'start'開始到'stop'幀結束。非常有用。 例如: gifsicle --delay = 10 --loop'SEQ -f%02g.gif 1 3 156'> anim.gif 將在幀1開始,跳過3幀和在幀156中 – funkaster 2014-03-03 23:21:02