ffmpeg запись timelapse камера v4l2

Как я могу указать ffmpeg (v .: 3.4.5) записывать только один кадр в минуту с моей видеокамеры в / dev / video0 и копировать его в новый файл с частотой 30 кадров в секунду? Целью является замедленное видео продолжительностью несколько месяцев и запись только одного кадра в минуту в выходное видео для экономии места и вычислительной мощности вместо простого захвата камеры со скоростью 30 кадров в секунду, а затем предварительной обработки огромного видеофайла для ускорения ...

Камера обеспечивает поток 1920x1080 30 кадров в секунду с параметром «mjpeg», выбранным в командной строке. Я хотел бы сохранить необработанные кадры и просто скопировать их в выходной файл. Я пробовал эту команду, чтобы получить 1 кадр / с на выходе на 30 кадр / с, но это, похоже, не работает:

ffmpeg -framerate 1 -input_format mjpeg -i /dev/video0 -r 30 -c:v copy -an out.mp4

[video4linux2,v4l2 @ 0x55ece63ac360] The driver changed the time per frame from 1/1 to 1/30
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, start: 37064.594605, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 1920x1080, 30 fps, 30 tbr, 1000k tbn, 1000k tbc

Но это не работает.


person Paul G.    schedule 20.03.2019    source источник


Ответы (1)


Думаю, это может быть решением. Сохраните входную частоту кадров как есть, но вместо этого установите скорость вывода равную одному кадру в минуту и ​​выводите изображения из потока, чтобы позже я мог объединить их через ffmpeg с желаемой целевой частотой кадров:

ffmpeg -input_format mjpeg -i /dev/video0 -r 1/60 out%3d.jpeg
person Paul G.    schedule 21.03.2019