【问题标题】:AVPlayer won't play audio despite no errors尽管没有错误,AVPlayer 不会播放音频
【发布时间】:2017-05-17 13:23:10
【问题描述】:

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

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

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

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

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

任何想法可能导致这种情况?我没有想法。

【问题讨论】:

    标签: ios swift avplayer avplayeritem


    【解决方案1】:

    不确定这是否是答案,但您可能想为您的音频设置 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

    【讨论】:

    • 感谢您的回答和链接,很好的建议!但是,我已经在做这些事情了。 ://
    • 对不起,老实说,我无法提供更多帮助,我也在处理一堆 AVPlayer 奇怪的行为。如果我发现任何东西或想到一个想法,我会告诉你的!祝你好运:)
    • 设置好类型后需要激活会话:AVAudioSession.sharedInstance().setActive(, with:)(docs)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 2023-04-06
    相关资源
    最近更新 更多