Ios 音频缓冲区列表在Swift中分配
我正在努力使用这个API和Swift中的语法Ios 音频缓冲区列表在Swift中分配,ios,swift3,core-audio,audiobuffer,audiobufferlist,Ios,Swift3,Core Audio,Audiobuffer,Audiobufferlist,我正在努力使用这个API和Swift中的语法 audioBufferList = AudioBufferList(mNumberBuffers: 2, mBuffers: (AudioBuffer)) 我不知道()的(AudioBuffer)是什么意思?有什么想法吗?我如何初始化它?这来自标题: public struct AudioBufferList { public var mNumberBuffers: UInt32 public var mBuffers
audioBufferList = AudioBufferList(mNumberBuffers: 2, mBuffers: (AudioBuffer))
我不知道()的(AudioBuffer)是什么意思?有什么想法吗?我如何初始化它?这来自标题:
public struct AudioBufferList {
public var mNumberBuffers: UInt32
public var mBuffers: (AudioBuffer) // this is a variable length array of mNumberBuffers elements
public init()
public init(mNumberBuffers: UInt32, mBuffers: (AudioBuffer))
}
以下是使用一个空单声道缓冲区数组初始化AudioBufferList的一种方法,您可以将其传递给音频单元调用,例如AudioUnitRender(),然后根据需要分配和填充缓冲区:
var bufferList = AudioBufferList(
mNumberBuffers: 1,
mBuffers: AudioBuffer(
mNumberChannels: UInt32(1),
mDataByteSize: 1024,
mData: nil))
通过以下方式使用
AVAudioPCMBuffer
类解决了此问题:
import-AVFoundation
//非交叉立体数据
let processingFormat=AVAudioFormat(
commonFormat:.pcmFormatFloat32,
采样器:44100,
频道:2,
交错:假
)!
//此行还创建AudioBufferList实例。
let buffer=AVAudioPCMBuffer(
pcmFormat:processingFormat,
帧容量:1024)!
//此行更新mDataByteSize属性
buffer.frameLength=1024
let bufferList:UnsafePointer=buffer.audioBufferList
print(bufferList.pointee)//Prints:AudioBufferList(mNumberBuffers:2,mbuffer:C.AudioBuffer(mNumberChannels:1,mDataByteSize:4096,mData:Optional(0x00007ff253840e00)))
这取决于您想在何处使用它。不管怎样,看看这个。如果这还不足以解决您的问题,您可能需要编辑您的问题并包含更多的上下文。在同一个缓冲区列表中有两个缓冲区,语法是什么?