Создать видео из набора JPEG

395
neildeadman

У меня есть камера видеонаблюдения, которая загружает изображения JPEG (.jpg) на FTP-сервер, когда обнаруживает движение. Кажется, мы получаем довольно много изображений, поэтому я хотел бы превратить их в видео для облегчения просмотра.

Я сделал несколько поисков в Google, но ничего не дает того, что я ожидаю увидеть. В папке, которую я использую, содержится более 2000 изображений с именем AyyMMddhhmmssff.jpg. Если мне нужно переименовать, я могу сделать это, так как я уже нахожу, что мне нужно, чтобы FFMPEG работал.

Я бы хотел, чтобы изображение в секунду, или, возможно, 2 в секунду, чтобы изображения легко просматривать при воспроизведении видео. Да, я знаю, что это приведет к 20 / 40мин + видео!

Я доволен решением для Windows, MacOS или Ubuntu! Я бы предпочел Windows (так как именно там находится FTP-сервер).

ImageMagick

convert *.jpg video.mpg 

Это звучало здорово, красиво и просто. Тем не менее, я попробовал на своем Mac (установленном через brew) и Ubuntu, и оба прервали производительность соответствующей системы и через 20 минут все еще не закончили. Мне пришлось перезагрузить Mac, так как я ничего не мог сделать!

FFMPEG

ffmpeg -y -r 6 -f image2 -s 1920x1080 -i <path>\%06d.jpg -vcodec libx264 -pix_fmt yuv420p <path>/video.mp4 

Я не эксперт, когда дело доходит до использования FFMPEG, но я использовал его для нескольких задач и обнаружил, что это отличная утилита для работы. Приведенная выше команда действительно производит видео, но изображения отображаются слишком быстро, удаляя точку видео. Я попытался настроить значения и могу получить это лучше, но не совсем то, что я после. Одна попытка (настройка -r 1IIRC) привела к созданию единого изображения для всего видео! Ясно, что я не понимаю различные аргументы в команде FFMPEG, хотя я смотрел на руководство!

2

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

2
Gyan

Если вы переименуете изображения в последовательную нумерацию, вы можете использовать

ffmpeg -y -framerate 1 -i <path>\%06d.jpg -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4 

Пронумерованный, как 000001.jpg, 000002.jpg, 000003.jpg... Обратите внимание, что существует ровно 6 символов каждого имя, которое удовлетворяет %06dпередается на FFmpeg.

Если вы не хотите переименовывать, то создайте текстовый файл формы,

file first.jpg file second.jpg file third.jpg ... file last.jpg 

а потом

ffmpeg -f concat -r 1 -i list.txt -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4 
Я уже переименовывал изображения в формате «yyyyMMdd_000001.jpg» и т. Д., Но когда я запускаю вашу команду, я получаю тот же результат, который я видел ранее с FFMPEG одного изображения на протяжении всего видео (41 минута). Будет ли это имя вызывать это или что-то еще ?! neildeadman 5 лет назад 0
Добавьте `-report` к вашему исполнению и вставьте или укажите ссылку на него в вашем Q. Gyan 5 лет назад 0
С таким количеством изображений журнал был слишком длинным для публикации в pastebin, поэтому я уменьшил количество обработанных изображений, результат тот же: https://pastebin.com/03CTErCu neildeadman 5 лет назад 0
В журнале нет ошибок; это как и ожидалось. Можете ли вы поделиться выходом? Gyan 5 лет назад 0
Вы имеете в виду фактическое видео? neildeadman 5 лет назад 0
Да. Это лучший способ проверить. Gyan 5 лет назад 0
Итак, я загрузил его, однако, когда я его просмотрел, он работал! Пробовал из файла на моем локальном HDD и до сих пор просто показывал одно изображение. Попробовал другой плеер и все заработало! Таким образом, это похоже на проблему с VLC, никогда бы не подумал, что VLC будет иметь проблемы! neildeadman 5 лет назад 0
В VLC была давняя ошибка с низкой частотой кадров. Исправлено несколько месяцев назад. Gyan 5 лет назад 0
Последняя версия VLC действительно решает проблему. Спасибо! neildeadman 5 лет назад 0

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