媒体录制QMediaRecorder
QMediaRecorder 可以录制从 QMediaCaptureSession 获取的音频和视频,并对音频和视频进行编码,需要用QMediaCaptureSession 的 setRecorder(recorder:QMediaRecorder)方法设置关联的捕获器。
用QMediaRecorder创建实例的方法如下所示
from PySide6.QtMultimedia import QMediaRecorder
QMediaRecorder(self,parent: Union[PySide6.QtCore.QObject,NoneType]= None)-> None
媒体录制 QMediaRecorder 的常用方法
QMediaRecorder 的常用方法如表所示,主要方法介绍如下
-
当 QMediaRecorder 准备就绪可以录制时isAvailable()的返回值是 True;
-
用record()方法开始录制,用stop()方法停止录制,用pause()方法暂停录制,
-
用duration()方法获取录制的时间,单位是毫秒。
-
用recorderState()方法获取录制状态,返回值是QMediaRecorder.RecorderState 的枚举值,可取:
- QMediaRecorder,StoppedState
- QMediaRecorder.RecordingState
- QMediaRecorder.PausedState
-
录制过程中如果出错可以用error()方法获取出错内容,返回值是QMediaRecorder.Error 的枚举值,可取以下值,用errorString()方法获取具体的出错信息。:
- QMediaRecorder.NoError
- QMediaRecorder.ResourceError(设备没有准备好)
- QMediaRecorder,ForatError(不支持该格式)
- QMediaRecorder.OutOfSpaceError(存储空间不足)
- QMediaRecorder.LocationnotWritable(输出位置不可写)
-
用setEncodingMode(QMediaRecorder.EncodingMode)方法设置编码模式,参数是QMediaRecorder,EncodingMode 的枚举值可取:
- QMediaRecorder.ConstantQualityEncoding(常质量编码)
- QMediaRecorder ConstantBitRateEncoding(常比特率编码)
- QMediaRecorder,AverageBitRateEncoding(平均比特率编码)
- QMediaRecorderTwoPassEncoding(二次编码)
-
用setQuality(quality:QMediaRecorder.Quality)方法设置录制质量,参数是QMediaRecorder.Quality 的举值,可取:
- QMediaRecorder.VeryLowQuality
- QMediaRecorder.LowQuality
- QMediaRecorder.NormalQuality
- QMediaRecorder.HighQuality
- QMediaRecorder.VeryHighQuality。
-
用setMediaFormat(format: Union[QMediaFormat,QMediaFormat,FileFormat])方法设置媒体格式。
QMediaRecorder 的方法及参数类型 | 返回值的类型 | 说明 |
---|---|---|
isAvailable() | bool | 获取是否可以录制 |
[slot]record() | None | 开始录制 |
[slot]stop() | None | 停止录制 |
[slot]pause() | None | 暂停录制 |
duraticn() | int | 获取录制的时间 |
error() | QMediaRecorder.Error | 获取出错内容 |
errorString() | str | 获取出错信息 |
recorderState() | QMediaRecorder.RecorderState | 获取录制状态 |
captureSession() | QMediaCaptureSession | 获取关联的捕获器 |
setAudioBitRate(bitRate:int) | None | 设置音频比特率 |
audioBitRate() | int | 获取音频比特率 |
setAudioChannelCount(channels:int) | None | 设置音频通道数量 |
audioChannelCount() | int | 获取音频通道数量 |
setAudioSampleRate(sampleRate: int) | None | 设置音频采样率 |
audioSampleRate() | int | 获取音频采样率 |
setEncodingMode(QMediaRecorder.EncodingMode) | None | 设置编码模式 |
setMediaFormat(Union[QMediaFormat,QMediaFormat.FileFormat]) | None 际最好海谢部含部 | 设置媒体格式 |
mediaFormat() | QMediaFormat | 获取媒体格式 |
setMetaData(QMediaMetaData) | None | 设置媒体元数据 |
metaData() | QMediaMetaData | 获取媒体元数据 |
addMetaData(QMediaMetaData) | None | 添加媒体元数据 |
setOutputLocation(Union[QUrl,str]) | None | 设置媒体输出位置 |
outputLocation() | QUrI | 获取输出位置 |
actualLocation() | QUrI | 获取实际的输出位置 |
setQuality(QMediaRecorder.Quality) | None | 设置录制质量 |
quality() | QMediaRecorder.Quality | 获取录制质量 |
setVideoBitRate(bitRate:int) | None | 设置视频比特率 |
videoBitRate() | int | 获取视频比特率 |
setVideoFrameRate(frameRate: float) | None | 设置视频帧速 |
videoFrameRate() | float | 获取视频帧速 |
setVideoResolution(QSize) | None | 设置视频分辨率 |
setVideoResolution(width: int,height: int) | None | 设置视频分辨率 |
videoResolution() | QSize | 获取视频分辨率 |
媒体录制QMediaRecorder 的信号
媒体录制QMediaRecorder 的信号如表所示
QMediaRecorder的信号及参数类型 | 说明 |
---|---|
actualLocationChanged(location:QUrl) | 存储位置发生改变时发送信号 |
durationChanged(duration:int) | 录制时间发生改变时发送信号 |
errorChanged() | 错误状态发生改变时发送信号 |
errorOccurred(error: QMediaRecorder.Error,errorString:str) | 出现错误时发送信号 |
mediaFormatChanged() | 格式发生改变时发送信号 |
metaDataChanged() | 元数据发生改变时发送信号 |
recorderStateChanged(state:QMediaRecorder.RecorderState) | 录制状态发生改变时发送信号 |