问题描述
连接节点时出现错误
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:初始化:失败:-10851(启用1,outf inf )
此后,当try audioEngine.start ()
[avae] AVAEInternal.h:88必需条件为假:[AVAudioEngineGraph.mm:1415:Initialize:(IsFormatSampleRateAndChannelCountValid(inputHWFormat))] [avae] AVAudioEngine.mm:160引擎@ 0x2836a8940:无法初始化,错误= -10875 [avae] AVAEInternal.h:88必需条件为假:[AVAudioEngineGraph.mm:1415:Initialize:(IsFormatSampleRateAndChannelCountValid(inputHWFormat))]
我也尝试过
audioEngine.connect (audioEngine.inputNode,format: audioEngine.inputNode.inputFormat (forBus: 0))
和
audioEngine.connect (audioEngine.inputNode,format: audioEngine.inputNode.outputFormat (forBus: 0))
在这两种情况下,应用程序因错误而崩溃 “由于未捕获的异常'com.apple.coreaudio.avfaudio'而终止应用程序,原因:'所需条件为假:IsFormatSampleRateAndChannelCountValid(格式)”
解决方法
我发现问题在于必须将音频会话的类别playAndRecord
try audioSession.setCategory (.playAndRecord,mode: .spokenAudio,options: .defaultToSpeaker)
在这种情况下,此选项有效
audioEngine.connect (audioEngine.inputNode,to: sourceNode,format: audioEngine.inputNode.inputFormat (forBus: 0))