PySide6.QtMultimedia.QMediaRecorder¶
- class QMediaRecorder¶
QMediaRecorder
类用于编码和录制捕获会话。更多…概要¶
属性¶
actualLocationᅟ
- 最后媒体内容的实际位置durationᅟ
- 记录的媒体持续时间,以毫秒为单位outputLocationᅟ
- 媒体内容的目标位置recorderStateᅟ
- 媒体记录器的当前状态
方法¶
def
__init__()
def
actualLocation()
def
addMetaData()
def
audioBitRate()
def
autoStop()
def
captureSession()
def
duration()
def
encodingMode()
def
error()
def
errorString()
def
isAvailable()
def
mediaFormat()
def
metaData()
def
outputDevice()
def
outputLocation()
def
quality()
def
recorderState()
def
setAutoStop()
def
setMediaFormat()
def
setMetaData()
def
setQuality()
def
videoBitRate()
def
videoFrameRate()
插槽¶
信号¶
def
errorChanged()
def
errorOccurred()
def
qualityChanged()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
使用
QMediaRecorder
类来编码和记录在QMediaCaptureSession
中生成的媒体。你可以生成:音频。使用
QAudioInput
或QAudioBufferInput
。视频。使用
QCamera
,QScreenCapture
,QWindowCapture
, 或QVideoFrameInput
。
要录制媒体,请将生成器连接到相应的媒体捕获会话。
视频编码和录制的性能受硬件、操作系统、安装的图形驱动程序和输入视频格式的限制。如果
QCamera
、QScreenCapture
或QWindowCapture
生成视频帧的速度快于QMediaRecorder
能够编码和记录的速度,记录器可能会丢弃一些帧。如果输入帧分辨率较高,例如4K,并且硬件加速编码不可用,这种情况很可能发生。如果您通过QVideoFrameInput
生成输入视频,当达到此限制并且内部帧队列已满时,方法QVideoFrameInput::sendVideoFrame
将不执行任何操作并返回false
。依赖信号QVideoFrameInput::readyToSendVideoFrame
来了解记录器何时准备好再次接收新帧。如果您无法更改视频帧生成速率并且不希望丢弃帧,我们建议在QVideoFrameInput
之上实现您自己的帧队列,同时考虑硬件的内存限制。session = QMediaCaptureSession() audioInput = QAudioInput() session.setAudioInput(input) recorder = QMediaRecorder() session.setRecorder(recorder) recorder.setQuality(QMediaRecorder.HighQuality) recorder.setOutputLocation(QUrl.fromLocalFile("test.mp3")) recorder.record()
- class Quality¶
枚举质量编码级别。
常量
描述
QMediaRecorder.非常低质量
QMediaRecorder.低质量
QMediaRecorder.NormalQuality
QMediaRecorder.高质量
QMediaRecorder.非常高质量
在版本6.1中添加。
- class EncodingMode¶
枚举编码模式。
常量
描述
QMediaRecorder.ConstantQualityEncoding
编码将旨在保持恒定质量,调整比特率以适应。
QMediaRecorder.ConstantBitRateEncoding
编码将使用恒定比特率,调整质量以适应。
QMediaRecorder.AverageBitRateEncoding
编码将尝试保持平均比特率设置,但会根据需要使用更多或更少。
QMediaRecorder.TwoPassEncoding
媒体将首先被处理以确定其特征,然后第二次处理,为需要它的区域分配更多的比特。
在版本6.1中添加。
- class RecorderState¶
常量
描述
QMediaRecorder.StoppedState
录音器未激活。
QMediaRecorder.RecordingState
请求录制。
QMediaRecorder.PausedState
录音机已暂停。
在版本6.1中添加。
- class Error¶
常量
描述
QMediaRecorder.NoError
没有错误。
QMediaRecorder.ResourceError
设备未准备好或不可用。
QMediaRecorder.FormatError
当前格式不受支持。
QMediaRecorder.OutOfSpaceError
设备上没有剩余空间。
QMediaRecorder.LocationNotWritable
输出位置不可写。
在版本6.1中添加。
注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。此属性保存最后媒体内容的实际位置。
当分配了新的
outputLocation
或非空的outputDevice
时,实际位置会被重置。当调用record()
并且outputDevice
为null
或不可写时,记录器会根据以下规则生成实际位置。如果
outputLocation
为空、是一个目录或没有扩展名的文件,记录器会根据所选的媒体格式和系统 MIME 类型生成适当的扩展名。如果
outputLocation
是一个目录,记录器会在其中生成一个新的文件名。如果
outputLocation
为空,录音机将在系统特定的目录中为音频或视频生成一个新的文件名。记录器在发出
recorderStateChanged(RecordingState)
之前生成实际位置。
- Access functions:
- property audioBitRateᅟ: int¶
- Access functions:
- property audioChannelCountᅟ: int¶
- Access functions:
- property audioSampleRateᅟ: int¶
- Access functions:
- property autoStopᅟ: bool¶
此属性控制当所有媒体输入报告流结束或已被停用时,媒体记录器是否自动停止。
流的结束通过发送一个空的媒体帧来报告,您可以通过
QVideoFrameInput
或QAudioBufferInput
显式发送。视频输入,特别是
QCamera
、QScreenCapture
和QWindowCapture
,可以通过函数setActive
来停用。默认为
false
。QMediaRecorder::autoStop 仅在 FFmpeg 后端支持。
- Access functions:
- property durationᅟ: int¶
此属性保存记录的媒体持续时间,单位为毫秒。
- Access functions:
- property encodingModeᅟ: QMediaRecorder.EncodingMode¶
- Access functions:
- property errorᅟ: QMediaRecorder.Error¶
返回当前的错误状态。
另请参阅
- Access functions:
- property errorStringᅟ: str¶
返回描述当前错误状态的字符串。
另请参阅
- Access functions:
- property mediaFormatᅟ: QMediaFormat¶
返回录制媒体的格式。
- Access functions:
- property metaDataᅟ: QMediaMetaData¶
返回与录音相关的元数据。
- Access functions:
此属性保存媒体内容的目标位置。
设置位置可能会失败,例如当服务仅支持本地文件系统位置但传递了网络URL时。如果操作失败,则会发出errorOccured()信号。
如果已经为记录器分配了一个可写的
outputDevice
,则输出位置将被忽略。这种行为在未来可能会改变,因此我们建议只设置一个输出,即outputLocation
或outputDevice
。输出位置可以为空、目录或文件。目录或文件的路径可以是相对路径或绝对路径。
record()
方法根据指定的输出位置和系统特定设置生成实际位置。详情请参阅actualLocation
属性描述。- Access functions:
- property qualityᅟ: QMediaRecorder.Quality¶
返回录音质量。
- Access functions:
- property recorderStateᅟ: QMediaRecorder.RecorderState¶
此属性保存媒体记录器的当前状态。
state属性表示用户请求,并在
record()
、pause()
或stop()
调用期间同步更改。当录制失败时,Recorder状态也可能异步更改。- Access functions:
- property videoBitRateᅟ: int¶
- Access functions:
- property videoFrameRateᅟ: float¶
- Access functions:
- Access functions:
构建一个媒体记录器。媒体记录器是
parent
的子对象。属性
actualLocationᅟ
的获取器。表示记录的媒体的实际
location
已更改。通常在开始录制时发出此信号。属性
actualLocationᅟ
的通知信号。- addMetaData(metaData)¶
- Parameters:
metaData –
QMediaMetaData
将
metaData
添加到录制的媒体中。- audioBitRate()¶
- Return type:
整数
返回压缩音频流的比特率,单位为每秒比特。
另请参阅
属性
audioBitRateᅟ
的获取器。- audioBitRateChanged()¶
当录音音频比特率发生变化时发出信号。
属性
audioBitRateᅟ
的通知信号。- audioChannelCount()¶
- Return type:
整数
返回音频通道的数量。
属性
audioChannelCountᅟ
的获取器。- audioChannelCountChanged()¶
当录音音频通道数量发生变化时发出信号。
属性
audioChannelCountᅟ
的通知信号。- audioSampleRate()¶
- Return type:
整数
返回音频采样率,单位为Hz。
另请参阅
属性
audioSampleRateᅟ
的获取器。- audioSampleRateChanged()¶
当录音音频采样率发生变化时发出信号。
属性
audioSampleRateᅟ
的通知信号。- autoStop()¶
- Return type:
布尔
另请参阅
属性
autoStopᅟ
的获取器。- autoStopChanged()¶
属性
autoStopᅟ
的通知信号。- captureSession()¶
- Return type:
返回媒体捕获会话。
- duration()¶
- Return type:
整数
属性
durationᅟ
的获取器。- durationChanged(duration)¶
- Parameters:
duration – int
表示记录的媒体的
duration
已经改变。属性
durationᅟ
的通知信号。- encoderSettingsChanged()¶
当编码器设置更改时发出信号。
- encodingMode()¶
- Return type:
返回编码模式。
属性
encodingModeᅟ
的获取器。- encodingModeChanged()¶
当编码模式改变时发出信号。
属性
encodingModeᅟ
的通知信号。属性
errorᅟ
的获取器。- errorChanged()¶
属性
errorᅟ
的通知信号。表示发生了
error
,其中errorString
包含错误的描述。- errorString()¶
- Return type:
字符串
属性
errorStringᅟ
的获取器。- isAvailable()¶
- Return type:
布尔
如果媒体录制服务准备就绪,则返回
true
。- mediaFormat()¶
- Return type:
另请参阅
属性
mediaFormatᅟ
的获取器。- mediaFormatChanged()¶
属性
mediaFormatᅟ
的通知信号。- metaData()¶
- Return type:
另请参阅
属性
metaDataᅟ
的获取器。- metaDataChanged()¶
表示媒体对象的元数据已更改。
如果更改了多个元数据元素,则会发出一次metaDataChanged()。
属性
metaDataᅟ
的通知信号。返回媒体内容的输出IO设备。
另请参阅
- outputLocation()¶
- Return type:
另请参阅
属性
outputLocationᅟ
的获取器。- pause()¶
暂停录制。
记录器状态更改为
PausedState
。根据平台的不同,可能不支持暂停录制。在这种情况下,录制器的状态保持不变。
- quality()¶
- Return type:
另请参阅
属性
qualityᅟ
的获取器。- qualityChanged()¶
当录音质量发生变化时发出信号。
属性
qualityᅟ
的通知信号。- record()¶
开始录制。
虽然记录器状态立即更改为 c{
RecordingState
},但录制可能会异步开始。如果录制失败,
error()
信号将被发出,录制器状态将重置为QMediaRecorder::StoppedState
。此方法根据其生成规则更新
actualLocation
。注意
在移动设备上,录制将在调用record时设备的方向进行,并在录制期间锁定。为了避免用户界面上的伪影,我们建议在录制过程中使用QWindow的contentOrientation属性将用户界面锁定为与录制相同的方向,并在录制完成后再次解锁。
- recorderState()¶
- Return type:
返回当前媒体记录器的状态。
另请参阅
属性
recorderStateᅟ
的获取器。- recorderStateChanged(state)¶
- Parameters:
状态 –
RecorderState
表示媒体记录器的
state
已更改。属性
recorderStateᅟ
的通知信号。- setAudioBitRate(bitRate)¶
- Parameters:
bitRate – int
设置音频的
bitRate
,单位为每秒比特数。另请参阅
属性
audioBitRateᅟ
的设置器。- setAudioChannelCount(channels)¶
- Parameters:
channels – 整数
设置音频
channels
的数量。值为-1表示记录器应根据音频源可用的内容和编解码器的限制做出最佳选择。
另请参阅
属性
audioChannelCountᅟ
的设置器。- setAudioSampleRate(sampleRate)¶
- Parameters:
sampleRate – int
设置音频的
sampleRate
,单位为Hz。值为
-1
表示记录器应根据音频源可用的内容和编解码器的限制做出最佳选择。另请参阅
属性
audioSampleRateᅟ
的设置器。- setAutoStop(autoStop)¶
- Parameters:
autoStop – 布尔值
另请参阅
属性
autoStopᅟ
的设置器。- setEncodingMode(mode)¶
- Parameters:
mode –
EncodingMode
设置编码
mode
设置。如果设置了
ConstantQualityEncoding
,则使用质量编码参数并忽略比特率,否则使用比特率。属性
encodingModeᅟ
的设置器。- setMediaFormat(format)¶
- Parameters:
格式 –
QMediaFormat
另请参阅
属性
mediaFormatᅟ
的设置器。- setMetaData(metaData)¶
- Parameters:
metaData –
QMediaMetaData
将元数据设置为
metaData
。属性
metaDataᅟ
的设置器。设置媒体内容的输出IO设备。
在开始录制之前,
device
必须已以 WriteOnly 或 ReadWrite 模式打开。媒体记录器不拥有指定的
device
的所有权。如果已经开始录制,设备必须保持活动状态并保持打开,直到发出信号recorderStateChanged(StoppedState)
。此方法立即重置
actualLocation
,除非指定的device
为null
。如果为记录器分配了可写输出设备,
outputLocation
将被忽略,并且在开始记录时不会生成actualLocation
。这种行为在未来可能会改变,因此我们建议只设置一个输出,即outputLocation
或outputDevice
。QMediaRecorder::setOutputDevice
仅在 FFmpeg 后端支持。属性
outputLocationᅟ
的设置器。属性
qualityᅟ
的设置器。- setVideoBitRate(bitRate)¶
- Parameters:
bitRate – int
设置视频的
bitRate
,单位为每秒比特。另请参阅
属性
videoBitRateᅟ
的设置器。- setVideoFrameRate(frameRate)¶
- Parameters:
frameRate – 浮点数
设置视频的
frameRate
。值为0表示记录器应根据视频源可用的内容和编解码器的限制做出最佳选择。
另请参阅
属性
videoFrameRateᅟ
的设置器。设置编码视频的分辨率为
size
。传递一个空的QSize,让记录器根据视频源可用的内容和编解码器的限制选择最佳分辨率。
另请参阅
属性
videoResolutionᅟ
的设置器。- setVideoResolution(width, height)
- Parameters:
width – int
height – int
设置编码视频分辨率的
width
和height
。这是一个重载函数。
- stop()¶
记录器将停止录制。然而,处理待处理的视频和音频数据可能仍需要一些时间。一旦媒体记录器的状态变为
StoppedState
,录制就完成了。- videoBitRate()¶
- Return type:
整数
返回压缩视频流的比特率,单位为每秒比特。
另请参阅
属性
videoBitRateᅟ
的获取器。- videoBitRateChanged()¶
当录制视频的比特率发生变化时发出信号。
属性
videoBitRateᅟ
的通知信号。- videoFrameRate()¶
- Return type:
浮点数
返回视频帧率。
另请参阅
获取属性
videoFrameRateᅟ
的Getter。- videoFrameRateChanged()¶
当录制视频帧率变化时发出信号。
属性
videoFrameRateᅟ
的通知信号。返回编码视频的分辨率。
另请参阅
属性
videoResolutionᅟ
的获取器。- videoResolutionChanged()¶
当视频录制分辨率发生变化时发出信号。
属性
videoResolutionᅟ
的通知信号。