【问题标题】:How to fix iOS 13.1.2 AudioKit.renderToFile exception: AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph, *GetInputNode())): error -10868如何修复 iOS 13.1.2 AudioKit.renderToFile 异常:AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph, *GetInputNode())):错误 -10868
【发布时间】:2025-11-30 10:05:02
【问题描述】:

我在 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】:

    我的AVAudioEngine 设置代码也有同样的问题。 如果您在OSStatus page 上检查此错误代码-10868 你会发现错误描述是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 与他们联系。

    可能是同一个问题。

    【讨论】: