尽管没有错误,AVPlayer仍然无法播放音频

时间:2017-05-17 13:23:10

标签: ios swift avplayer avplayeritem

在我的iOS应用中,我有一个自定义音频播放器类,可以使用基于URL的音频资源创建基础AVPlayer。这一切都非常普遍 - 根据URL加载AVPlayerItem,异步加载资产数据,然后用它来创建AVPlayer实例。

一切都很好,但我刚发现一个案例,AVPlayer加载音频资产并正确解析,但拒绝播放任何音频。

当我在启动应用程序之前启动了几个游戏时会发生这种情况。例如。我的世界和纪念碑谷。没有任何防错方法可以重现这一点(有时候会启动Minecraft导致出现此错误,有时候不会出现),但是如果我开始使用音频的几个游戏,最终会出现错误。

当我调试应用的当前状态时,AVPlayer没有错误。状态已准备好等等。一切看起来都应该如此。 AVPlayerItem也是如此。我没办法让应用程序播放音频...

...除非我启动Spotify并播放一首歌。这可以修复任何可能存在的音频锁并导致我的播放器无法播放。如果我然后离开Spotify并打开我的应用程序,我的音频播放器现在可以播放音频。

任何可能导致此问题的想法?我没有想法。

1 个答案:

答案 0 :(得分:0)

不确定答案是否正确,但您可能希望将AVSession设置为音频。 AVSession info他们告诉电话你的音频是否应该播放给其他人,如果有来电或者你去后台等应该停止等等

有些应用程序可能正在更改音频会话,而您没有正确指定您的会话。

我将此代码用于我的:

do {
   try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.interruptSpokenAudioAndMixWithOthers)
   }
 catch {
// report for an error  }

这是适用于我的类别选项,但AVPlayer有不同的选项,试着看看是否有帮助。

This are the different Category Options for AVSessions