конвертировать анимированные GIF в видео на сервере Linux, сохраняя частоту кадров

Как программно преобразовать анимированный GIF-файл в видео (например, h264 @ mp4) на сервере Linux?

Мне это нужно для обработки сгенерированного пользователем контента, который должен выводиться в виде нескольких определенных видеоформатов; поэтому возможно, что пользователи захотят обрабатывать анимированные GIF-файлы. У меня уже есть набор работающих php-скриптов для перекодирования видеофайлов в определенные форматы (например, vpx @ webm и h264 @ mp4, масштабированные до определенных разрешений) с использованием avconv, но поэтому мне нужен ввод видео.

Обычные способы, по-видимому, состоят в том, чтобы извлечь кадры из gif и затем закодировать его, например:

convert file.gif file%03d.png 
avconv -i file%03d.png file.mp4

Но это отбрасывает частоту кадров, определяемую информацией паузы в gif-файле. Можно определить частоту кадров для avconv с -r, но

это не учитывает паузу между кадрами, поскольку они могут различаться (например, пауза 1-го кадра 100 мс, пауза 2-го кадра 250 мс, пауза 3-го кадра 100 мс, ...)так как ввод поступает от пользователей, он может даже отличаться, так как некоторые GIF-файлы могут иметь 5 кадров в секунду, а другие 30 кадров в секунду

Я заметил, что avconv может обрабатывать GIF-файлы самостоятельно и, следовательно, может уважать правильные паузы, но когда я это делаю (как описано вКак конвертировать GIF в Mp4 возможно?)

avconv -i file.gif -r 30 file.mp4

avconv примет только первый кадр gif, пока он обнаружит файл, по крайней мере, как видео:

Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
  Stream #0.0: Video: gif, pal8, 640x480, 25 tbn

(пример gif 'file.gif' имеет 15 кадров, каждый с паузой 100 мс => 1,5 с, цикл)

Чего мне не хватает? Что происходит не так?Есть ли, вероятно, лучшие инструменты для этого варианта использования?Какие большие сайты, например, такие как 9gag использовать для перекодирования загруженных картинок в видео?

Ответы на вопрос(0)

Ваш ответ на вопрос