gpt4 book ai didi

Qt Stream 网络摄像机视频

转载 作者:行者123 更新时间:2023-12-05 04:15:51 25 4
gpt4 key购买 nike

我正在尝试使用 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.

http://doc.qt.io/qt-5/qmediacontent.html#QMediaContent-3

关于Qt Stream 网络摄像机视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494319/

25 4 0