我尝试将AVAudioSinkNode与AudioKit结合使用。下面的代码是流程:Input > Fader > Output
。当SinkNode
连接到Fader
时。
SinkNode工作正常,但是音频链的更上层被静音了。我希望听到所有输入音频,但是根本没有音频。
如果我从start
函数中删除attach
和connect
,正常的流程可以正常工作(输入发送到输出)。但显然sinkNode不再获得任何音频。
如何确保SinkNode在获得音频的同时保持流的其余部分完好无损?
let sinkNode: AVAudioSinkNode
let inputMonitoringNode: Fader
private init() {
engine = AudioEngine()
inputMonitoringNode = Fader(engine.input!)
engine.output = inputMonitoringNode
sinkNode = AVAudioSinkNode() { (timestamp, frames, audioBufferList) in
// Store buffer to be processed in other thread
// Not using a tap because it's to slow
}
}
func start() {
do {
try engine.start()
} catch let err {
print(err)
}
if (!engine.avEngine.attachedNodes.contains(sinkNode)) {
engine.avEngine.attach(sinkNode)
engine.avEngine.connect(inputMonitoringNode.avAudioNode, to: sinkNode, format: nil)
}
}
我试过将SinkNode连接到其他节点,但没有结果。正如在评论中提到的,我也试过使用tap
,但它太慢了。
1条答案
按热度按时间jv4diomz1#
而不是使用
engine.avEngine.connect(inputMonitoringNode.avAudioNode, to: sinkNode, format: nil)
,我需要使用连接函数,接受AVAudioConnectionPoint
的。