【发布时间】:2018-05-02 07:49:49
【问题描述】:
我正在尝试在 OpenCV 版本 3.1、Windows x64 中使用 OpenCV VideoCapture 类打开视频流。在我的树莓派上,我正在运行 mjpg_streamer,我可以通过 http://192.168.1.245:8080/?action=stream 看到输出,但是当我尝试在 OpenCV 中打开视频流时,它无法打开流。
这是我用来调试的代码,显然也适用于遇到连接问题的其他人。
#include <opencv2\core.hpp>
#include <opencv2\videoio.hpp>
#include <string>
#include <iostream>
using namespace std;
int main()
{
cv::VideoCapture vcap;
cv::Mat raw_image;
const string videoStreamAddress = "http://192.168.1.245:8080/?action=stream";
if (!vcap.open(videoStreamAddress))
{
cout << "Error opening video stream" << endl;
system("pause");
return -1;
}
cout << "Stream opened" << endl;
system("pause");
return 0;
}
网上,有人说OpenCV必须在链接中有视频扩展。我曾尝试使用其他人正在使用的扩展技巧,例如 http://192.168.1.245:8080/?action=stream?dummy=param.mjpg、http://192.168.1.245:8080/?action=stream&type=.mjpg、&channel=0&.mjpg 和 &type=.mjpeg,但这不起作用。另外,我在 cmake 中启用了 ffmpeg 并用它构建。似乎在这一点上它适用于其他人,并且似乎没有关于该主题的任何其他内容。有什么办法解决这个问题?
【问题讨论】:
-
“等等!”是我投反对票的原因 - 不是因为有现有的工作。所以,您说您正在调试这段代码,但到目前为止,您实际上并没有展示调试研究所显示的大部分内容。
-
@MarcusMüller 知道了,我会尝试添加更多。
-
你能用 VLC 播放流吗?
-
@Micka 是的,我可以使用 VLC 播放流,使用 192.168.1.245:8080/?action=stream。
-
这可能意味着流不满足 mjpg 流标准,而是流完整的 jpg 标头。不确定这是否是opencv的问题。您是否尝试输入 jpg 而不是 mjpg?有图片链接吗?即使第一次捕获尝试失败,您能否尝试继续捕获?