2010-07-09 16 views
24

Czy jest jakiś sposób na konwersję animowanego gifa na format wideo (na przykład .avi) na Linuksie?Animowane gify do avi na Linuksie

Próbowałem już

ffmpeg -i thegif.gif thevideo.avi 

ale mogę to pierwszy obraz wideo.

+0

ffmpeg -i foo.gif foo.mkv współpracuje z obecnym ffmpeg, a nawet działa prawo o zmiennej klatek animowane gify . Z wyjściem mkv otrzymujesz zmienną liczbę klatek na sekundę mkv. Z wyjściem MP4, podbija fps tak wysoko, jak potrzeba, a następnie duplikuje klatki zgodnie z potrzebami, aby wyświetlać elementy w razie potrzeby. na przykład GIF z około 25 klatkami na sekundę i około 10 klatek na sekundę tworzył mp4 o szybkości 50 klatek na sekundę, z dwoma dupkami i pięciokrotnymi ramkami w zależności od części. Przechowywanie zduplikowanych ramek wcale nie zajmuje dużo miejsca, IDK, nawet jeśli znajduje się w strumieniu h.264 lub tylko w kontenerze mp4. –

Odpowiedz

12

mogę zaproponować kombinację ImageMagick i ffmpeg

zrobić, aby wyodrębnić każdą klatkę jako PNG/JPEG

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

Czy to do konwersji obrazów do sekwencji filmowej

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

Więcej pomocy na komendach

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

Jeśli twój gif ma transperancję, musisz dodać -skalować tak: convert -coalesce download.gif niektóre% 05d.png –

+0

-1, ponieważ twoje pierwsze polecenie nie działa. Ale polecenie NordicMainframe działa. – erik

+1

Powoduje to utratę informacji o klatek na sekundę z wejściowego gif. current ffmpeg obsługuje bezpośrednio animowane wejście gif. –

43

wejście gif FFmpeg nie działa zbyt dobrze. Jest to zwykle łatwiejsze do rozpakowania ramki gif z zagospodarowania (od ImageMagick) oraz przetwarzać je z ffmpeg:

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

Poszukując pierwszej linii poleceń: 'convert some.gif some% 05d.png' – Dorian

+3

Jeśli niektóre ramki są uszkodzone, ponieważ pokazują tylko różnicę w stosunku do ramki bazowej, użyj opcji' -coalesce' na 'convert'. – Hnatt

+0

podczas używania '-coalesce' może być konieczne usunięcie pierwszej klatki, ponieważ nie ma ona tego samego formatu co inne (' PseudoClass' zamiast 'DirectClass'). Może istnieć metoda konwersji ... – xiawi

9

Jeżeli chcesz mieć pewną ilość klatek jako wejścia, ponieważ uzyskana wideo jest szybko lub spowolnić

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

gdzie xx to liczba klatek na sekundę.

0

Jeśli chcesz mieć pętlę jako wyjście

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

gdzie x to czas film powinien uruchomić w kilka sekund.

Source

0

Jeśli nie chcesz pliki tymczasowe, można spróbować mencoder:

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