У меня есть много пар видеофайлов, снятых двумя сетевыми камерами в комнате. Из-за использования полосы пропускания видеофайлы имеют переменную частоту кадров. Насколько я понимаю, если мы размечаем кадры на таймлайне, то это примерно так:
Я хочу синхронизировать эти два видео. Под синхронизацией я подразумеваю заполнение пробелов таким образом, чтобы для данного кадра в видео был соответствующий кадр в другом видео. В конце концов, я хочу, чтобы у двух было два таких видео:
Я подумал о преобразовании обоих видео в 25 кадров в секунду с помощью инструмента конвертера, хотя у меня будут избыточные пары кадров, которые будут синхронизированы. Однако у меня есть информация, связанная с каждым кадром для всех видео, я не смогу узнать связь после преобразования.
Я думаю, что мне нужно сделать это программно, чтобы я мог соответствующим образом сохранить информацию, связанную с каждым кадром.
До сих пор я пробовал OpenCV, VideoCapture
свойство CV_CAP_PROP_POS_MSEC
дает мне номер кадра, а не миллисекунду кадра. Даже если он дал мне правильные значения, VideoWriter
не поддерживает переменную частоту кадров. MATLAB отказывается читать мои видеофайлы, потому что не поддерживает кодек MJPEG (motion jpeg). Я смог прочитать номер кадра и соответствующую миллисекунду, используя pyglet в Python. Но это всего лишь декодер, мне все еще нечего писать в видеофайл типа «Это кадр №12, и это должно быть ровно 1,76 секунды видео».
Я ищу самый простой способ добиться этого, язык, инструмент не имеет значения. Решения на базе Windows приветствуются. Большое спасибо за ваши ответы.
PS. Я не возражаю против выходного формата, хотя я бы предпочел формат без потерь.