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 –
QAudioFormat
parent –
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
会自动停止录制。