Видеофайлы и OpenCV

Я работал над захватом с IP-камеры и сохранением потока в виде видео. Теперь код прост, я сделал видеорайтер и сохраняю видео. Я использую стандартный контейнер avi для видео.

Когда мы определяем видеозапись, мы также должны определить кодек, который мы должны использовать при сохранении видео. Теперь документ здесь указывает список кодеков следующим образом:

CV_FOURCC('P','I','M','1')    = MPEG-1 codec
CV_FOURCC('M','J','P','G')    = motion-jpeg codec (does not work well)
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

Но при их использовании создаваемый видеофайл был неправильным. Его размер был равен 0. Поэтому при дальнейшей проверке я обнаружил, что кодеки должны быть установлены в системе, и версия opencv также должна быть совместима с кодеками. Кроме того, кодеки, которые можно применять, зависят от используемой ОС.

Моя ОС — Windows 7, а версия OpenCV — 2.4.6.

Вопрос: есть ли документ или веб-страница, в которой указаны кодеки, которые можно использовать с каждой версией OpenCV, а также указаны сведения об ОС? Если он существует, то где я могу его найти?


person praxmon    schedule 07.03.2014    source источник


Ответы (1)


Эта страница объясняет, как это работает:

Более того, если вы передадите аргумент минус один, во время выполнения появится окно, содержащее все кодеки, установленные в вашей системе, и вас попросят выбрать тот, который вы хотите использовать:

outputVideo.open(NAME, -1, inputVideo.get(CAP_PROP_FPS), S, true);

введите здесь описание изображения

person Sam Felix    schedule 07.03.2014
comment
Итак, как мне добавить кодеки в мою систему? Я имею в виду, что хочу использовать H.264, но его нет в моей системе. Что я делаю? - person praxmon; 07.03.2014
comment
Для x264, который реализует H.264, вы можете перейти сюда: sourceforge.net/projects/x264vfw - person Sam Felix; 07.03.2014
comment
Хорошо, теперь я получаю его в опциях, но как мне применить его с помощью опции CV_FOURCC? - person praxmon; 07.03.2014
comment
Вы пробовали CV_FOURCC('X','2','6','4')? - person Sam Felix; 07.03.2014
comment
О, да! Сделанный! Спасибо! - person praxmon; 07.03.2014