Можно ли использовать ffmpeg
создание видео из набора последовательностей, где номер не начинается с нуля?
Например, у меня есть несколько изображений [test_100.jpg, test_101.jpg, test_102.jpg, ..., test_200.jpg], и я хочу преобразовать их в видео. Я попробовал следующую команду, но она не сработала (кажется, число должно начинаться с нуля):
ffmpeg -i test_% d.jpg -vcodec mpeg4 test.avi
Любой совет?
Ответы:
Нет необходимости переименовывать файлы, если использовать
-start_number
переключатель следующим образом:где
n
начало последовательности фотографий.Обратите внимание, это будет работать до тех пор, пока последовательность не будет прервана после запуска. Если есть пробелы, и вы хотите, чтобы все кадры были включены, то для их устранения может потребоваться перенумерация.
Есть некоторые другие переключатели, которые могут оказаться полезными.
Я использую следующую однострочную строку, чтобы получить более медленную частоту кадров, сжимать изображения и получать уменьшенное видео:
-r 3
Опция устанавливает частоту кадров результирующего видео 3 кадров в секунду , так что я могу видеть каждый еще в течение короткого периода времени.-s
Вариант перемасштабирует снимки в нужное разрешение управлять размером получаемого видео.(В оболочке Windows замените
-i Imgp%04d.jpg
на-i "Imgp%%04d.jpg"
. Кредит за это Майк Фицпатрик https://superuser.com/a/344178/153054 )источник
Вы можете использовать этот фрагмент кода ниже:
источник
Вы можете найти пример сценария в документации ffmpeg :
источник
cp
если связывание не работает, если ваша файловая система поддерживает его,cp --reflink=auto
вы достигнете гораздо лучшего использования скорости / пространства.Из документов ffmpeg:
Использование шаблона шара
ffmpeg также поддерживает глобирование в стиле bash (* обозначает любое количество любых символов).
Это полезно, если ваши изображения являются последовательными, но не обязательно в числовом последовательном порядке, как в предыдущих примерах.
Таким образом, пока ваши файлы отсортированы, использование
-pattern_type glob
переключателя должно работать для вас.источник
Насколько я знаю, вы не можете запустить последовательность в случайных числах (я не помню, нужно ли начинать ее с 0 или 1), плюс, она не может иметь пробелов, если это произойдет, ffmpeg будет считать, что последовательность окончена, и прекратите добавлять больше изображений.
Также, как указано в комментариях к моему ответу, помните, что вам нужно указать ширину вашего индекса. Подобно:
Изображение% 03d.jpg
И если вы используете индексный тип% 03d, вам нужно добавить имена файлов в 0, например:
image001.jpg image002.jpg image003.jpg
и т.п.
источник
Я согласен с Франциско, но в качестве обходного пути вы можете просто написать быстрый скрипт для перемещения или создать символические ссылки на файлы с порядковыми номерами, которые нужны ffmpeg. Затем сценарий может вызвать ffmpeg, а затем удалить ссылки или переместить файлы обратно в их исходные местоположения.
источник
уважать
источник
Я знаю, что это старый вопрос, но я наткнулся на него в Google, ища тот же ответ. Ни один из ответов здесь не удовлетворил меня полностью, поэтому я больше занимался поиском и чтением, и это команда, которую я придумал для своей собственной проблемы.
Причина, по которой я бы использовал такую команду ...
источник
-start_number
это все, что нужно.Я использовал кодировщик flv, так как мое видео собиралось во флеш-плеере (Jwplayer)
ffmpeg -i% d.jpg -vcodec flv test.flv
источник
Из документации кажется, что вы можете просто использовать *
Как примечание, для улучшения влияния на качество может быть важна скорость / fps (например, сначала указывается очень низкая / высокая частота кадров, а затем переходить от второго фильтра, который сделает замедленное видео нормальным?)
источник
В моем случае это было немного сложнее из-за чисел в файлах. Вот как выглядят мои изображения:
и вот команда, которую я использовал:
источник
Вы можете сделать это с
convert -morph
:Если вы хотите использовать
ffmpeg
, я использовалгде
10*PTS
ffmpeg указывает замедлить его в 10 раз. Вы также можете иметь дроби, чтобы ускорить его.источник
-pattern_type glob
конкретные примеры с аудиоЭта опция была упомянута по адресу: https://superuser.com/a/782520/128124, но вот несколько конкретных примеров ее использования, включая добавление аудио в выходное видео.
Слайд-шоу видео с одним изображением в секунду
Добавьте немного музыки к нему, обрежьте звук после окончания изображения:
Вот две демонстрации на YouTube:
Станьте хиппи и используйте незащищенный от видео формат Theora :
Ваши изображения, конечно, должны быть отсортированы в алфавитном порядке, как правило:
и так далее.
Смотрите также: http://unix.stackexchange.com/questions/68770/converting-png-frames-to-video-at-1-fps/339399#339399
Нормальная скорость видео с одним изображением на кадр при 30 кадрах в секунду
Вот как это выглядит:
GIF, созданный с помощью: https://askubuntu.com/questions/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574
Добавьте немного аудио к нему:
Результат: https://www.youtube.com/watch?v=HG7c7lldhM4
Конвертируйте один музыкальный файл в видео с фиксированным изображением для загрузки на YouTube
Ответ на: Как конвертировать MP3 в видео в формате YouTube?
Получить некоторые синтетические тестовые входные изображения
Вот тестовые изображения, которые я использовал в этом ответе:
Изображения, созданные с помощью: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292
Приятно наблюдать, насколько видео сжимает последовательность изображений лучше, чем ZIP, поскольку оно может сжимать кадры с помощью специализированных алгоритмов:
opengl-rotating-triangle.mp4
: 340Kopengl-rotating-triangle.zip
: 7,3 млнО параметрах CLI
Однако обратите внимание, что, несмотря на название,
-glob
это не так широко, как шаблоны оболочки Glob, например:-i '*'
fails: https://trac.ffmpeg.org/ticket/3620 (очевидно, потому что тип файла выводится из расширения).-r 30
делает-framerate 1
видео на 30 FPS, чтобы преодолеть ошибки в плеерах, таких как VLC, для низких частот: https://stackoverflow.com/questions/19267443/playback-issues-in-vlc-with-low-fps-video-from-images-using- ffmpeg / 41797724 # 41797724 Поэтому он повторяет каждый кадр 30 раз, чтобы сохранить желаемый эффект 1 изображение в секунду.Следующие шаги
Вы также хотите:
отрежьте немного аудио, чтобы соответствовать длине видео: https://stackoverflow.com/questions/18444194/cutting-the-videos-based-on-start-and-end-time-using-ffmpeg
добавить обрезанный звук: как объединить аудио и видео файл в ffmpeg
TODO: научитесь вырезать и объединять несколько аудио файлов в видео из командной строки:
Проверено на
ffmpeg 3.4.4, vlc 3.0.3, Ubuntu 18.04.
Библиография
источник