OpenCV мсек и кадр не совпадают

#java #opencv

#java #opencv

Вопрос:

Я работаю над видеофайлом 119,88 кадров в секунду, 1080P H.264. Я делаю резюме, чтобы узнать, был ли маркер виден в данном кадре или нет. Мне нужно найти время разности между последовательными «положительными» кадрами. Проблема в том, что currentVC.get(Videoio.CAP_PROP_POS_MSEC) не согласуется с currentVC.get(Videoio.CAP_PROP_POS_FRAME) вообще. Например, для 24510-го кадра:

pos-код фрейма OpenCV: 24510.416438356166

Временная метка OpenCV: 149105.03333333333

Общая частота кадров: 119.8801198804266

Общее количество кадров: 31775.8493150685

Отметка времени для последнего кадра: 193303

Итак

24510/31775 = прошло 77 процентов видеозаписи

149105 / (193301) = 77 процентов видео истекло.

Пока все хорошо, НО

31775 / 120 кадров в секунду * 1000 мс — это около 4 с половиной минут, а не 3:12 минуты, как предполагает окончательная временная метка.

Пожалуйста, дайте мне знать, каким должен быть наилучший способ определения времени моих кадров.

Комментарии:

1. (31775.8493150685 * 1000) / 193303 = 164.38363251 кадров в секунду, если я не ошибся.

2. Привет, Мика. Еще раз спасибо за вашу помощь! Означает ли это, что информация о FPS для видео неверна?

3. либо видео, либо интерпретация opencv, либо fps не являются постоянными. Вы сами записали видео?