gifsicle
(чтобы разоптимизировать GIF и разбить на кадры) и ffmpeg
(чтобы сделать из кадров видео):gifsicle -U --explode "input.gif"
for f in *.gif.* ; do mv "$f" "$f.gif" ; done
ffmpeg -r 25 -i "input.gif.%03d.gif" -sameq -s 320x240 output.flv
Если нужно добавить чёрных полей (до нужного размера), действую примерно так (в данном случае, хочу получить 320×240):
ffmpeg -i input.file -s 320x180 -padtop 30 -padbottom 30 output.file
Дополнение: с новыми версиями ffmpeg (например, 0.6.90), поля к видео добавляются с помощью видеофильтра pad:
ffmpeg -i input.file -vf "scale=320:180,pad=320:240:0:30" output.file
Я не использую для разделения на кадры ImageMagick (convert), потому что мне кажется, что
gifsicle
работает быстрее и требует меньше памяти.(in English)