Подтвердить что ты не робот

Самый быстрый способ создания анимированных gifs из mp4

Мне приходится обрабатывать очень большое количество (200 000+) коротких mp4s (менее 10 секунд) в анимированные gif. Я думаю, что я пробовал использовать все возможные способы командной строки, но для создания качественных gif файлов все еще требуется слишком много времени. В настоящее время я использую ffmpeg для распаковки кадров изображения (jpg) и преобразования магии изображения для их сборки. Он создает высококачественные gif, но занимает слишком много времени и использует слишком много памяти и процессора даже при настройке с ограничениями памяти и границ карты.

Я также попытался создать анимированные gifs напрямую, используя ffmpeg, но качество в лучшем случае ужасное. Кроме того, я пробовал использовать gifsicle, что кажется быстрым, но он принимает только gifs как входные данные, а использование ffmpeg для их создания приводит к низким качествам gif.

Есть ли у кого-нибудь рецепты командной строки для быстрого создания высококачественного gif?

4b9b3361

Ответ 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).