| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #pragma once
- #include <QCheckBox>
- #include <QLayout>
- #include <QPushButton>
- #include <QTime>
- #include <QTimer>
- #include <QWidget>
- #include <QAction>
- #include <QMenu>
- #include "audio_widget.h"
- #include "qcombobox.h"
- #include "qstatusbar.h"
- #include "recorder/audio_recorder.h"
- #include "recorder/video_recorder.h"
- #include "ui/opengl_video_widget.h"
- #include "ui/settings_page.h"
- using namespace avrecorder::video;
- class AvRecorder : public QWidget
- {
- Q_OBJECT
- public:
- AvRecorder(QWidget* parent = nullptr);
- ~AvRecorder();
- bool start();
- QWidget* statusBar() const { return m_statusBar; }
- void setSettings(const SettingsPage::Param& param);
- public slots:
- void renderFrame();
- private:
- SettingsPage::Param m_settingsParam;
- void initStatusBarUi();
- void updateCaptureList();
- void startCapture(CaptureMethod method);
- void stopCapture();
- void startPreview();
- void dealCapture();
- void stopPreview();
- bool startStream(std::string_view path, std::string_view format);
- void stopStream();
- bool startSyncRecord(); // 开始同步录像
- void stopSyncRecord(); // 停止同步录像
- void initConnect();
- void showAudioDeviceMenu(); // 显示音频设备菜单
- void onMicrophoneDeviceSelected(); // 麦克风设备选择
- void onSpeakerDeviceSelected(); // 扬声器设备选择
- private:
- AudioRecorder m_audioRecorder;
- VideoRecorder m_videoRecorder;
- AvMuxer m_avMuxer;
- AvMuxer m_recordMuxer; // 添加用于同步录像的Muxer
- // VideoRender m_videoRender;
- OpenGLVideoWidget* m_glWidget;
- AudioWidget* m_microphoneWidget = nullptr;
- AudioWidget* m_speakerWidget = nullptr;
- QPushButton* m_recordBtn = nullptr;
- QPushButton* m_liveBtn = nullptr;
- QPushButton* m_settingsBtn = nullptr;
- QPushButton* m_audioDeviceBtn = nullptr; // 音频设备选择按钮
- QCheckBox* m_isDrawCursorBox = nullptr;
- QCheckBox* m_syncRecordBox = nullptr; // 添加同步录像的复选框
- QTimer* m_videoRenderTimer = nullptr;
- QTimer m_otherTimer;
- QComboBox* m_captureComboBox = nullptr;
- QPushButton* m_updateListBtn = nullptr;
- bool m_isRecord = false;
- bool m_isLive = false;
- bool m_isSyncRecord = false; // 是否同步录像
- QComboBox* m_captureMethodBox = nullptr;
- QLabel* m_captureStatusLabel = nullptr;
- QLabel* m_captureTimeLabel = nullptr;
- QLabel* m_fpsLabel = nullptr;
- QLabel* m_videoEncodeLabel = nullptr;
- QLabel* m_audioEncodeLabel = nullptr;
- QLabel* m_videolossRate = nullptr;
- QTime m_recordTime;
- bool m_isLocked = false;
- QStatusBar* m_statusBar = nullptr;
- void updateCaptureMethodBox(bool isMonitor);
- void onCaptureSourceChanged();
- };
|