MediaRecorder QML Type
用于编码和记录在CaptureSession 中生成的媒体...更多...
Import Statement: | import QtMultimedia |
In C++: | QMediaRecorder |
属性
- actualLocation : url
- audioBitRate : int
(since 6.6)
- audioChannelCount : int
(since 6.6)
- audioSampleRate : int
(since 6.6)
- duration : qint64
- encodingMode : enumeration
(since 6.6)
- error : enumeration
- errorString : string
- mediaFormat : MediaFormat
- metaData : mediaMetaData
- outputLocation : url
- quality : enumeration
- recorderState : enumeration
- videoBitRate : int
(since 6.6)
- videoFrameRate : real
(since 6.6)
- videoResolution : Size
(since 6.6)
信号
- actualLocationChanged(const QUrl &location)
- durationChanged(qint64 duration)
- errorOccurred(Error error, const QString &errorString)
- metaDataChanged()
- recorderStateChanged(RecorderState state)
方法
详细说明
在CaptureSession 中使用 MediaRecorder 元素进行编码和录制:
- 从音频接口(如麦克风或线路输入)采集的音频。
- 从摄像头、屏幕或应用程序窗口捕获的视频。
视频编码和录制的性能受硬件、操作系统、安装的图形驱动程序和输入视频格式的限制。如果Camera
、ScreenCapture
或WindowCapture
生成视频帧的速度快于MediaRecorder
的编码和录制速度,录制器可能会丢弃某些帧。如果输入帧的分辨率较高,例如 4K,且无法使用硬件加速编码,则可能出现这种情况。
下面的代码显示了一个简单的捕获会话,其中包含一个使用默认摄像机和默认音频输入的 MediaRecorder。
CaptureSession { id: captureSession camera: Camera { id: camera active: true } audioInput: AudioInput {} recorder: MediaRecorder { id: recorder } }
下面的代码显示了如何开始和停止录制。
CameraButton { text: "Record" visible: recorder.recorderState !== MediaRecorder.RecordingState onClicked: recorder.record() } CameraButton { id: stopButton text: "Stop" visible: recorder.recorderState === MediaRecorder.RecordingState onClicked: recorder.stop() }
另请参阅 CaptureSession,Camera,ScreenCapture,WindowCapture,AudioInput 和ImageCapture 。
属性文档
actualLocation : url |
最后媒体内容的实际位置。
分配新的outputLocation 时,实际位置将被重置。调用record() 时,记录器会根据以下规则生成实际位置。
- 如果
outputLocation
为空、目录或无扩展名的文件,记录盒会根据所选媒体格式和系统 MIME 类型生成适当的扩展名。 - 如果
outputLocation
是一个目录,记录器会在其中生成一个新的文件名。 - 如果
outputLocation
为空,记录盒会在系统特定的音频或视频目录中生成一个新文件名。 - 录音机在发出
recorderStateChanged(RecordingState)
之前会生成实际位置。
audioBitRate : int |
该属性保存压缩音频流的比特率(比特/秒)。
该属性在 Qt 6.6 中引入。
audioChannelCount : int |
该属性表示音频通道数。
该属性在 Qt 6.6 中引入。
audioSampleRate : int |
该属性用于保存音频采样率(以赫兹为单位)。
此属性在 Qt 6.6 中引入。
duration : qint64 |
该属性用于保存以毫秒为单位的录制媒体持续时间。
encodingMode : enumeration |
error : enumeration |
该属性用于保存当前媒体记录器的错误状态。
常量 | 说明 |
---|---|
MediaRecorder.NoError | 未处于错误状态。 |
MediaRecorder.ResourceError | 系统资源不足 |
MediaRecorder.FormatError | 不支持当前格式。 |
MediaRecorder.OutOfSpaceError | 设备无剩余空间。 |
MediaRecorder.LocationNotWriteable | 输出位置不可写。 |
mediaFormat : MediaFormat |
该属性包含记录仪的当前 MediaFormat(媒体格式)。
metaData : mediaMetaData |
outputLocation : url |
媒体内容的目标位置。
设置位置可能会失败,例如当服务只支持本地文件系统位置,但传递的是网络 URL 时。如果操作失败,将发出errorOccurred() 信号。
输出位置可以是空、目录或文件。目录或文件的路径可以是相对路径,也可以是绝对路径。record() 方法会根据指定的输出位置和系统特定设置生成实际位置。详情请参阅actualLocation 属性说明。
另请参阅 actualLocation 和errorOccurred()。
quality : enumeration |
枚举质量编码级别。
常量 | 值 |
---|---|
MediaRecorder.VeryLowQuality | |
MediaRecorder.LowQuality | |
MediaRecorder.NormalQuality | |
MediaRecorder.HighQuality | |
MediaRecorder.VeryHighQuality |
recorderState : enumeration |
videoBitRate : int |
该属性保存压缩视频流的比特率(比特/秒)。
该属性在 Qt 6.6 中引入。
videoFrameRate : real |
该属性表示视频帧频。
值为 0 表示录像机应根据视频源的可用性和编解码器的限制做出最佳选择。
此属性在 Qt 6.6 中引入。
videoResolution : Size |
此属性保存编码视频的分辨率。
设置一个空大小可使录像机根据视频源的可用性和编解码器的限制选择最佳分辨率。
此属性在 Qt 6.6 中引入。
信号文档
actualLocationChanged(const QUrl &location) |
录制媒体的实际location 已发生变化的信号。
该信号通常在开始录制时发出。
注: 相应的处理程序是onActualLocationChanged
。
durationChanged(qint64 duration) |
录制媒体的duration 已更改的信号。
注: 相应的处理程序是onDurationChanged
。
errorOccurred(Error error, const QString &errorString) |
发生error 的信号。
errorString 包含错误描述。
注: 相应的处理程序是onErrorOccurred
。
metaDataChanged() |
媒体对象的元数据已更改的信号。
如果多个元数据元素发生变化,则会发出一次 metaDataChanged() 信号。
注: 相应的处理程序是onMetaDataChanged
。
recorderStateChanged(RecorderState state) |
媒体记录器state 已更改的信号。
注: 相应的处理程序是onRecorderStateChanged
。
方法文档
pause() |
record() |
开始录音。
虽然记录器状态会立即更改为MediaRecorder.RecordingState
,但录音可能会异步开始。
如果录制失败,则会发出 error() 信号,记录器状态会重置回QMediaRecorder.StoppedState
。
此方法根据生成规则更新actualLocation 。
注: 在移动设备上,录制将以调用录制时的设备方向进行,并在录制期间被锁定。为避免在用户界面上出现人工痕迹,我们建议在录制过程中使用窗口的 contentOrientation 属性将用户界面锁定为同一方向,并在录制完成后再次解锁。
stop() |
停止录制。
记录器将停止录制。不过,处理待处理的视频和音频数据可能仍需要一些时间。一旦媒体记录器的状态变为QMediaRecorder::StoppedState ,录制就结束了。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.