我正在使用通常的设置从设备的麦克风AVAudioEngine
获取流。AVAudioPCMBuffers
installTap(onBus:)
为了将音频流分发到程序的其他部分,我将缓冲区发送到类似于以下内容的组合发布者:
private let publisher = PassthroughSubject<AVAudioPCMBuffer, Never>()
我开始怀疑缓冲区存在某种并发或内存管理问题,因为在其他地方使用缓冲区时,我遇到了一系列崩溃,表明缓冲区中的某些内部指针为 NULL(具体来说,我是vDSP.convertElements(of:to:)
当我尝试使用 ) 从缓冲区中读取样本时看到崩溃floatChannelData
。
这些崩溃正在生产中并且相当罕见——我无法在本地重现它们。
我从不修改音频缓冲区,只读取它们进行分析。
我的问题是:是否可以放入AVAudioPCMBuffers
组合管道?该类不会像我假设的AVAudioPCMBuffer
那样保留/释放底层的内存吗?AudioBufferList
这是一个根本有缺陷的方法吗?