使用您想要从中获取数据的节点 . 我在上面的引文中使用了AKNodeOutputPlot,因为它非常简单,只是将该数据用作绘图的输入,但是您可以获取数据并对其执行任何操作 . 在此代码中(来自AKNodeOutputPlot):
internal func setupNode(_ input: AKNode?) {
if !isConnected {
input?.avAudioNode.installTap(
onBus: 0,
bufferSize: bufferSize,
format: nil) { [weak self] (buffer, _) in
guard let strongSelf = self else {
AKLog("Unable to create strong reference to self")
return
}
buffer.frameLength = strongSelf.bufferSize
let offset = Int(buffer.frameCapacity - buffer.frameLength)
if let tail = buffer.floatChannelData?[0] {
strongSelf.updateBuffer(&tail[offset], withBufferSize: strongSelf.bufferSize)
}
}
}
isConnected = true
}
您可以实时获取缓冲区数据 . 在这里,我们只是将它发送到“updateBuffer”,在那里它被绘制,但不是绘图,你会做其他事情 .