ffmpeg запись timelapse камеры v4l2 - PullRequest
0 голосов
/ 20 марта 2019

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

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

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

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

1 Ответ

0 голосов
/ 21 марта 2019

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

ffmpeg -input_format mjpeg -i /dev/video0 -r 1/60 out%3d.jpeg
...