just-audio - 音频播放器在暂停一分钟后变得无响应
问题描述
使用 just_audio 和 audio_service 构建音频流应用程序。它使用 HLS url 流来获取音频。当音频正在播放并且设备被锁定时,控件将显示在锁定屏幕上并使用播放/暂停正常工作。但是,如果音频暂停大约一分钟或更长时间,则点击播放按钮,锁定屏幕控件将变为灰色。然后我将打开应用程序并尝试在视图中点击播放,音频处理状态将变为空闲,没有其他任何反应。
我想知道它是否与 HLS 流有关。播放器“中断”之前必须暂停的时间量有所不同,但似乎与缓冲的音频量一致。因此,如果音频暂停的时间少于缓冲量,则播放/暂停可以正常工作,但如果它通过了,那么我会遇到这个问题。
据我所知,在音频播放器停止工作时,以及在此状态下点击播放/暂停时,都没有记录任何有用的信息。我试图查看操作系统是否会杀死音频播放器,以便我可以重新初始化,但似乎也并非如此。
解决方案
想通了这一点,但是,我不确定这是最好的解决方案。
一方面是我们用于直播的 HLS url 的提供者能够将会话超时从 45 秒增加到 5 分钟。这样做似乎没有任何负面行为。当音频暂停超过一分钟时,它以某种方式阻止背景控件中断(变灰)(这会有所不同,并且似乎与会话超时没有直接关系,所以也许一些神奇的 iOS 也在做,谁知道) .
另一部分是当用户锁定他们的设备并与后台播放器交互时,如果他们回到应用程序并尝试切换音频源,音频播放器的深处就会出现故障。为了“解决”这个问题,当从直播流切换到非 HLS url 时,我现在在处理程序中的音频播放器上调用 dispose,然后重新初始化它。
这解决了我的问题,但我认为存在更好的解决方案。对于我的具体情况,使用 SwitchAudioHandler 可能是更好的解决方案,但我没有时间尝试。
推荐阅读
- javascript - 在 ServiceNow 的客户端创建一个类
- c# - 无法在 Visual Studio 2019 C# Windows 窗体应用程序上打开设计视图
- git - How can I use a dev dependency locally on my machine only and not have to push it to the team repo?
- r - How to create this type of numeric list?
- html - 如何在 HTML 页面中并排放置两个 div
- javascript - Slick Slider No Longer Scaling
- android - WebRTC: Undefined reference to "__real_malloc" in Android project linking with WebRTC library
- php - Can't read data that send from controller to view by foreach
- javascript - Some images break on load
- angular - 错误错误:未捕获(承诺):NullInjectorError:StaticInjectorError(AppModule)[FormBuilder]