Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qmediarecorder.h
Go to the documentation of this file.
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
12QT_BEGIN_NAMESPACE
13
14class QUrl;
15class QMediaFormat;
16class QMediaCaptureSession;
17class QPlatformMediaRecorder;
18
19class QMediaRecorderPrivate;
20class Q_MULTIMEDIA_EXPORT QMediaRecorder : public QObject
21{
22 Q_OBJECT
23 Q_PROPERTY(QMediaRecorder::RecorderState recorderState READ recorderState NOTIFY recorderStateChanged)
24 Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged)
25 Q_PROPERTY(QUrl outputLocation READ outputLocation WRITE setOutputLocation)
26 Q_PROPERTY(QUrl actualLocation READ actualLocation NOTIFY actualLocationChanged)
27 Q_PROPERTY(QMediaMetaData metaData READ metaData WRITE setMetaData NOTIFY metaDataChanged)
28 Q_PROPERTY(QMediaRecorder::Error error READ error NOTIFY errorChanged)
29 Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
30 Q_PROPERTY(QMediaFormat mediaFormat READ mediaFormat WRITE setMediaFormat NOTIFY mediaFormatChanged)
31 Q_PROPERTY(Quality quality READ quality WRITE setQuality NOTIFY qualityChanged)
32 Q_PROPERTY(QMediaRecorder::EncodingMode encodingMode READ encodingMode WRITE setEncodingMode NOTIFY encodingModeChanged)
33 Q_PROPERTY(QSize videoResolution READ videoResolution WRITE setVideoResolution NOTIFY videoResolutionChanged)
34 Q_PROPERTY(qreal videoFrameRate READ videoFrameRate WRITE setVideoFrameRate NOTIFY videoFrameRateChanged)
35 Q_PROPERTY(int videoBitRate READ videoBitRate WRITE setVideoBitRate NOTIFY videoBitRateChanged)
36 Q_PROPERTY(int audioBitRate READ audioBitRate WRITE setAudioBitRate NOTIFY audioBitRateChanged)
37 Q_PROPERTY(int audioChannelCount READ audioChannelCount WRITE setAudioChannelCount NOTIFY audioChannelCountChanged)
38 Q_PROPERTY(int audioSampleRate READ audioSampleRate WRITE setAudioSampleRate NOTIFY audioSampleRateChanged)
39 Q_PROPERTY(bool autoStop READ autoStop WRITE setAutoStop NOTIFY autoStopChanged REVISION(6, 8))
40public:
41 enum Quality
42 {
43 VeryLowQuality,
44 LowQuality,
45 NormalQuality,
46 HighQuality,
47 VeryHighQuality
48 };
49 Q_ENUM(Quality)
50
51 enum EncodingMode
52 {
53 ConstantQualityEncoding,
54 ConstantBitRateEncoding,
55 AverageBitRateEncoding,
56 TwoPassEncoding
57 };
58 Q_ENUM(EncodingMode)
59
60 enum RecorderState
61 {
62 StoppedState,
63 RecordingState,
64 PausedState
65 };
66 Q_ENUM(RecorderState)
67
68 enum Error
69 {
70 NoError,
71 ResourceError,
72 FormatError,
73 OutOfSpaceError,
74 LocationNotWritable
75 };
76 Q_ENUM(Error)
77
78 QMediaRecorder(QObject *parent = nullptr);
79 ~QMediaRecorder() override;
80
81 bool isAvailable() const;
82
83 QUrl outputLocation() const;
84 void setOutputLocation(const QUrl &location);
85
86 void setOutputDevice(QIODevice *device);
87 QIODevice *outputDevice() const;
88
89 QUrl actualLocation() const;
90
91 RecorderState recorderState() const;
92
93 Error error() const;
94 QString errorString() const;
95
96 qint64 duration() const;
97
98 QMediaFormat mediaFormat() const;
99 void setMediaFormat(const QMediaFormat &format);
100
101 EncodingMode encodingMode() const;
102 void setEncodingMode(EncodingMode);
103
104 Quality quality() const;
105 void setQuality(Quality quality);
106
107 QSize videoResolution() const;
108 void setVideoResolution(const QSize &);
109 void setVideoResolution(int width, int height) { setVideoResolution(QSize(width, height)); }
110
111 qreal videoFrameRate() const;
112 void setVideoFrameRate(qreal frameRate);
113
114 int videoBitRate() const;
115 void setVideoBitRate(int bitRate);
116
117 int audioBitRate() const;
118 void setAudioBitRate(int bitRate);
119
120 int audioChannelCount() const;
121 void setAudioChannelCount(int channels);
122
123 int audioSampleRate() const;
124 void setAudioSampleRate(int sampleRate);
125
126 QMediaMetaData metaData() const;
127 void setMetaData(const QMediaMetaData &metaData);
128 void addMetaData(const QMediaMetaData &metaData);
129
130 bool autoStop() const;
131 void setAutoStop(bool autoStop);
132
133 QMediaCaptureSession *captureSession() const;
134 QPlatformMediaRecorder *platformRecoder() const;
135
136public Q_SLOTS:
137 void record();
138 void pause();
139 void stop();
140
141Q_SIGNALS:
142 void recorderStateChanged(RecorderState state);
143 void durationChanged(qint64 duration);
144 void actualLocationChanged(const QUrl &location);
145
146#if QT_DEPRECATED_SINCE(6, 9)
147 QT_MOC_COMPAT QT_DEPRECATED_VERSION_X_6_9("Use specific signals instead")
148 void encoderSettingsChanged();
149#endif
150
151 void errorOccurred(Error error, const QString &errorString);
152 void errorChanged();
153
154 void metaDataChanged();
155
156 void mediaFormatChanged();
157 void encodingModeChanged();
158 void qualityChanged();
159 void videoResolutionChanged();
160 void videoFrameRateChanged();
161 void videoBitRateChanged();
162 void audioBitRateChanged();
163 void audioChannelCountChanged();
164 void audioSampleRateChanged();
165 Q_REVISION(6, 8) void autoStopChanged();
166
167private:
168 QMediaRecorderPrivate *d_ptr;
169 friend class QMediaCaptureSession;
170 void setCaptureSession(QMediaCaptureSession *session);
171 Q_DISABLE_COPY(QMediaRecorder)
172 Q_DECLARE_PRIVATE(QMediaRecorder)
173};
174
175QT_END_NAMESPACE
176
177#endif // QMediaRecorder_H
\inmodule QtMultimedia