OpenCV - 如何捕获 rtsp 视频流

Posted

技术标签:

【中文标题】OpenCV - 如何捕获 rtsp 视频流【英文标题】:OpenCV - how to capture rtsp video stream 【发布时间】:2014-01-29 06:03:15 【问题描述】:

例如,我们有有效的 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;

有什么想法吗?

--

尼德维德

【问题讨论】:

【参考方案1】:

以下代码对我有用,没有任何问题。如果您有流的用户名和密码,请不要忘记将其包含在 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,但这不起作用 您是否将 ffmpeg dll 与您的可执行文件放在同一个文件夹中? 从哪里获得?放在哪里?我在尝试安卓。在我的日志猫中,我收到以下错误-CameraWrapperConnector::connectToLib ERROR: cannot dlopen camera wrapper library 01-05 15:25:06.185: E/OpenCV::camera(18562): Native_camera 返回打开错误:4 对不起,我对安卓一无所知

以上是关于OpenCV - 如何捕获 rtsp 视频流的主要内容,如果未能解决你的问题,请参考以下文章

当我使用 rtsp 摄像头流时,opencv 视频捕获滞后

OpenCV 捕获多个 RTSP 流 - Python

使用 RTSP 从 Opencv 处理后,视频从 PC 流式传输到 Android

十分钟搞定——基于OpenCV+Flask的网络实时读取RTSP视频流

rtsp 流捕获

python opencv读取rtsp视频崩溃卡死 高延迟 内存泄漏解决方法