Перейти к содержимому
Compvision.ru
Marrakech

openCV2.4+QT чтение потока h264 fullHD через RTSP

Recommended Posts

Всем добрый вечер!

Уже как 3 дня изучаю openCV2.4 и пытаюсь снять видео с IP камеры.

Пишу на QT под Windows. Поток видео представляет из себя H264 FullHD 30fps через протокол RTSP.

URL по которому доступен поток с камеры : rtsp://192.xxx.x.xxx/h264

Читаю данные с помощью данного кода:


{

    // allocate memory for an image

    IplImage *img;

    capture= cvCreateFileCapture("rtsp://192.xxx.x.xxx/h264");


    // create a window to display the images

    cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);

    // position the window

    cvMoveWindow("mainWin", 5, 5);

    while(1)

    {

     // retrieve the captured frame

     img=cvQueryFrame(capture);

     // show the image in the window

     cvShowImage("mainWin", img );

     // wait 33 ms for a key to be pressed

     c=cvWaitKey(33);

     // escape key terminates program

     if(c == 27)

     break;

    }

}

При чтении первые несколько кадров отображаются нормально, затем начинается отображение кадров с артефактами в половину кадра. Притом я проверял данный URL в VLC и все работает. Как мне понятно, cvCreateFileCapture() - это оболочка над функциями библиотеки ffmpeg, на которой написан VLC. Т.е. по логике вещей, если VLC читает и декодирует поток, то и openCV2.4 со встроенным ffmpeg должна справиться. Я решил проверить, читает ли вообще H264 из файла.
capture= cvCreateFileCapture("g://IronMan2 (2010) BluRay 1080p.mkv");

Из файла всё читает отлично и без артефактов.

Помогите решить проблему :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обычно помогает такое (?.расширение):

"rtsp://192.xxx.x.xxx/h264?.mkv"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

rtsp://192.ххх.х.ххх/h264?.mkv

