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 处理后,视频从 PC 流式传输到 Android