![](/img/trans.png)
[英]How to convert UnsafeMutablePointer<AudioBufferList> to AudioBuffer in Swift?
[英]How to convert to AVAudioPCMBuffer from AudioBufferList?
我正在努力轉換它。
我使用AudioUnit
參考This制作了AudioBufferList
數據。
並且它通過AudioUnitRender()
填充了音頻緩沖區數據。
var bufferList = AudioBufferList(
mNumberBuffers: 1,
mBuffers: AudioBuffer(
mNumberChannels: UInt32(2),
mDataByteSize: 16,
mData: nil))
if let au = audioObject.audioUnit {
err = AudioUnitRender(au,
ioActionFlags,
inTimeStamp,
inBusNumber,
frameCount,
&bufferList)
}
然后,我嘗試將其轉換為AudioBufferList
。 但是,它不起作用
以下是我所做的。
let audioFormat = AVAudioFormat(
commonFormat: AVAudioCommonFormat.pcmFormatFloat64,
sampleRate: recoder.sampleRate,
interleaved: false,
channelLayout: AVAudioChannelLayout(
layoutTag: kAudioChannelLayoutTag_Stereo
)!
)
guard let pcmBuffer = AVAudioPCMBuffer(
pcmFormat: audioFormat,
bufferListNoCopy: &bufferList
) else {
return
}
我收到的控制台消息。
AVAudioBuffer.mm:248 the number of buffers (1) does not match the format's number of channel streams (2)
請幫助我的人
謝謝你。
您創建的AudioBufferList
具有mNumberBuffers = 1
,而包含的單個AudioBuffer
具有mNumberChannels = 2
,因此整個緩沖區列表包含兩個交錯的通道。 您正在創建的AVAudioFormat
是非交錯立體聲,這就是您看到格式不匹配錯誤的原因。 您可以嘗試創建一個非交錯的AVAudioFormat
或使用AVAudioConverter
來解交錯數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.