From 04d5d4c25290cd0526f6c707fcda7d79486c6518 Mon Sep 17 00:00:00 2001 From: cbwu <504-wuchengbo@htsdfp.com> Date: Sat, 14 Sep 2024 17:42:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=85=89=E7=94=B5=E5=90=8A=E8=88=B1?= =?UTF-8?q?=E6=8B=89=E6=B5=81=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/GDDC/gddcSet.cpp | 66 ++++++++++++------------------ Src/GDDC/gddcdlg.cpp | 24 ++++++----- Src/ModelCamera/modelcameradlg.cpp | 4 +- Src/Video/cffmpeg_decode.cpp | 19 +++++---- 4 files changed, 51 insertions(+), 62 deletions(-) diff --git a/Src/GDDC/gddcSet.cpp b/Src/GDDC/gddcSet.cpp index d935778..2f2fe8e 100644 --- a/Src/GDDC/gddcSet.cpp +++ b/Src/GDDC/gddcSet.cpp @@ -158,10 +158,10 @@ void GDDCSet::on_pushButton_pushURL_clicked() { saveDataToLocalIni(); if (ui->pushButton_pushURL->text() == "推送") { emit SignalStartConnect(6); - //ui->pushButton_pushURL->setText("停止推送"); + // ui->pushButton_pushURL->setText("停止推送"); } else { emit SignalStopConnect(6); - //ui->pushButton_pushURL->setText("推送"); + // ui->pushButton_pushURL->setText("推送"); } } @@ -208,11 +208,11 @@ void GDDCSet::saveDataToLocalIni() { ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "播放URL", inBuf, strSysIniName); - // m_playURL2 = ui->lineEdit_playURL2->text(); // ba = m_playURL2.toLocal8Bit(); // inBuf = ba.data(); - // ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", inBuf, + // ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", + // inBuf, // strSysIniName); m_pushURL = ui->lineEdit_pushURL->text(); @@ -239,49 +239,35 @@ void GDDCSet::saveDataToLocalIni() { // break; // } // } -QString GDDCSet::streamTypeToflowType(QString type) -{ - if(type == "RTSP") - { - return "TCP"; - } - else if(type == "RTMP") - { - return "UDP"; - } - else - return "TCP"; +QString GDDCSet::streamTypeToflowType(QString type) { + if (type == "RTSP") { + return "UDP"; + } else if (type == "RTMP") { + return "TCP"; + } else + return "TCP"; } -QString GDDCSet::flowTypeTostreamType(QString type) -{ - if(type == "TCP") - { - return "RTSP"; - } - else if(type == "UDP") - { - return "RTMP"; - } - else - return "RTSP"; +QString GDDCSet::flowTypeTostreamType(QString type) { + if (type == "TCP") { + return "RTMP"; + } else if (type == "UDP") { + return "RTSP"; + } else + return "RTSP"; } -void GDDCSet::setConnectURL1Text(QString param) -{ - ui->pushButton_ConnectURL1->setText(param); +void GDDCSet::setConnectURL1Text(QString param) { + ui->pushButton_ConnectURL1->setText(param); } -void GDDCSet::setConnectURL2Text(QString param) -{ - ui->pushButton_ConnectURL1->setText(param); +void GDDCSet::setConnectURL2Text(QString param) { + ui->pushButton_ConnectURL1->setText(param); } -void GDDCSet::setNetCtrlText(QString param) -{ - ui->pushButton_NetCtrlConnect->setText(param); +void GDDCSet::setNetCtrlText(QString param) { + ui->pushButton_NetCtrlConnect->setText(param); } -void GDDCSet::setPushStreamText(QString param) -{ - ui->pushButton_pushURL->setText(param); +void GDDCSet::setPushStreamText(QString param) { + ui->pushButton_pushURL->setText(param); } diff --git a/Src/GDDC/gddcdlg.cpp b/Src/GDDC/gddcdlg.cpp index e0b9010..e7f7bd7 100644 --- a/Src/GDDC/gddcdlg.cpp +++ b/Src/GDDC/gddcdlg.cpp @@ -76,7 +76,7 @@ void GDDCdlg::initWindow() { m_DlgGDDCSet = new GDDCSet(this); m_DlgGDDCSet->setWindowFlags(Qt::Dialog); - m_DlgGDDCSet->setWindowModality(Qt::WindowModal);//设置为模态对话框 + m_DlgGDDCSet->setWindowModality(Qt::WindowModal); // 设置为模态对话框 m_GDDCCmdDlg = new GDDCCmdDlg(this); m_GDDCStateDlg = new GDDCStateInfo(this); ui->pushButShowStatePage->setIcon(QIcon(":/res/right.png")); @@ -341,7 +341,7 @@ void GDDCdlg::resizeUI() { // 定时器处理 void GDDCdlg::GDDCControlTimeOut() { - if (m_GDDCCmdDlg->sendTimes > 0) { // 优先发送次数指令 + if (m_GDDCCmdDlg->sendTimes > 0) { // 优先发送次数指令 m_GDDCCmdDlg->sendTimes -= 1; // UDP控制 @@ -357,7 +357,7 @@ void GDDCdlg::GDDCControlTimeOut() { if (m_GDDCCmdDlg->sendTimes == 0) { m_GDDCCmdDlg->clearTJDCCmdBuffer(); } - } else { // 发送常发帧或长按指令 + } else { // 发送常发帧或长按指令 m_GDDCCmdDlg->UpdateDataTJDC(); // UDP控制 if (connectFlag[3]) { @@ -379,6 +379,7 @@ void GDDCdlg::startConnectURL1() { // 开始拉流 ui->WgtffmpegVideo->m_flowType = m_DlgGDDCSet->m_FlowType; + // ui->WgtffmpegVideo->setPushStreamIP(m_DlgGDDCSet->m_pushURL); ui->WgtffmpegVideo->play(m_DlgGDDCSet->m_playURL1); } } @@ -472,7 +473,8 @@ void GDDCdlg::startPushURL() { // //方式1:命令行推流 // process = new QProcess(); - // connect(process, &QProcess::readyReadStandardOutput, this, [=]() mutable { + // connect(process, &QProcess::readyReadStandardOutput, this, [=]() mutable + // { // QString Output = process->readAllStandardOutput(); // qDebug() << "Output:" << Output; // }); @@ -482,14 +484,16 @@ void GDDCdlg::startPushURL() { // }); // // process->start("cmd",QStringList()<<"/c"<<"ffmpeg -i - // // rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid -c copy -f flv + // // rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid -c copy -f + // flv // // rtmp://182.92.130.23/app/test"); // QStringList m_cmd; // QString str; // // str = "ffmpeg -i " + m_DlgGDDCSet->m_playURL1 + " -c copy -f flv " + // // m_DlgGDDCSet->m_pushURL; - // str = "ffmpeg -rtsp_transport tcp -i " + m_DlgGDDCSet->m_playURL1 + " -c:v libx264 -c:a copy -f flv " + + // str = "ffmpeg -rtsp_transport tcp -i " + m_DlgGDDCSet->m_playURL1 + " + // -c:v libx264 -c:a copy -f flv " + // m_DlgGDDCSet->m_pushURL; // m_cmd << "/c" << str; // process->start("cmd", m_cmd); @@ -497,9 +501,8 @@ void GDDCdlg::startPushURL() { // //方式2:代码推流 // if(!connectFlag[0]) // { - // QMessageBox::information(NULL, tr("提示"), "请先开始连接", QMessageBox::Ok); - // m_DlgGDDCSet->setPushStreamText("推送"); - // return; + // QMessageBox::information(NULL, tr("提示"), "请先开始连接", + // QMessageBox::Ok); m_DlgGDDCSet->setPushStreamText("推送"); return; // } ui->WgtffmpegVideo->setPushStreamIP(m_DlgGDDCSet->m_pushURL); m_DlgGDDCSet->setPushStreamText("停止推送"); @@ -535,8 +538,7 @@ void GDDCdlg::stopPushURL() { // } // } - - //方式2:代码推流 + // 方式2:代码推流 ui->WgtffmpegVideo->setPushStreamIP(""); m_DlgGDDCSet->setPushStreamText("推送"); diff --git a/Src/ModelCamera/modelcameradlg.cpp b/Src/ModelCamera/modelcameradlg.cpp index c4ae139..d3bb07d 100644 --- a/Src/ModelCamera/modelcameradlg.cpp +++ b/Src/ModelCamera/modelcameradlg.cpp @@ -166,8 +166,8 @@ void ModelCameraDlg::on_pushButton_5_clicked() { QString str = ui->pushButton_5->text(); if (str == "播放视频") { QString ip = ui->videoIPLineEdit->text(); - ui->cameraVideoWidget->setPushStreamIP( - QStringLiteral("rtmp://182.92.130.23/app/stream999")); + // ui->cameraVideoWidget->setPushStreamIP( + // QStringLiteral("rtmp://182.92.130.23/app/stream999")); ui->cameraVideoWidget->play(ip); ui->pushButton_5->setText("暂停播放"); } else { diff --git a/Src/Video/cffmpeg_decode.cpp b/Src/Video/cffmpeg_decode.cpp index 1b80d58..7665371 100644 --- a/Src/Video/cffmpeg_decode.cpp +++ b/Src/Video/cffmpeg_decode.cpp @@ -36,13 +36,17 @@ bool Cffmpeg_decode::open_input_file() { //========================解码============================ AVDictionary *avdic = NULL; // 设置缓存大小,1080p可将值调大 - av_dict_set(&avdic, "buffer_size", "2048000", 0); + av_dict_set(&avdic, "buffer_size", "4096000", 0); // 以udp方式打开,如果以tcp方式打开将udp替换为tcp - av_dict_set(&avdic, "rtsp_transport", m_rtsp_transport.toUtf8().data(), 0); + if (m_rtsp_transport == "tcp") + av_dict_set(&avdic, "rtsp_transport", "tcp", 0); + else + av_dict_set(&avdic, "rtsp_transport", "udp", 0); + // 设置超时断开连接时间,单位微秒//listen_timeout // av_dict_set(&avdic, "listen_timeout", "200000", 0); - av_dict_set(&avdic, "stimeout", "200000", 0); - av_dict_set(&avdic, "max_delay", "3", 0); // 设置最大时延 + av_dict_set(&avdic, "stimeout", "6000000", 0); + av_dict_set(&avdic, "max_delay", "300000", 0); // 设置最大时延 av_dict_set(&avdic, "tune", "zerolatency", 0); av_dict_set(&avdic, "preset", "ultrafast", 0); @@ -204,7 +208,7 @@ void Cffmpeg_decode::run() { decoderCtx->height, // QImage::Format_RGB32); emit sendQImage(img); - QThread::msleep(28); + // QThread::msleep(28); } } av_packet_unref(inputPacket); @@ -334,7 +338,4 @@ void Cffmpeg_decode::saveDone() { } } -void Cffmpeg_decode::setFlowType(QString param) -{ - m_rtsp_transport = param; -} +void Cffmpeg_decode::setFlowType(QString param) { m_rtsp_transport = param; }