如何修复iOS 13.1.2 AudioKit.renderToFile异常:AUGraphParser :: InitializeActiveNodesInInputChain(ThisGraph,* GetInputNode())):错误-10868

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

我在iOS 13.1.2和AudioKit 4.9中遇到了这个问题。使用iPhone XS进行测试。

我正在尝试使用此代码呈现剪辑记录器结果:

        func preRender() {

            var scheduleTime : TimeInterval = 2
            let dspTime = AVAudioTime(sampleTime: AVAudioFramePosition(scheduleTime * AKSettings.sampleRate), atRate: AKSettings.sampleRate)
            if !clipsOnly {
                self.musicPlayer.play(at: dspTime)
                scheduleTime += 2
            }
            self.clipPlayer.play(at: dspTime)
        }


        let writeFile = try AKAudioFile()
        try AudioKit.renderToFile(writeFile, duration: duration + 2.0,
                                      prerender: preRender)

预期的结果是呈现的音频文件。上面的代码在带有iOS 13.1.2的模拟器中以及带有iOS 12的设备上都可以很好地工作。

实际结果是:

[avae]            AVAEInternal.h:109   [AVAudioEngineGraph.mm:1397:Initialize: (err = AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph, *GetInputNode())): error -10868
ios swift core-audio audio-recording audiokit
1个回答
1
投票

我的AVAudioEngine设置代码存在相同的问题。如果您在-10868上检查此错误代码OSStatus page您将发现错误描述为kAudioUnitErr_FormatNotSupported

这意味着某些更深的音频设置代码失败,因为使用了不支持的音频格式。

重要的是要在处理原始音频数据时知道使用哪种音频格式。如果两个不同的音频样本的音频格式不相等,则不能仅对其进行合并/混合。需要音频转换。

我肯定知道Apple代码中的某些内容已更改。不再允许某些音频格式。 AVAudioEngineAVAudioNode's对于不同的iOS版本接受不同的格式:

  • iOS 12的作品。

  • iOS 13.1.2。 (以您的情况为准)不起作用。

  • iOS 13.3.1。 (以我为例)不起作用。

  • iOS 13.4。 (就我而言)有效(针对某些类似但其他音频错误)。

到目前为止,基础代码已更改,因此我的代码在iOS 13.4下。适用于iOS 13.3.1。产生声音伪像,使音频回调无法使用。

我正在研究此特定音频格式不匹配错误的解决方案。就您而言,我建议您在iOS 13.4下测试相同的代码。

您将无法解决代码中的问题,因为它在AudioKit中。 AudioKit需要解决Apple对基础音频代码所做的更改。修复问题后,我将发布解决方案并通过他们的GitHub issue tracker与他们联系。

可能是同一问题。

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