我正在尝试使用Qt multimedia(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上。
为什么我无法从IP摄像头流式传输视频? 任何意见或调试建议将不胜感激。
答案 0 :(得分:1)
您需要使用QNetworkRequest构造函数来访问HTTP资源。
此规范在QMediaContent构造函数的文档中:
QMediaContent :: QMediaContent(const QNetworkRequest&amp; request)
构造一个媒体内容,其中包含提供引用的请求 内容。
此构造函数可用于通过网络引用媒体内容 HTTP等协议。这可能包括其他信息 需要获取资源,例如Cookie或HTTP标头。