2014-01-10 383 views
6

例如,我们正在rtsp流测试工作如:“rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov”(它在发布此帖子的时刻起作用)OpenCV - 如何捕获rtsp视频流

现在我想在openCV中捕获这个视频流(opencv 2.4.7/2.4.8) 我的代码完美地处理本地电影文件,但是当我尝试捕获rtsp时,我得到的消息如下:“Could not读电影文件的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

下面的代码工作对我来说没有任何问题。如果您有该流的用户名和密码,请不要忘记将其包含在网址中。

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

我加入这个代码VideoCapture和显示的API,但是这是不工作 –

+1

你把ffmpeg的DLL到同一文件夹与你的可执行文件? –

+0

从哪里得到?并把它放在哪里?我尝试在Android上。在我的日志猫我得到以下错误 - CameraWrapperConnector :: connectToLib错误:无法dlopen相机包装库 01-05 15:25:06.185:E/OpenCV ::相机(18562):Native_camera返回打开错误:4 –