1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QMediaRecorder_H
5#define QMediaRecorder_H
6
7#include <QtCore/qobject.h>
8#include <QtCore/qsize.h>
9#include <QtMultimedia/qtmultimediaglobal.h>
10#include <QtMultimedia/qmediametadata.h>
11
12#include <QtCore/qpair.h>
13
14QT_BEGIN_NAMESPACE
15
16class QUrl;
17class QSize;
18class QAudioFormat;
19class QCamera;
20class QCameraDevice;
21class QMediaFormat;
22class QAudioDevice;
23class QMediaCaptureSession;
24class QPlatformMediaRecorder;
25
26class QMediaRecorderPrivate;
27class Q_MULTIMEDIA_EXPORT QMediaRecorder : public QObject
28{
29 Q_OBJECT
30 Q_PROPERTY(QMediaRecorder::RecorderState recorderState READ recorderState NOTIFY recorderStateChanged)
31 Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged)
32 Q_PROPERTY(QUrl outputLocation READ outputLocation WRITE setOutputLocation)
33 Q_PROPERTY(QUrl actualLocation READ actualLocation NOTIFY actualLocationChanged)
34 Q_PROPERTY(QMediaMetaData metaData READ metaData WRITE setMetaData NOTIFY metaDataChanged)
35 Q_PROPERTY(QMediaRecorder::Error error READ error NOTIFY errorChanged)
36 Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
37 Q_PROPERTY(QMediaFormat mediaFormat READ mediaFormat WRITE setMediaFormat NOTIFY mediaFormatChanged)
38 Q_PROPERTY(Quality quality READ quality WRITE setQuality NOTIFY qualityChanged)
39 Q_PROPERTY(QMediaRecorder::EncodingMode encodingMode READ encodingMode WRITE setEncodingMode NOTIFY encodingModeChanged)
40 Q_PROPERTY(QSize videoResolution READ videoResolution WRITE setVideoResolution NOTIFY videoResolutionChanged)
41 Q_PROPERTY(qreal videoFrameRate READ videoFrameRate WRITE setVideoFrameRate NOTIFY videoFrameRateChanged)
42 Q_PROPERTY(int videoBitRate READ videoBitRate WRITE setVideoBitRate NOTIFY videoBitRateChanged)
43 Q_PROPERTY(int audioBitRate READ audioBitRate WRITE setAudioBitRate NOTIFY audioBitRateChanged)
44 Q_PROPERTY(int audioChannelCount READ audioChannelCount WRITE setAudioChannelCount NOTIFY audioChannelCountChanged)
45 Q_PROPERTY(int audioSampleRate READ audioSampleRate WRITE setAudioSampleRate NOTIFY audioSampleRateChanged)
46 Q_PROPERTY(bool autoStop READ autoStop WRITE setAutoStop NOTIFY autoStopChanged REVISION(6, 8))
47public:
48 enum Quality
49 {
50 VeryLowQuality,
51 LowQuality,
52 NormalQuality,
53 HighQuality,
54 VeryHighQuality
55 };
56 Q_ENUM(Quality)
57
58 enum EncodingMode
59 {
60 ConstantQualityEncoding,
61 ConstantBitRateEncoding,
62 AverageBitRateEncoding,
63 TwoPassEncoding
64 };
65 Q_ENUM(EncodingMode)
66
67 enum RecorderState
68 {
69 StoppedState,
70 RecordingState,
71 PausedState
72 };
73 Q_ENUM(RecorderState)
74
75 enum Error
76 {
77 NoError,
78 ResourceError,
79 FormatError,
80 OutOfSpaceError,
81 LocationNotWritable
82 };
83 Q_ENUM(Error)
84
85 QMediaRecorder(QObject *parent = nullptr);
86 ~QMediaRecorder();
87
88 bool isAvailable() const;
89
90 QUrl outputLocation() const;
91 void setOutputLocation(const QUrl &location);
92
93 void setOutputDevice(QIODevice *device);
94 QIODevice *outputDevice() const;
95
96 QUrl actualLocation() const;
97
98 RecorderState recorderState() const;
99
100 Error error() const;
101 QString errorString() const;
102
103 qint64 duration() const;
104
105 QMediaFormat mediaFormat() const;
106 void setMediaFormat(const QMediaFormat &format);
107
108 EncodingMode encodingMode() const;
109 void setEncodingMode(EncodingMode);
110
111 Quality quality() const;
112 void setQuality(Quality quality);
113
114 QSize videoResolution() const;
115 void setVideoResolution(const QSize &);
116 void setVideoResolution(int width, int height) { setVideoResolution(QSize(width, height)); }
117
118 qreal videoFrameRate() const;
119 void setVideoFrameRate(qreal frameRate);
120
121 int videoBitRate() const;
122 void setVideoBitRate(int bitRate);
123
124 int audioBitRate() const;
125 void setAudioBitRate(int bitRate);
126
127 int audioChannelCount() const;
128 void setAudioChannelCount(int channels);
129
130 int audioSampleRate() const;
131 void setAudioSampleRate(int sampleRate);
132
133 QMediaMetaData metaData() const;
134 void setMetaData(const QMediaMetaData &metaData);
135 void addMetaData(const QMediaMetaData &metaData);
136
137 bool autoStop() const;
138 void setAutoStop(bool autoStop);
139
140 QMediaCaptureSession *captureSession() const;
141 QPlatformMediaRecorder *platformRecoder() const;
142
143public Q_SLOTS:
144 void record();
145 void pause();
146 void stop();
147
148Q_SIGNALS:
149 void recorderStateChanged(RecorderState state);
150 void durationChanged(qint64 duration);
151 void actualLocationChanged(const QUrl &location);
152 void encoderSettingsChanged();
153
154 void errorOccurred(Error error, const QString &errorString);
155 void errorChanged();
156
157 void metaDataChanged();
158
159 void mediaFormatChanged();
160 void encodingModeChanged();
161 void qualityChanged();
162 void videoResolutionChanged();
163 void videoFrameRateChanged();
164 void videoBitRateChanged();
165 void audioBitRateChanged();
166 void audioChannelCountChanged();
167 void audioSampleRateChanged();
168 Q_REVISION(6, 8) void autoStopChanged();
169
170private:
171 QMediaRecorderPrivate *d_ptr;
172 friend class QMediaCaptureSession;
173 void setCaptureSession(QMediaCaptureSession *session);
174 Q_DISABLE_COPY(QMediaRecorder)
175 Q_DECLARE_PRIVATE(QMediaRecorder)
176};
177
178QT_END_NAMESPACE
179
180#endif // QMediaRecorder_H
181

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qtmultimedia/src/multimedia/recording/qmediarecorder.h