AVAudioEngine: HALC_ShellObject 错误,没有音频我什至可以寻找什么?

问题描述

在通过 Mac Catalyst 在 Mac 上运行的 iOS 应用程序中,我使用 AVAudioEngine 播放捆绑中的音频文件。这在我的 iOS 设备上完全正常,但在 Mac 上却没有。代码非常简单。我现有的项目在第一个 UIViewController 的 viewDidAppear 方法中都有这个代码:

if let audioFileURL = Bundle.main.url(forResource: "audio",withExtension: "mp3") {
    if let audioFile = try? AVAudioFile(forReading: audioFileURL) {
        self.engine = AVAudioEngine()
        self.player = AVAudioPlayerNode()
                
        self.engine.attach(self.player)
        self.engine.connect(self.player,to: self.engine.mainMixerNode,format: audioFile.processingFormat)
                
        do {
            try engine.start()
                    
            self.player.scheduleFile(audioFile,at: nil)
            self.player.play()
        } catch let error {
            print("Error starting engine: \(error)")
        }
    }
}

强调:引擎和播放器节点都是使用它们的类的属性。

这段代码在 Mac 上启用 Catalyst 的全新 iOS 项目中完美运行。这个完全相同的代码在我一周前启动的应用程序中不起作用。相反,我在日志中收到了一些错误。

调用 engine.start() 时:

2021-02-04 16:38:20.540726+0100 AudioVision[20560:882974]  HALC_ShellObject::HasProperty: call to the proxy failed,Error: -308 (\M^?\M^?\M-~\M-L)
2021-02-04 16:38:20.542025+0100 AudioVision[20560:882974]  HALC_ProxySystem::GetObjectInfo: got an error from the server,Error: 560947818 (!obj)
2021-02-04 16:38:20.542126+0100 AudioVision[20560:882974]  HALC_ShellObject::HasProperty: there is no proxy object
2021-02-04 16:38:20.545358+0100 AudioVision[20560:882974]  HALC_ProxySystem::GetObjectInfo: got an error from the server,Error: 560947818 (!obj)
2021-02-04 16:38:20.545414+0100 AudioVision[20560:882974]  HALC_ShellObject::HasProperty: there is no proxy object
2021-02-04 16:38:20.546011+0100 AudioVision[20560:882974]  HALC_ProxySystem::GetObjectInfo: got an error from the server,Error: 560947818 (!obj)
2021-02-04 16:38:20.546052+0100 AudioVision[20560:882974]  HALC_ShellObject::HasProperty: there is no proxy object
2021-02-04 16:38:20.546154+0100 AudioVision[20560:882974]  HALC_ProxySystem::GetObjectInfo: got an error from the server,Error: 560947818 (!obj)
2021-02-04 16:38:20.546195+0100 AudioVision[20560:882974]  HALC_ShellObject::HasProperty: there is no proxy object
2021-02-04 16:38:20.546263+0100 AudioVision[20560:882974]  AudioObjectRemovePropertyListener: no object with given ID 320
2021-02-04 16:38:20.546326+0100 AudioVision[20560:882974]  AudioObjectRemovePropertyListener: no object with given ID 320
2021-02-04 16:38:20.546367+0100 AudioVision[20560:882974]  AudioObjectRemovePropertyListener: no object with given ID 320

但应用不会崩溃,也不会抛出异常。它只是假装一切都很好,只是没有播放音频。同样,完全相同的代码在新的 Mac Catalyst 项目中也能正常工作。

我一生都找不到关于这些日志条目的任何信息。它们不会出现在正在运行的新项目中。我没有在整个应用中对音频做任何其他事情,只是在 MTKView 中渲染一些内容。

有谁知道我什至可以寻找什么来找到原因?

该应用面向 macOS 11.1/iOS 14.3,并且在这两种情况下都可以在 macOS Big Sur 11.2 和 iPadOS 14.4 上运行。

编辑:进一步调查表明 AVAudioPlayer 可以正常播放音频。出现相同的日志消息,但音频有效。现在我完全困惑了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)