Смотрите Создание видео слайд-шоу из изображений - FFmpeg
Если ваше видео не показывает кадры правильно. Если вы столкнулись с проблемами, такими как первое изображение пропускается или показывается только для одного кадра, тогда используйте видеофильтр fps вместо -r для выходной частоты кадров.
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
В качестве альтернативы видеофильтр формата можно добавить в цепочку фильтров, чтобы заменить -pix_fmt yuv420p на «fps = 25, format = yuv420p» . Преимущество этого метода в том, что вы можете контролировать, какой фильтр идет первым
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
Я тестировал ниже параметров, у меня это работало
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4
ниже параметры также работают, но он всегда пропускает первое изображение
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4
создание видео из изображений, размещенных в разных папках
Сначала добавьте пути к изображениям в imagepaths.txt, как показано ниже.
# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate
file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'
Пример использования следующим образом;
"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"
-safe 0 параметр предотвращает небезопасную ошибку имени файла
Ссылки по теме
FFmpeg делает видео из изображений, помещенных в разные папки
FFMPEG Промежуточное руководство / последовательность изображений
Конкатенация - FFmpeg
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
казалось, сработала, но в итоге вылилось в видео, которое не удалось прочитать ни одному плееру (в Ubuntu). VNC сказал: «Атом moov не найден». Попытка исправить этоqt-faststart
вызвала ошибку «последний атом в файле не был атомом moov»-pattern_type glob
Этот отличный вариант облегчает выбор изображений во многих случаях.
Слайд-шоу видео с одним изображением в секунду
Добавьте немного музыки к нему, обрезайте, когда, по-видимому, более длинный звук, когда изображения заканчиваются:
Вот две демонстрации на YouTube:
Станьте хиппи и используйте незащищенный от видео формат Theora :
Ваши изображения, конечно, должны быть отсортированы в алфавитном порядке, как правило:
и так далее.
Сначала я бы позаботился о том, чтобы все используемые изображения имели одинаковое соотношение сторон, возможно, предварительно обрезав их с помощью nomacs
imagemagick
или так, чтобы ffmpeg не пришлось принимать трудные решения. В частности, ширина должна делиться на 2, в противном случае преобразование завершается неудачно: «ширина не делится на 2».Нормальная скорость видео с одним изображением на кадр при 30 кадрах в секунду
Вот как это выглядит:
GIF, созданный с помощью: /ubuntu/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574
Добавьте немного аудио к нему:
Результат: https://www.youtube.com/watch?v=HG7c7lldhM4
Это тестовые материалы, которые я использовал:
Изображения, созданные с помощью: Как использовать GLUT / OpenGL для рендеринга в файл?
Приятно наблюдать, насколько видео сжимает последовательность изображений лучше, чем ZIP, поскольку оно может сжимать кадры с помощью специализированных алгоритмов:
opengl-rotating-triangle.mp4
: 340Kopengl-rotating-triangle.zip
: 7.3MКонвертируйте один музыкальный файл в видео с фиксированным изображением для загрузки на YouTube
Ответ на: /superuser/700419/how-to-convert-mp3-to-youtube-allowed-video-format/1472572#1472572
Полная реалистичная демонстрация слайд-шоу шаг за шагом
Создание слайд-шоу представляет собой нечто большее, чем просто запуск одной команды ffmpeg, поэтому здесь приведен более интересный подробный пример, вдохновленный этой временной шкалой .
Получите входные данные:
Теперь мы кратко рассмотрим все размеры изображений, чтобы определить окончательное соотношение сторон:
какие выводы:
поэтому классическое соотношение сторон 480p (640x480 == 4/3) кажется подходящим.
Выполните одно преобразование с минимальным изменением размера, чтобы сделать ширину равномерной (TODO автоматизирует для любой ширины, здесь я просто вручную посмотрел на
identify
вывод и уменьшил ширину и высоту на единицу):Это дает ужасный результат, потому что, как видно из:
ffmpeg просто берет размер первого изображения, 556x494, а затем преобразует все остальные изображения в этот точный размер, нарушая их соотношение сторон.
Теперь давайте автоматически конвертируем изображения в целевое соотношение сторон 480p, обрезая их в соответствии с ImageMagick: как минимально обрезать изображение до определенного соотношения сторон?
Так что теперь соотношение сторон хорошее, но неизбежно нужно было кое-что подрезать, что бы вырезать интересные части изображений.
Другой вариант заключается в том, чтобы заполнить черным фоном, чтобы иметь такое же соотношение сторон, как показано на рисунке: изменить размер, чтобы поместиться в рамку, и установить фон на черный в «пустой» части.
Тем не менее, в общем, в идеале вы сможете выбирать изображения с одинаковыми или похожими пропорциями, чтобы избежать этих проблем.
О параметрах CLI
Однако обратите внимание, что, несмотря на название,
-glob
это не так широко, как шаблоны оболочки Glob, например:-i '*'
fails: https://trac.ffmpeg.org/ticket/3620 (очевидно, потому что тип файла выводится из расширения).-r 30
делает-framerate 1
видео 30 FPS для преодоления ошибок в проигрывателях, таких как VLC для низких частот кадров: VLC останавливается для видео 1 FPS, созданного из изображений с ffmpeg. Поэтому он повторяет каждый кадр 30 раз, чтобы сохранить желаемый эффект 1 изображение в секунду.Следующие шаги
Вы также хотите:
отрежьте ту часть аудио, которая вам нужна, прежде чем присоединиться к ней: обрезка видео по времени начала и окончания с помощью ffmpeg
TODO: научитесь вырезать и объединять несколько аудио файлов в видео без промежуточных файлов, я уверен, что это возможно:
Проверено на
ffmpeg 3.4.4, vlc 3.0.3, Ubuntu 18.04.
Библиография
источник
'
в именах входных и выходных файлов. В противном случае он не найдет файлы.ffmpeg-static
не реализует glob. (Pattern type 'glob' was selected but globbing is not supported by this libavformat build
)-pix_fmt
вызвалTrailing options were found on the commandline.
ошибкуffmpeg -framerate 1 -pattern_type glob -i '*.png' -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
на Ubuntun 19.10 ffmpeg 4.1.4 только сейчас, какая у вас версия и точная команда?Простая версия из Документов
Особенно хорошо работает с изображениями Google Earth Studio :
источник
%3d
или%03d
?cat *.png | ffmpeg -f image2pipe -i - output.mp4
из вики
источник