我在Android手机上使用应用程序 IPCamera ,将视频图像从其相机输出(共享)到局域网。我可以在PC浏览器上访问它 - 没关系。
但是,我想通过键入
使OpenCV从IP地址捕获此视频流VideoCapture cap("http://admin:admin@192.168.0.11:8081/?action=stream?dummy=param.mjpg");
while( cap.isOpened() )
{
Mat frame;
if ( ! cap.read(frame) )
break;
cout << "Connected!!";
imshow("lalala",frame);
int k = waitKey(10);
if ( k==27 )
break;
}
我得到了错误:
手机使用的实际编解码器是 mjpeg (我在手机上的应用程序中读取)。我不知道OpenCV是否支持这个,但是关于移动应用程序是使用某种独特的编解码器,还是我的PC缺乏它,或者C ++ / OpenCV代码是错误的?
答案 0 :(得分:1)
在PC上,opencv可以从您的移动设备中捕获您的视频流。 喜欢。您正在使用正确的连接字符串,就像我的情况一样使用rtsp流。
VideoCapture capture("rtsp://USER:PASS@xxx.xxx.xxx.xxx/axis-media/media.amp?camera=2");
可能你没有使用FFMPEG。您需要重新安装Opencv。首先,您需要安装FFMPEG和Opencv。 在opencv 3.0.0和3.1中尝试添加
#include <opencv2\videoio.hpp>
#include <opencv2\imgcodecs.hpp>
一些提示如何在linux debian上用C ++安装ffmpeg和sample这里Code and tips and tricks