2014-01-10 3 views
6

, например, мы работаем тест RTSP поток, как: «RTSP: //184.72.239.149/vod/mp4: BigBuckBunny_115k.mov» (она работает в момент публикации этого поста)OpenCV - как захватить RTSP видеопоток

Теперь я хочу поймать этот видеопоток в openCV (opencv 2.4.7/2.4.8) У меня мой код отлично работает в локальных файлах фильмов, но когда я пытаюсь захватить rtsp, я получаю сообщения вроде: «Не удалось прочитать файл фильма RTSP: //184.72.239.149/vod/mp4: BigBuckBunny_115k.mov»

Я пытался несколько различных способов, как:

CvCapture *camera = cvCreateFileCapture("rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov"); 
if (camera == NULL) { 
printf("video is null, aborting..."); 
return -1; 
} 
else{ 
printf("video ok"); 
} 

или:

cv::VideoCapture vcap; 
//open the video stream and make sure it's opened 
if(!vcap.open("rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov")) { 
    std::cout << "Error opening video stream or file" << std::endl; 
    return -1; 
} 

Любая идея?

-

Niedved

ответ

8

Следующий код работает для меня без каких-либо проблем. Если у вас есть имя пользователя и пароль для потока, не забудьте включить его в адрес URL.

cv::VideoCapture capture(url); 

if (!capture->isOpened()) { 
    //Error 
} 

cv::namedWindow("TEST", CV_WINDOW_AUTOSIZE); 

cv::Mat frame; 

while(m_enable) { 
    if (!capture->read(frame)) { 
     //Error 
    } 
    cv::imshow("TEST", frame); 

    cv::waitKey(30); 
} 
+0

Я добавил этот код видеозахвата и разоблачил апи, но это не работает –

+1

ли вы поставить DLL FFmpeg в ту же папку с исполняемым файлом? –

+0

где это взять? и где его поставить? Я пытаюсь настроить Android. В моем лог-cat я получаю следующую ошибку: CameraWrapperConnector :: connectToLib ERROR: не может dlopen библиотека обертки камеры 01-05 15: 25: 06.185: E/OpenCV :: camera (18562): Native_camera вернула ошибку открытия: 4 –

Смежные вопросы