我在装有 Android 的手机上使用应用程序 IPCamera 将视频图像从它的相机输出(共享)到 LAN。我可以在 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 代码可能是错误的?
最佳答案
在 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 和示例的一些技巧在这里 Code and tips and tricks
关于c++ - OpenCV 无法连接到视频流 - 缺少某些编解码器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35632174/