Самый быстрый способ создания анимированных gifs из mp4
Мне приходится обрабатывать очень большое количество (200 000+) коротких mp4s (менее 10 секунд) в анимированные gif. Я думаю, что я пробовал использовать все возможные способы командной строки, но для создания качественных gif файлов все еще требуется слишком много времени. В настоящее время я использую ffmpeg для распаковки кадров изображения (jpg) и преобразования магии изображения для их сборки. Он создает высококачественные gif, но занимает слишком много времени и использует слишком много памяти и процессора даже при настройке с ограничениями памяти и границ карты.
Я также попытался создать анимированные gifs напрямую, используя ffmpeg, но качество в лучшем случае ужасное. Кроме того, я пробовал использовать gifsicle, что кажется быстрым, но он принимает только gifs как входные данные, а использование ffmpeg для их создания приводит к низким качествам gif.
Есть ли у кого-нибудь рецепты командной строки для быстрого создания высококачественного gif?
Ответы
Ответ 1
Для начала вы должны создать набор jpg-изображений с максимальным качеством с использованием опций mplayer
и jpeg
до 100 (jpeg: quality = 100).
mplayer -ao null -ss 0:00:00 -endpos 10 mts.flv -vo jpeg:outdir=jpeg_dir:quality=100
Затем вам нужно преобразовать сгенерированные jpgs в gif с помощью convert
, просто введите:
for i in ./jpeg_dir/*.jpg; do convert "$i" "${i%.jpg}.gif"; done
И, наконец, используя gifsicle
создать анимированный gif:
gifsicle --delay=10 --loop ./jpeg_dir/*.gif > anim.gif
Кроме того, вы можете использовать флаг уровня оптимизации --optimize=03
. Может быть полезно уменьшить размер файла:
gifsicle --delay=10 --optimize=03 --loop *.gif > anim.gif
Кроме того, вы можете манипулировать с количеством цветов --colors num
текущей палитры
и --color-method method
, чтобы определить наиболее подходящую палитру.
Для меня наиболее подходящим методом является median-cut
median-cut is the median cut algorithm described by Heckbert
Кроме того, я пытаюсь манипулировать описанными флагами и обнаружил наиболее полезные варианты для достижения
лучшее качество сгенерированного gif-изображения:
gifsicle --delay=3 --optimize=03 --color-method median-cut --loop *.gif > anim.gif
Будьте точны с --delay=NUM
, чтобы соответствовать скорости анимации. Этот параметр зависит от FPS исходного видео.
Ответ 2
Это может улучшить переход от несжатых изображений, например .ppm, например, с помощью mplayer командной строки будет:
mplayer -benchmark -noframedrop -nosound -vf format=rgb24 -vo pnm *.avi -osdlevel 0
Они сохраняют цикл сжатия/сжатия jpg.
Это также поможет работать с твердотельным накопителем.
Ответ 3
Используйте анимационную программу из пакета imagemagick после разделения видео на изображения. Как это
оживить. /*.jpg.
Затем просто сохраните открытые слияния в образах программы ImageMagick как gif. Но он может быть большим/Затем нужно оптимизировать и изменять размер (лучше сделать это с помощью mplayer first scale = 240: 180).