玉兔远程控制 0.1.0-bate5
载入中...
搜索中...
未找到
MultimediaRecord.h
1// Author: Kang Lin <kl222@126.com>
2
3#pragma once
4
5#include <QThread>
6#include <QImage>
7#if HAVE_QT6_MULTIMEDIA
8#include <QMediaCaptureSession>
9#endif
10
11#ifdef HAVE_QT6_RECORD
12 #include <QVideoSink>
13 #include <QAudioInput>
14 #include <QAudioOutput>
15 #include <QAudioBufferInput>
16 #include <QAudioBufferOutput>
17 #include <QVideoFrameInput>
18#endif
19
20#include "ParameterRecord.h"
21#include "ParameterMediaDevices.h"
22#include "ParameterWebBrowser.h"
23
24class CMultimediaRecord : public QObject
25{
26 Q_OBJECT
27public:
28 explicit CMultimediaRecord(CParameterWebBrowser* pPara, QObject *parent = nullptr);
30
31 enum RV {
32 Success = 0,
33 Fail = -1
34 };
35 Q_ENUM(RV)
36
37public Q_SLOTS:
38 void slotStart();
39 void slotStop();
40 void slotUpdateVideoFrame(const QImage image);
41
42Q_SIGNALS:
43 void sigRunning();
44 void sigFinished();
45
46private:
47 CParameterRecord m_ParaRecord;
48 CParameterMediaDevices* m_pMediaDevices;
49#if HAVE_QT6_MULTIMEDIA
50 QMediaCaptureSession m_CaptureSession;
51#endif
52 qint64 m_VideoFrameStartTime;
53#ifdef HAVE_QT6_RECORD
54 QAudioInput m_AudioInput;
55 QVideoFrameInput m_VideoFrameInput;
56 QAudioBufferInput m_AudioBufferInput;
57 QAudioBufferOutput m_AudioBufferOutput;
58 QMediaRecorder m_Recorder;
59private Q_SLOTS:
60 void slotRecordStateChanged(QMediaRecorder::RecorderState state);
61 void slotRecordError(QMediaRecorder::Error error, const QString &errorString);
62#endif
63};
64
86class CMultimediaRecordThread : public QThread
87{
88 Q_OBJECT
89public:
90 explicit CMultimediaRecordThread(CParameterWebBrowser* pPara, QObject *parent = nullptr);
92public Q_SLOTS:
93 void slotUpdateVideoFrame(const QImage image);
94 void slotQuit();
95protected:
96 virtual void run() override;
97private:
98 CParameterWebBrowser* m_pPara;
99 CMultimediaRecord* m_pRecord;
100};
The CMultimediaRecordThread class