2010-07-09 51 views
24

有什麼辦法在Linux上將動畫GIF轉換爲視頻格式(例如.avi)?在Linux上的動畫GIF到AVI

我已經嘗試

ffmpeg -i thegif.gif thevideo.avi 

,但我得到的是視頻的第一張圖像。

+0

的ffmpeg -i foo.gif foo.mkv工作與當前的ffmpeg的,甚至還可以直接用可變幀率GIF動畫作品。使用mkv輸出,您可以獲得可變的幀速率mkv。使用mp4輸出時,會根據需要將fps提高到最高,然後根據需要複製幀以在適當時顯示內容。例如一個25 fps和10 fps的gif製作了一個50fps的mp4,其中包括2x dups和5x dup幀,具體取決於哪一部分。存儲重複的幀根本不佔用太多空間,IDK如果它們甚至位於h.264流或只是mp4容器。 – 2014-11-12 13:58:36

回答

12

我可以建議ImageMagick的和ffmpeg的

的組合,這樣做是爲了提取每個幀PNG/JPEG

$magick> convert 'images.gif[0]' image.png 

難道這將圖像轉換爲影片序列

ffmpeg -f image2 -i image%d.jpg video.mpg 

更多幫助on commands

http://www.imagemagick.org/script/command-line-processing.php

http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs

http://electron.mit.edu/~gsteele/ffmpeg/

+7

如果你的gif有轉移,你必須添加-coalesce像這樣:convert -coalesce download.gif some%05d.png – 2013-04-29 09:55:44

+0

-1,因爲你的第一個命令不起作用。但是NordicMainframe的命令起作用。 – erik 2014-05-22 20:00:41

+1

這會從輸入gif中丟失幀頻信息。目前的ffmpeg現在可以直接處理動畫gif輸入。 – 2014-11-12 14:00:11

43

FFmpeg的GIF輸入不工作也很好。它通常是更容易轉換(從ImageMagick的)來解壓縮GIF幀,並與ffmpeg的處理這些:

convert some.gif some%05d.png 
ffmpeg -i some%05d.png some.avi 
rm some*.png 
+0

謝謝我正在尋找你的第一個命令行:'convert some.gif some%05d.png' – Dorian 2012-08-08 15:17:20

+3

如果某些框架因爲只顯示與基本框架的差異而被破壞,請使用'-coalesce'選項來轉換。 – Hnatt 2016-06-13 08:39:49

+0

使用'-coalesce'時,您可能需要刪除第一幀,因爲它與其他格式不同(「PseudoClass」而不是「DirectClass」)。它可能存在一種方法來轉換它... – xiawi 2017-02-25 16:45:14

9

如果你想有一定的幀率爲輸入,因爲所產生的視頻是快還是慢

ffmpeg -r 'xx' -i some%05d.png some.avi 

其中xx是輸入幀率。

0

如果你想有一個環路輸出

ffmpeg -loop 1 -t x -i some%05d.png some.avi 

其中x是視頻應該在幾秒鐘內運行的時間。

Source

0

如果你不想臨時文件,你可以嘗試的mencoder:

mencoder myfile.gif -mf fps=25 -o myfile.avi -ovc lavc -lavcopts vcodec=mpeg4