|
|
@@ -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");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 静态回调函数实现
|