gpt4 book ai didi

c++ - Qt5从局域网获取mjpeg流

转载 作者:行者123 更新时间:2023-11-28 06:04:02 26 4
gpt4 key购买 nike

我想使用 QNetworkAccessManager 从指定的 URL 获取 mjpeg 流,但我失败了。

这是我的代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
webCam = new QNetworkAccessManager(this);
connect(webCam,SIGNAL(finished(QNetworkReply*)),this,SLOT(replySteamFinish(QNetworkReply*)));
QString cam = "http://192.168.1.1:8080/?action=stream";
QNetworkRequest req;
req.setUrl(cam);
webCam->get(req);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::replySteamFinish(QNetworkReply *reply)
{
if(reply->error() == QNetworkReply::NoError){
QByteArray data = reply->readAll();
qDebug() << data;
/*I just test whether receive the mjpeg stream data.*/
}
else{
qDebug() << reply->error();
}
}

我正在尝试接收 mjpeg 流数据,但是 qDebug() 没有工作,没有任何输出。当我在 chrome 中输入“http://192.168.1.1:8080/?action=stream”时,网络会流畅地显示 mjpeg 流。

我该如何解决? :)

最佳答案

最后,我用QTcpSocket解决了这个问题。

    #include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
tcpSocket = new QTcpSocket(this);
tcpSocket->connectToHost("192.168.1.1",8080);
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(tcpDataReceive()));

}

MainWindow::~MainWindow()
{
delete ui;
}


void MainWindow::tcpDataReceive()
{
QByteArray data = QByteArray::fromHex(tcpSocket->readAll());
qDebug() << data;
}

void MainWindow::on_pushButton_clicked()
{
tcpSocket->write("GET /?action=stream\r\n\r\n");
}

我认为 mjpeg 流无法触发 SIGNAL 完成,因为 mjpeg 数据一直在传输。所以,我选择使用 SIGNAL readyRead()。 :)

关于c++ - Qt5从局域网获取mjpeg流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32744425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com