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

标签 c++ opencv video ffmpeg mjpeg

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

我得到了错误:

enter image description here

手机使用的实际编解码器是 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/

相关文章:

c++ - 从目标文件生成dll文件

android - 各种光线下的阈值人脸图像

opencv - 在 Ubuntu 上卸载 OpenCV

video - YouTube数据API-如何获取刚上传的视频的URL?

java - Android 6.0 - 使用 PlaybackParams 设置视频速度

c++ - SFML:错误: ')' token 之前的预期主表达式

c++ - 使用模板在类中定义静态数组

opencv - Point3f的访问元素

HTML5 视频 Chrome - ffmpeg - mp4 在除 Chrome 之外的所有工作

C++应该所有成员变量都使用访问器和增变器