如何修复 iOS 13.1.2 AudioKit.renderToFile 异常:AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph,

Posted

技术标签:

【中文标题】如何修复 iOS 13.1.2 AudioKit.renderToFile 异常:AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph, *GetInputNode())):错误 -10868【英文标题】:How to fix iOS 13.1.2 AudioKit.renderToFile exception: AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph, *GetInputNode())): error -10868 【发布时间】:2019-10-08 17:38:19 【问题描述】:

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

【问题讨论】:

【参考方案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 与他们联系。

可能是同一个问题。

【讨论】:

以上是关于如何修复 iOS 13.1.2 AudioKit.renderToFile 异常:AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph,的主要内容,如果未能解决你的问题,请参考以下文章

AudioKit (iOS) - 为频率/幅度变化添加观察者

AudioKit iOS 设置输入输出设备

使用AudioKit测量声音(频率加权)的声音水平

AudioKit iOS - 收到MIDINoteOn 功能

AudioKit 教程:入门

AudioKit - 获取特定频率的问题(高于 20kHz)