zhuizhu 6 bulan lalu
induk
melakukan
75e17635ab
3 mengubah file dengan 30 tambahan dan 2 penghapusan
  1. 3 2
      MainPanel.h
  2. 25 0
      widgets/recorderwidget.cpp
  3. 2 0
      widgets/recorderwidget.h

+ 3 - 2
MainPanel.h

@@ -121,8 +121,9 @@ public slots:
      * @param roomId 房间ID,用于推流和拉流的标识
      * @param enableRecording 是否同时启用录制功能
      */
-    void startStreamingTest(const QString &roomId = "0198da3f-5900-78e3-8160-2b7a149cc772", bool enableRecording = false);
-    
+    void startStreamingTest(const QString &roomId = "0198da3f-5900-78e3-8160-2b7a149cc772",
+                            bool enableRecording = true);
+
     /**
      * @brief 停止推流拉流测试
      */

+ 25 - 0
widgets/recorderwidget.cpp

@@ -108,9 +108,13 @@ void RecorderWidget::initStatusBar()
     m_statusLabel = new QLabel("状态: 就绪", this);
     m_timeLabel = new QLabel("00:00:00", this);
     m_encoderLabel = new QLabel("编码器: 未选择", this);
+    m_vrbLabel = new QLabel("V丢0/积0", this);
+    m_arbLabel = new QLabel("A丢0/积0", this);
     
     m_statusBar->addWidget(m_statusLabel);
     m_statusBar->addPermanentWidget(m_encoderLabel);
+    m_statusBar->addPermanentWidget(m_vrbLabel);
+    m_statusBar->addPermanentWidget(m_arbLabel);
     m_statusBar->addPermanentWidget(m_timeLabel);
 }
 
@@ -354,6 +358,10 @@ bool RecorderWidget::startRecording()
         
         // 关闭预览
         recorder_set_preview_enabled(0);
+
+        // 重置环形缓冲区丢帧计数
+        recorder_reset_video_rb_dropped();
+        recorder_reset_audio_rb_dropped();
         
         // 开始录制
         result = recorder_start();
@@ -466,6 +474,10 @@ bool RecorderWidget::startStreaming()
         
         // 关闭预览
         recorder_set_preview_enabled(0);
+
+        // 重置环形缓冲区丢帧计数
+        recorder_reset_video_rb_dropped();
+        recorder_reset_audio_rb_dropped();
         
         // 开始推流
         result = recorder_start();
@@ -609,6 +621,19 @@ void RecorderWidget::updateStatus()
     } else {
         m_timeLabel->setText("00:00:00");
     }
+
+    // 更新环形缓冲区统计(仅在初始化后)
+    if (m_isInitialized) {
+        uint64_t vdrop = recorder_get_video_rb_dropped();
+        int vpend = recorder_get_video_rb_pending();
+        uint64_t adrop = recorder_get_audio_rb_dropped();
+        int apend = recorder_get_audio_rb_pending();
+        if (m_vrbLabel) m_vrbLabel->setText(QString("V丢%1/积%2").arg(vdrop).arg(vpend));
+        if (m_arbLabel) m_arbLabel->setText(QString("A丢%1/积%2").arg(adrop).arg(apend));
+    } else {
+        if (m_vrbLabel) m_vrbLabel->setText("V丢0/积0");
+        if (m_arbLabel) m_arbLabel->setText("A丢0/积0");
+    }
 }
 
 // 静态回调函数实现

+ 2 - 0
widgets/recorderwidget.h

@@ -122,6 +122,8 @@ private:
     QLabel* m_statusLabel = nullptr;
     QLabel* m_timeLabel = nullptr;
     QLabel* m_encoderLabel = nullptr;
+    QLabel* m_vrbLabel = nullptr;             // 新增:视频环形缓冲区统计
+    QLabel* m_arbLabel = nullptr;             // 新增:音频环形缓冲区统计
     
     // 定时器
     QTimer* m_previewTimer = nullptr;