OpenCV无法连接到视频流 - 缺少一些编解码器?

时间:2016-02-25 15:55:31

标签: c++ opencv video ffmpeg mjpeg

我在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;
}

我得到了错误:

enter image description here

手机使用的实际编解码器是 mjpeg (我在手机上的应用程序中读取)。我不知道OpenCV是否支持这个,但是关于移动应用程序是使用某种独特的编解码器,还是我的PC缺乏它,或者C ++ / OpenCV代码是错误的?

1 个答案:

答案 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

相关问题