не открывается ни openCV, ни VLC ((

если загружаю rtsp://192.xxx.x.xxx/h264,

то ffmpeg в отладочном окне выдаёт следующую ересь..

init done 

[NULL @ 0b47fa20] Interleaved RTP mode is not supported yet.error while decoding MB 43 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 43 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 66 44, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 38 42, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 63 39, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 4 28, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 32 40, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 78 20, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 25 44, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 51 39, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 21 30, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 42 40, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 36 27, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 19 28, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 46 15, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 52 39, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 35 30, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 49 40, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 39 13, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 43 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 37 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 38 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 38 41, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 44 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 36 41, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 18 44, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 55 39, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 28 29, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 41 40, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 28 14, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 48 41, bytestream (td)

[h264 @ 0ccd5be0] top block unavailable for requested intra mode at 79 0

[h264 @ 0ccd5be0] error while decoding MB 79 0, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 11 43, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 50 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 37 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 72 38, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 66 39, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 78 38, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 49 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 41 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 44 41, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 78 42, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 70 39, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 36 27, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 48 40, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 26 14, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 37 41, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 62 15, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 66 38, bytestream (td)

[h264 @ 0ccd5be0] illegal short term buffer state detected

[h264 @ 0cde1a20] error while decoding MB 7 37, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 68 27, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 75 2, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 54 35, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 53 27, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 79 1, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 68 34, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 78 2, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 62 28, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 22 40, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 68 3, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 31 29, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 28 43, bytestream (td)

[h264 @ 0cde1a20] mmco: unref short failure

[h264 @ 0cde1a20] illegal short term buffer state detected

[h264 @ 0ccd5be0] mmco: unref short failure

[h264 @ 0ccd5be0] illegal short term buffer state detected

[h264 @ 0ccd5be0] error while decoding MB 49 35, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 0 2, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 76 2, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 25 29, bytestream (td)

[h264 @ 0cde1a20] mmco: unref short failure

[h264 @ 0cde1a20] illegal short term buffer state detected

[h264 @ 0cde1a20] error while decoding MB 68 33, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 66 3, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 31 28, bytestream (td)

[h264 @ 0cde1a20] mmco: unref short failure

[h264 @ 0cde1a20] illegal short term buffer state detected

[h264 @ 0ccd5be0] error while decoding MB 58 4, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 77 17, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 34 14, bytestream (td)

[h264 @ 0cde1a20] mmco: unref short failure

[h264 @ 0cde1a20] illegal short term buffer state detected

[h264 @ 0cde1a20] error while decoding MB 53 17, bytestream (td)

[h264 @ 0ccd5be0] left block unavailable for requested intra mode at 0 34

[h264 @ 0ccd5be0] error while decoding MB 0 34, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 60 18, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 50 43, bytestream (td)

[h264 @ 0ccd5be0] mmco: unref short failure

[h264 @ 0ccd5be0] illegal short term buffer state detected

[h264 @ 0ccd5be0] error while decoding MB 6 18, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 66 18, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 13 1, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 51 19, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 77 1, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 11 28, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 0 38, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 73 2, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 29 30, bytestream (td)

[h264 @ 0ccd5be0] mmco: unref short failure

[h264 @ 0ccd5be0] illegal short term buffer state detected

[h264 @ 0ccd5be0] error while decoding MB 73 32, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 59 3, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 22 28, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 69 14, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 79 32, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 59 4, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 68 28, bytestream (td)

[h264 @ 0ccd5be0] illegal short term buffer state detected

[h264 @ 0cde1a20] illegal short term buffer state detected

[h264 @ 0ccd5be0] error while decoding MB 56 6, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 79 29, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 67 27, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 73 2, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 77 0, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 57 4, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 22 2, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 73 2, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 78 1, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 30 44, bytestream (td)

[h264 @ 0ccd5be0] mmco: unref short failure

[h264 @ 0ccd5be0] illegal short term buffer state detected

[h264 @ 0ccd5be0] error while decoding MB 79 0, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 79 27, bytestream (td)

[h264 @ 0cde1a20] mmco: unref short failure

[h264 @ 0cde1a20] illegal short term buffer state detected

[h264 @ 0cde1a20] error while decoding MB 72 28, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 74 2, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 78 2, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 63 27, bytestream (td)

[h264 @ 0cde1a20] error while decoding MB 64 28, bytestream (td)

[h264 @ 0ccd5be0] error while decoding MB 78 1, bytestream (td)
Если я убираю из цикла строку cvShowImage("mainWin", img ); то программа запускается, fffmpeg пишет
init

и больше никаких ошибок.

Внизу прикрепил файлы, имеющие артефакты

post-1570-0-92634700-1337929469_thumb.jp

post-1570-0-79706100-1337929485_thumb.jp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем привет. Проект был заброшен и вот опять началась работа в данном направлении.

Хотел бы отписать о небольших "продвижениях" в решении данной проблемы.

Наткнулся на блог разработчика http://workingwithcomputervision.blogspot.co.uk/2012/07/weve-finally-got-it-going-ill-get-onto.html

В нём он пишет, что достаточно добавить ?tcp в конце адреса и видео будет идти без артефактов.

Данная "приписка" заставляет работать ffmpeg -функции входящие в пакет openCV по tcp протоколу, вместо более производительного UDP. Всем известно что при tcp проверяется целостность каждого пакета. При udp есть какие-то проблемы с доставкой данных.. (надо разобраться)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Декодирование теперь идёт без артефактов, но очень медленно, такое ощущение, что до адреса доходит только каждый 3-ий кадр..а 2 теряются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сегодня буду пробовать привязывать vlc-qt к проекту. Попробую декодировать видео-поток с помощью библиотеку vlc.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Род Windows не писал, но недавно сам убил пол дня на поиск этого же ответа.

ОпенСВ, использует для этого ffmpeg, соответственно умеет, то, что и он.

Я делал так: находил ссылку на видео с камеры, обычно, это rtsp://admin:1234@[адрес-камеры] а дальше, строка у каждой модели своя. Если vlc откроет ссылку, то и opencv тоже. Я искал нугоем : модель камеры stream url

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×