2010-07-09 2 views
24

Есть ли способ конвертировать анимированный gif в видеоформат (например, .avi) в Linux?Анимированный gif для avi on linux

Я уже пробовал

ffmpeg -i thegif.gif thevideo.avi 

, но все, что я получаю первое изображение видео.

+0

FFmpeg -i foo.gif foo.mkv работает с текущей FFmpeg, и даже работает прямо с переменной частотой кадров анимированные гифы , С выходом mkv вы получаете переменную частоту кадров mkv. С выходом mp4 он подхватывает fps настолько высоко, насколько это необходимо, а затем дублирует кадры, если необходимо, чтобы отображать вещи, когда это необходимо. например gif с 25 кадрами в секунду и около 10 кадров в секунду сделал 50fps mp4, с 2x dups и 5x dup кадрами в зависимости от какой части. Сохранение дубликатов фреймов не занимает много места, IDK, если они даже в потоке h.264 или только в контейнере mp4. –

ответ

12

я могу предложить сочетание ImageMagick и FFmpeg

сделать это, чтобы извлечь каждый кадр как PNG/JPEG

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

ли это для преобразования изображений в последовательности фильма

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

Дополнительная помощь по командам

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 –

+0

-1, потому что ваша первая команда не работает. Но команда NordicMainframe работает. – erik

+1

Это теряет информацию о частоте кадров с входного gif. текущий ffmpeg теперь обрабатывает анимированный вход gif напрямую. –

43

вход GIF FFmpeg не работает слишком хорошо. Это, как правило, легче распаковать GIF кадры с обращенным (от ImageMagick) и обрабатывать их с помощью 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

+3

Если некоторые кадры разбиты, потому что они показывают только разницу с базовым фреймом, используйте опцию' -coalesce' для 'convert'. – Hnatt

+0

при использовании '-coalesce' вам может понадобиться удалить первый кадр, потому что он имеет тот же формат, что и другие (' PseudoClass' вместо 'DirectClass'). Он может существовать методом его преобразования ... – xiawi

9

Если вы хотите, чтобы иметь определенную частоту кадров в качестве входных данных, так как в результате видео поститься или замедлить

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

где xx - входная частота кадров.

0

Если вы хотите, чтобы иметь цикл в качестве выходного сигнала

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

где х это время видео должно работать в считанные секунды.

Source

0

Если вы не хотите, временные файлы, вы можете попробовать MEncoder:

mencoder myfile.gif -mf fps=25 -o myfile.avi -ovc lavc -lavcopts vcodec=mpeg4 
Смежные вопросы