输入节点连接到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:初始化:失败:-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))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...