Следующие шаги для написания видеофайла в openCV следующие:
CvVideoWriter *writer =cvCreateVideoWriter(fileName, Codec ID, frameRate, frameSize); // Create Video Writer
cvWriteFrame(writer, frame); // Write frame
cvReleaseVideoWriter(&writer); // Release video writer
Приведенный выше фрагмент кода пишет с фиксированной частотой кадров. Мне нужно написать видео с переменной частотой кадров. Подход, который я использовал ранее с libx264, включал запись индивидуальных временных меток для каждого кадра.
Итак, вопрос в том, как мне записать метки времени в фрейм в openCV — каков конкретный API? В целом, как мне создать видео с переменной частотой кадров?
Я не думаю, что это возможно сделать с OpenCV напрямую, без изменения кода, чтобы получить доступ изнутри. Вы должны будете использовать другую библиотеку, такую как libvlc, чтобы сделать это, используя ИМЕМ чтобы получить ваши сырые RGB-кадры в OpenCV в файл. Эта ссылка предоставляет пример использования imem с необработанными изображениями, загруженными из OpenCV. Вам просто нужно изменить параметры: sout, чтобы сохранить в файл, который вы хотите, используя предпочитаемый кодек.
Других решений пока нет …