新增大窗口播放视频按键,窗口大小根据解码视频分辨率自动调整,关掉大窗口回到原来位置播放视频

This commit is contained in:
2024-09-05 09:25:01 +08:00
parent 4bd2d7eab5
commit 9a49eab4af
13 changed files with 2228 additions and 92 deletions

View File

@@ -20,8 +20,7 @@ DataHandler::DataHandler(QLabel* videoLabel, QLineEdit* VideoResolutionEdit, QSi
backBoardFuncConfig(backBoardFuncConfig), backBoardDevInfoJson(backBoardDevInfoJson),
backBoardUuidJson(backBoardUuidJson), getPicJson(getPicJson), getVideoJson(getVideoJson),
buffer(new QByteArray()), picBuffer(new QByteArray()),
ffmpegDecoder(new FFmpegDecoder()) // 初始化FFmpeg解码器
ffmpegDecoder(new FFmpegDecoder()) // 初始化FFmpeg解码器
{
ffmpegDecoder->initialize(); // 初始化解码器
clearAllRecvData();
@@ -46,7 +45,6 @@ DataHandler::~DataHandler()
void DataHandler::handleOpenFocusWindow(int itemIndex)
{
if (ffmpegDecoder) {
qDebug() << "------- handleOpenFocusWindow";
ffmpegDecoder->processVideo(itemIndex); // 调用 FFmpegDecoder 的处理函数
}
}
@@ -77,7 +75,6 @@ void DataHandler::showVideo(const QString& client, const QByteArray& valData)
return;
}
}
if (!valData.isEmpty()) {
file.write(valData);
file.flush(); // 刷新文件缓冲区
@@ -111,9 +108,9 @@ void DataHandler::clearAllRecvData() {
}
// 处理接收到的数据
void DataHandler::handleData(const QString& client, const QByteArray& recvData, int msg_id,
int currentRecvItemIndex, int currentRecvFuncItemIndex,
const QString& itemData, const QString& funcItemData, const QJsonArray& jsonArray, int itemJsonIndex)
void DataHandler::handleData(const QString& client, const QByteArray& recvData, int msg_id,
int currentRecvItemIndex, int currentRecvFuncItemIndex, const QString& itemData,
const QString& funcItemData, const QJsonArray& jsonArray, int itemJsonIndex)
{
//qDebug() << "Data received from" << client << ":" << recvData;
#if 0
@@ -158,10 +155,8 @@ void DataHandler::handleData(const QString& client, const QByteArray& recvData,
//QByteArray data = buffer->mid(10, dataSize);
QString hexString = QString::fromUtf8(data.toHex().data());
QByteArray actual_data = hexStringToByteArray(hexString);
//qDebug() << "---Received hexString:" << hexString;
buffer->remove(0, totalSize); // 移除已处理的数据
if(msg_id != 0x0040 && msg_id != START_VIDEO && msg_id != GET_IMG) {
//if (msg_id != 0x0040) {
qDebug() << "--- msg_id:" << msg_id;
qDebug() << "--- clientLastMsgId.value(client, 0):" << clientLastMsgId.value(client, 0);
// 同一个client仅当 msg_id 不连续为 0x11/0x21 或第一次处理时才执行 emit statusUpdated
@@ -186,7 +181,6 @@ void DataHandler::handleData(const QString& client, const QByteArray& recvData,
}
}
void DataHandler::initializeMsgIdToCmdMap() {
msgIdToCmdMap[GET_FRONT_V851_VERSION] = "GET_FRONT_V851_VERSION";
msgIdToCmdMap[GET_FRONT_MCU_VERSION] = "GET_FRONT_MCU_VERSION";

View File

@@ -40,12 +40,11 @@ public:
QJsonArray backBoardDevInfoJson, QJsonArray backBoardUuidJson,
QJsonArray getPicJson, QJsonArray getVideoJson, QObject* parent = nullptr);
~DataHandler();
void handleOpenFocusWindow(int itemIndex);
public slots:
void handleData(const QString& client, const QByteArray& data, int msg_id, int currentRecvItemIndex,
int currentRecvFuncItemIndex, const QString& itemData, const QString& funcItemData,
const QJsonArray& jsonArray, int itemJsonIndex);
void handleOpenFocusWindow(int itemIndex);
signals:
void statusUpdated(const QString& clientAddress, int currentItemIndex, int currentFuncItemIndex,
bool success, const QString& currentItemLabel, const QString& currentFuncItemLabel,