Конвертировать несколько GIF-файлов

1255
dmm

Как можно конвертировать несколько анимированных GIF-файлов в видео?

Я использую эту команду для преобразования 1 анимированного GIF в видео:

ffmpeg -i aa0012.gif -crf 12 output.mp4 

Это более сложная команда для управления размерами преобразованного GIF:

ffmpeg -i aa0012.gif -vf "scale=min(1920/iw\,1920/ih)*iw:min(1920/iw\,1920/ih)*ih,pad=1920:1920:(1920-(min(1920/iw\,1920/ih)*iw))/2:(1920-(min(1920/iw\,1920/ih)*ih))/2" -c:v libx264 output.mp4 

Я пытался использовать:

-pattern_type glob -i '*.gif' 

Который работает для большинства файлов изображений, но когда я пытаюсь, если с GIF, он возвращает ошибку "* .gif: Нет такого файла или каталога"

0
несколько картинок в одном видео? или несколько картинок в нескольких видео? конвертировать картинки в HD видео? Logman 9 лет назад 0
Ваша ошибка «Нет такого файла или каталога», вероятно, необходимо определить полный путь или установить текущий рабочий каталог. Logman 9 лет назад 0
Я имею в виду несколько картинок в 1 видео. Но оба варианта были бы хороши, если бы вы знали оба решения. Я не конвертирую их в HD-видео, но использую эту команду для архивирования изображений в видео. dmm 9 лет назад 0
Так как у меня есть терминал Cd'ed в папке, в которой есть GIF-файлы, разве это не должно отменять необходимость определения пути? dmm 9 лет назад 0
«Я имею в виду несколько картинок в 1 видео». -> все ли тогда картинки одинакового разрешения? Свойства? Цвета? это может быть причиной проблем Logman 9 лет назад 0
Нет, они из разных источников, поэтому они имеют разные размеры и т. Д. Я подумал, что, может быть, команда, которую я разместил выше с отступом, может решить эту проблему. dmm 9 лет назад 0

1 ответ на вопрос

3
slhck

Animated GIFs are handled differently from normal "images". In fact, they're more like actual videos. That's why you can't use the image demuxer (i.e., can't use the -pattern_type option) there.

What you need to do is convert each one individually to an intermediate file with the same properties, then concatenate those.

ffmpeg -i gif1.gif -vf "…" -r 25 -c:v ffv1 output1.avi ffmpeg -i gif2.gif -vf "…" -r 25 -c:v ffv1 output2.avi … ffmpeg -i "concat:output1.avi|output2.avi" -c:v libx264 output.mp4 
Спасибо! Я проверил это, и это работает. Но я изменил ffv1 на libx264, так как размер файла был слишком большим с опцией ffv1. Интересно, можно ли создать скрипт bash для преобразования нескольких GIF-файлов с помощью вашей команды. dmm 9 лет назад 0
Если вы используете libx264 вместо FFV1, то вы сделаете два кодирования с потерями. Это не рекомендуется, так как вы потеряете качество. Если вы хотите остаться с libx264, то для промежуточных продуктов выберите `-c: v libx264 -preset ultrafast -crf 18`. Это, безусловно, можно автоматизировать с помощью Bash ... slhck 9 лет назад 0

Похожие вопросы