AVPlayer不会播放音频,尽管没有错误

问题描述:

在我的iOS应用程序中,我有一个自定义音频播放器类,它创建基于URL的音频资产的底层AVPlayer。这一切都非常香草 - 根据URL加载AVPlayerItem,异步加载资产数据,然后使用它创建AVPlayer实例。AVPlayer不会播放音频,尽管没有错误

一切正常,但我刚刚发现AVPlayer加载音频资产并正确解析它的情况,但拒绝播放任何音频。

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

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

...除非我开始Spotify并播放歌曲。这可以修复任何可能存在的音频锁并导致我的播放器无法播放。如果我离开Spotify并打开我的应用,我的音频播放器现在可以播放音频。

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

不知道它是否是答案,但您可能需要为您的音频设置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

+0

感谢您的答案和链接,伟大的建议!但是,我已经做了这些事情。 :/ –

+0

对不起,我不能诚实地提供更多帮助,我也正在处理一堆AVPlayer奇怪的行为。如果我找到任何东西或想到一个想法,我会让你知道!祝你好运:) – baldemora

+0

谢谢,真的很感激! :) –