只要代码到达
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) {[weak self] (buffer:AVAudioPCMBuffer, when:AVAudioTime)
,应用因以下错误而崩溃
由于未捕获的异常'com.apple.coreaudio.avfaudio'而终止应用程序,原因:'所需条件为假:format.sampleRate == hwFormat.sampleRate'
在添加另一个水龙头之前,我厌倦了拆除水龙头,并且确保不要添加多个水龙头。 奇怪的是,该应用程序在小于12的iOS上可以正常运行,并且在所有模拟器上都可以正常运行。
它仅在具有iOS 12的真实设备上崩溃。 我尝试寻找解决方案,但找不到任何东西。
答案 0 :(得分:3)
这是采样率不匹配。
无法更改输入节点的格式,因此需要对其进行匹配。 installTap
侦听节点的输出,因此请使用inputNode的输出格式。
inputNode.installTap(onBus: 0, bufferSize: 1024, format: inputNode.outputFormat(forBus: 0))
另一个选择是将输入连接到混音器,然后使用首选的录制格式点击混音器。混频器在其输入和输出之间执行隐式采样率转换。
答案 1 :(得分:-1)
我发现唯一可以改变采样率的东西是
AVAudioSettings.sharedInstance().setPreferredSampleRate(...)
不幸的是,尽管似乎8000、12000、16000、22050、44100都可以正常工作,但不能保证将获得所需的采样率。
以下内容无效:
这是iOS 12.3.1。