暂停一分钟后音频播放器变得无响应

Audio player becomes unresponsive after paused for a minute

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

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

据我所知,在音频播放器停止工作时以及在此状态下点击 play/pause 时都没有记录任何有用的信息。我试过看看 OS 是否会杀死音频播放器,这样我就可以重新初始化,但情况似乎也不是这样。

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

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

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

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