首页 > 解决方案 > 音频播放器在暂停一分钟后变得无响应

问题描述

使用 just_audio 和 audio_service 构建音频流应用程序。它使用 HLS url 流来获取音频。当音频正在播放并且设备被锁定时,控件将显示在锁定屏幕上并使用播放/暂停正常工作。但是,如果音频暂停大约一分钟或更长时间,则点击播放按钮,锁定屏幕控件将变为灰色。然后我将打开应用程序并尝试在视图中点击播放,音频处理状态将变为空闲,没有其他任何反应。

我想知道它是否与 HLS 流有关。播放器“中断”之前必须暂停的时间量有所不同,但似乎与缓冲的音频量一致。因此,如果音频暂停的时间少于缓冲量,则播放/暂停可以正常工作,但如果它通过了,那么我会遇到这个问题。

据我所知,在音频播放器停止工作时,以及在此状态下点击播放/暂停时,都没有记录任何有用的信息。我试图查看操作系统是否会杀死音频播放器,以便我可以重新初始化,但似乎也并非如此。

标签: just-audio

解决方案


想通了这一点,但是,我不确定这是最好的解决方案。

一方面是我们用于直播的 HLS url 的提供者能够将会话超时从 45 秒增加到 5 分钟。这样做似乎没有任何负面行为。当音频暂停超过一分钟时,它以某种方式阻止背景控件中断(变灰)(这会有所不同,并且似乎与会话超时没有直接关系,所以也许一些神奇的 iOS 也在做,谁知道) .

另一部分是当用户锁定他们的设备并与后台播放器交互时,如果他们回到应用程序并尝试切换音频源,音频播放器的深处就会出现故障。为了“解决”这个问题,当从直播流切换到非 HLS url 时,我现在在处理程序中的音频播放器上调用 dispose,然后重新初始化它。

这解决了我的问题,但我认为存在更好的解决方案。对于我的具体情况,使用 SwitchAudioHandler 可能是更好的解决方案,但我没有时间尝试。


推荐阅读