OpenCV - 如何捕获 RTSP 视频流

10
例如,我们有一个有效的RTSP流测试链接:"rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov"(在发布本篇文章时可以使用)。
现在我想在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

1个回答

11

以下代码对我来说没有任何问题。如果您有流的用户名和密码,请不要忘记将其包含在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);
}

我已经将这段代码添加到VideoCapture并公开了API,但是它没有起作用。 - Shridutt Kothari
1
你把 ffmpeg 的 DLL 文件放到可执行文件所在的同一个文件夹了吗? - Murat Şeker
1
在哪里获取它?放在哪里?我正在尝试在Android上进行。在我的日志中,我收到了以下错误-CameraWrapperConnector :: connectToLib ERROR:无法dlopen相机包装库 01-05 15:25:06.185:E / OpenCV :: camera(18562):Native_camera返回打开错误:4 - Shridutt Kothari
抱歉,我对Android一窍不通。 - Murat Şeker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接