Qt Stream 网络摄像机视频
Qt Stream IP Camera Video
我正在尝试使用 Qt 多媒体 (Qt 5) 从 IP 摄像机流式传输视频。
可以在此处找到类似的问题:Play a Live video Stream using Qt 但我尽量避免使用其他库,例如 LibVLC。
我设法显示本地存储文件中的视频,但无法显示来自 IP 摄像机的流。
这是我的代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMediaPlayer>
#include <qvideowidget.h>
#include <QVideoWidget>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this-> resize(1000,1000);
QMediaPlayer *mp = new QMediaPlayer(0,0);
QMediaContent *mc = new QMediaContent(QUrl("http://96.10.1.168/mjpg/video.mjpg"));
//QMediaContent *mc = new QMediaContent(QUrl::fromLocalFile("/Users/userName/Desktop/marsUni.mp4"));
mp->setMedia(*mc);
QVideoWidget *vw = new QVideoWidget(this);
vw->setMaximumSize(704, 576);
vw->setMinimumSize(704, 576);
mp->setVideoOutput(vw);
this->setCentralWidget(vw);
vw->show();
mp->play();
}
MainWindow::~MainWindow()
{
delete ui;
}
如果我取消注释包含 QUrl::fromLocalFile 的行,我可以显示本地文件。如果我在 VLC 中打开指向 http://96.10.1.168/mjpg/video.mjpg 的网络连接,我可以显示相机流。
我在 Mac OS 10.9.
为什么我无法从网络摄像机流式传输视频?
任何意见或调试建议将不胜感激。
您需要使用 QNetworkRequest 构造函数来访问 HTTP 资源。
这方面的规范在 QMediaContent 构造函数的文档中:
QMediaContent::QMediaContent(const QNetworkRequest & request)
Constructs a media content with request providing a reference to the
content.
This constructor can be used to reference media content via network
protocols such as HTTP. This may include additional information
required to obtain the resource, such as Cookies or HTTP headers.
我正在尝试使用 Qt 多媒体 (Qt 5) 从 IP 摄像机流式传输视频。 可以在此处找到类似的问题:Play a Live video Stream using Qt 但我尽量避免使用其他库,例如 LibVLC。 我设法显示本地存储文件中的视频,但无法显示来自 IP 摄像机的流。
这是我的代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMediaPlayer>
#include <qvideowidget.h>
#include <QVideoWidget>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this-> resize(1000,1000);
QMediaPlayer *mp = new QMediaPlayer(0,0);
QMediaContent *mc = new QMediaContent(QUrl("http://96.10.1.168/mjpg/video.mjpg"));
//QMediaContent *mc = new QMediaContent(QUrl::fromLocalFile("/Users/userName/Desktop/marsUni.mp4"));
mp->setMedia(*mc);
QVideoWidget *vw = new QVideoWidget(this);
vw->setMaximumSize(704, 576);
vw->setMinimumSize(704, 576);
mp->setVideoOutput(vw);
this->setCentralWidget(vw);
vw->show();
mp->play();
}
MainWindow::~MainWindow()
{
delete ui;
}
如果我取消注释包含 QUrl::fromLocalFile 的行,我可以显示本地文件。如果我在 VLC 中打开指向 http://96.10.1.168/mjpg/video.mjpg 的网络连接,我可以显示相机流。 我在 Mac OS 10.9.
为什么我无法从网络摄像机流式传输视频? 任何意见或调试建议将不胜感激。
您需要使用 QNetworkRequest 构造函数来访问 HTTP 资源。
这方面的规范在 QMediaContent 构造函数的文档中:
QMediaContent::QMediaContent(const QNetworkRequest & request)
Constructs a media content with request providing a reference to the content.
This constructor can be used to reference media content via network protocols such as HTTP. This may include additional information required to obtain the resource, such as Cookies or HTTP headers.