AudioKit 与 AVAudioSinkNode 结合

问题描述 投票:0回答:1

我正在尝试将 AVAudioSinkNode 与 AudioKit 结合使用。在下面的代码中,这是流程:

Input > Fader > Output
。虽然
SinkNode
附加到
Fader
.

SinkNode 工作,但链上更远的音频被静音。我希望听到所有输入音频,但根本没有音频。

如果我从

attach
函数中删除
connect
start
,正常流程工作正常(输入发送到输出)。但显然 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
但它对我的需求来说太慢了。

ios audiokit avaudioengine
1个回答
0
投票

我需要使用接受

engine.avEngine.connect(inputMonitoringNode.avAudioNode, to: sinkNode, format: nil)
的连接功能,而不是使用
AVAudioConnectionPoint

现在我仍然有一个问题,但是是另一种问题。在添加

AVAudioSinkNode
的点之前添加的任何音频效果都会失真。在我看来,这是一个格式问题,但我无法弄清楚。有人有想法吗?

© www.soinside.com 2019 - 2024. All rights reserved.