PySide6.QtMultimedia.QAudioBufferInput¶
- class QAudioBufferInput¶
QAudioBufferInput类用于通过QMediaCaptureSession向QMediaRecorder提供自定义音频缓冲区。更多…在版本6.8中添加。
概要¶
方法¶
def
__init__()def
captureSession()def
format()
信号¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QAudioBufferInput仅在 FFmpeg 后端支持。可以通过将
QAudioBufferInput和QMediaRecorder连接到QMediaCaptureSession来录制自定义音频缓冲区。对于拉取模式的实现,响应readyToSendAudioBuffer()信号调用sendAudioBuffer()。在下面的代码片段中,这是通过将信号连接到自定义媒体生成器类中的一个槽函数来实现的。该槽函数发出另一个带有新音频缓冲区的信号,该信号连接到sendAudioBuffer():session = QMediaCaptureSession() recorder = QMediaRecorder() audioInput = QAudioBufferInput() session.setRecorder(recorder) session.setAudioBufferInput(audioInput) MediaGenerator generator # Custom class providing audio buffers audioInput.readyToSendAudioBuffer.connect( generator.nextAudioBuffer) generator.audioBufferReady.connect( audioInput.sendAudioBuffer) recorder.record()
这是一个提供音频缓冲区的最小槽函数实现:
def nextAudioBuffer(self): buffer = nextBuffer() audioBufferReady.emit(buffer)
更多详情请参见
readyToSendAudioBuffer()和sendAudioBuffer()。使用
parent构造一个新的QAudioBufferInput对象。- __init__(format[, parent=None])
- Parameters:
format –
QAudioFormatparent –
QObject
使用音频
format和parent构造一个新的QAudioBufferInput对象。指定的
format将作为调用record()时初始化匹配音频编码器的提示。如果未指定格式或格式无效,音频编码器将在发送第一个音频缓冲区时初始化。如果您提前知道要发送的音频缓冲区类型,我们建议指定格式。
- captureSession()¶
- Return type:
返回此音频缓冲区输入所连接的捕获会话,如果音频缓冲区输入未连接到捕获会话,则返回
nullptr。使用
setAudioBufferInput()将音频缓冲区输入连接到会话。- format()¶
- Return type:
返回在音频缓冲区输入构造时指定的音频格式。
- readyToSendAudioBuffer()¶
表示可以将新的音频缓冲区发送到音频缓冲区输入。接收到信号后,如果您有要发送的音频数据,请调用
sendAudioBuffer一次或循环调用,直到它返回false。另请参阅
- sendAudioBuffer(audioBuffer)¶
- Parameters:
audioBuffer –
QAudioBuffer- Return type:
布尔
通过
QMediaCaptureSession将QAudioBuffer发送到QMediaRecorder。如果指定的
audioBuffer已成功发送到目的地,则返回true。如果缓冲区未发送,则返回false,这可能发生在实例未分配给QMediaCaptureSession、会话没有媒体记录器、媒体记录器未启动或其队列已满的情况下。一旦目的地能够处理新的音频缓冲区,readyToSendAudioBuffer()信号将被发出。发送一个空的音频缓冲区被
QMediaRecorder视为输入流的结束。如果autoStop为true并且所有输入都报告了流的结束,QMediaRecorder会自动停止录制。