如何修复 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 代码中的某些内容发生了变化。不再允许某些音频格式。 AVAudioEngine
和 AVAudioNode'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) - 为频率/幅度变化添加观察者