ios - 如何修复 iOS 13.1.2 AudioKit.renderToFile 异常:AUGraphParser::InitializeActiveNodesInInputChain(ThisGraph, *GetInputNode())):错误 -10868
问题描述
我在 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
解决方案
我的AVAudioEngine
设置代码也有同样的问题。如果您-10868
在OSStatus 页面上检查此错误代码,
您会发现错误描述为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 问题跟踪器上与他们联系。
可能是同一个问题。
推荐阅读
- jenkins - 使用 CLI 对远程 jenkins 进行身份验证
- javascript - 有效地验证页面上的数据在您加载后没有被其他人更改?
- visual-studio - 将文件添加到 nuget 包
- flutter - 颤振扩展面板
- python - 如何在 Python 中求解矩阵方程组?
- php - 有没有办法在不使用数据库的情况下创建群聊?
- events - 是什么决定了哪个事件将首先运行?
- javascript - 未使用 nuxt 和 storyblok 呈现数据
- sql - 将来自 SQL 查询的列表结果列表存储在 Pandas 数据框中,其中包含数据框中的相应行
- java - Java 应用程序拒绝将输出显示为浮点数。试过铸造,乘1.0,加0.0,没有用