ffmpeg получить метку времени кадра - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь записать видео с веб-камеры, используя ffmpeg. У меня есть веб-камера Logitech C922 Pro Stream. Это команда, которую я использую:

ffmpeg -f v4l2 -framerate 60 -video_size 1280x720 -input_format mjpeg -i /dev/video1 out.mp4

Мое приложение требует, чтобы я получал точную метку времени для каждого кадра. Хотя я мог использовать свои знания о частоте кадров и номере кадра, чтобы добавить требуемый интервал ко времени начала, я боюсь, что это может быть не совсем точно.

Во-первых, я заметил, что во время записи консоль, кажется, изначально отображает намного более высокий fps, чем тот, который я установил:

Press [q] to stop, [?] for help
frame=  177 fps= 85 q=-1.0 Lsize=     502kB time=00:00:02.91 bitrate=1410.8kbits/s dup=144 drop=0    

Кроме того, я думаю, что ffmpeg иногда пропускает кадры между ними.

Однако мои видео, похоже, имеют правильное количество кадров, поэтому я думаю, что отображаемое значение fps может относиться к скорости кодирования / декодирования. Я не уверен насчет удаления кадров.

Я был бы рад, если бы вы сообщили мне, что вы думаете, или предложили бы альтернативу, чтобы я мог точно поставить метки времени. Спасибо!


Изменить:

Я понял, что частота кадров соотносится с окружающим освещением, что может привести к высокой дублированности кадров. В настоящее время я записываю на Windows и установил частоту кадров в качестве приоритета в игровом программном обеспечении Logitech. Однако все еще есть случайное падение кадра или дублирование. Влияет ли это на отметку времени кадров? Или я могу экстраполировать с начала?

...