问题描述
在通过 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 (将#修改为@)