2

Я вижу эту страницу о том, как сделать это с изображениями численно. Но у меня есть каталог изображений, которые выглядят так, например:

ADAM SANDLER.jpg
JOHN DOE.jpg
SAM SMITH.jpg

Я хочу создать видео слайд-шоу из всех изображений в этом каталоге, отсортированных по алфавиту.

Есть какой-либо способ сделать это?

РЕДАКТИРОВАТЬ

В конце я пытаюсь создать вертикальное видео для публикации в Instagram. Эти фотографии являются портретами, поэтому это должно быть "вертикальное" видео. Кажется, у FFMPEG есть проблемы с этим, по крайней мере, воспроизведение видео в Quicktime, похоже, не работает. Это должно быть 15-секундное видео, и есть 25 изображений.

Это команда, которую я запускаю, и она просто кажется черной, когда я открываю ее в Quicktime. Когда я открываю в VLC, он играет, но показывает только первые пару кадров.

ffmpeg -r 1 -i img%03d.jpg -c:v libx264 -pix_fmt yuv420p out.mp4

2 ответа2

2

Вы можете использовать демоверсию concat.

Сначала подготовьте текстовый файл, содержащий список всех изображений в нужном вам порядке. В Windows из командной строки вы можете запустить эту команду в папке:

dir *.jpg /b /on > list.txt

Теперь префикс каждой строки с file ' и суффикс с ' , так что каждая строка выглядит

file 'ADAM SANDLER.jpg'

Возможно, вы захотите продублировать последнюю строку из-за ошибки в фильтре fps.

Теперь, если все ваши изображения имеют одинаковый размер, запустите

ffmpeg -f concat -r 1/2 -i list.txt -crf 20 -vf fps=8,format=yuv420p video.mp4

Если нет, и при условии 1920x1080 качестве выходного размера видео, запустите

ffmpeg -f concat -r 1/2 -i list.txt -vf "scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2,fps=8,format=yuv420p" -crf 20 video.mp4

-r 1/2 - входная частота кадров и определяет, как долго каждое изображение остается, в данном случае, 2 секунды. Я установил выходную частоту кадров на 8 потому что некоторые проигрыватели могут не воспроизводить вывод. CRF контролирует качество. Более низкие значения дают лучший результат, но большие файлы.


Для отредактированного Q:

использование

ffmpeg -framerate 25/15 -i img%03d.jpg -c:v libx264 -vf "scale=iw*min(1080/iw\,1080/ih):ih*min(1080/iw\,1080/ih), pad=1080:1080:(1080-iw*min(1080/iw\,1080/ih))/2:(1080-ih*min(1080/iw\,1080/ih))/2,fps=30000/1001,format=yuv420p" out.mp4
0

Вы можете создать анимированный GIF, используя команду "convert" из утилит ImageMagick:

convert -delay 500 -loop 0 *.jpg myimage.gif

Это объединит файлы jpg, показывающие каждые полсекунды каждый, в постоянном цикле.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .