首页 > 解决方案 > 将输入节点连接到 AVAudioSinkNode 时出错

问题描述

连接节点时出现错误

let sourceNode = AVAudioSinkNode { (test1, frameCount, audioBufferList) -> OSStatus in
    print("callback", self.testInteger)
    return noErr
}
audioEngine.attach(sourceNode)
audioEngine.connect(audioEngine.inputNode, to: sourceNode, format: nil)

[aurioc] AURemoteIO.cpp: 1086: Initialize: failed: -10851 (启用 1, outf <2 ch, 0 Hz, Float32, non-inter> inf <2 ch, 0 Hz, Float32, non-inter>)

在那之后的错误try audioEngine.start ()

[avae] AVAEInternal.h: 88 所需条件为假:[AVAudioEngineGraph.mm:1415:Initialize: (IsFormatSampleRateAndChannelCountValid (inputHWFormat))] [avae] AVAudioEngine.mm:160 Engine @ 0x2836a8940: 无法初始化,错误 = -10875 [ avae] AVAEInternal.h: 88 所需条件为假:[AVAudioEngineGraph.mm:1415:Initialize: (IsFormatSampleRateAndChannelCountValid (inputHWFormat))]

我也试过

audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.inputFormat (forBus: 0))

audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.outputFormat (forBus: 0))

在这两种情况下,应用程序崩溃并出现错误“由于未捕获的异常'com.apple.coreaudio.avfaudio'而终止应用程序,原因:'所需条件为假:IsFormatSampleRateAndChannelCountValid(格式)”

标签: swiftavfoundationcore-audioavaudioengine

解决方案


我发现有必要将音频会话的类别 playAndRecord

try audioSession.setCategory (.playAndRecord, mode: .spokenAudio, options: .defaultToSpeaker)

在这种情况下,此选项有效

audioEngine.connect (audioEngine.inputNode, to: sourceNode, format: audioEngine.inputNode.inputFormat (forBus: 0))

推荐阅读