StreamMusic
StreamMusic copied to clipboard
长音频播放进度续播异常问题与优化建议
Steps to reproduce(重现步骤)
在处理较长音频文件(如时长 20 分钟)的播放过程中,存在播放进度续播行为不一致的现象,具体表现为:
- 可续播场景:用户在 9 分钟处 停止播放并退出 App,重新启动后能从 9 分钟位置继续播放。
- 不可续播场景:用户在 15 分钟处 停止播放并退出 App,重新启动后 从起始位置开始播放,无法续播。
经多次观察与分析,该现象的根本原因如下:
App 在重新打开时,仅加载音频文件的前 固定时长片段(假设 10 分钟) 到本地缓存或播放缓冲区。
播放进度是否能够续播,取决于 上次停止的播放位置是否在已加载的音频片段范围内:
- 若停止位置 ≤ 加载时长(如 ≤10 分钟) → 可定位至该位置继续播放;
- 若停止位置 > 加载时长(如 >10 分钟) → 目标位置尚未加载,系统无法定位,触发从头播放逻辑。
因此,当前续播机制依赖于 音频预加载范围 与 播放进度的相对关系,导致超过预加载窗口的播放位置无法被恢复。
建议方案: 根据用户历史播放进度动态调整初始加载范围:
应用启动时,除默认加载前 x 分钟外,检查是否存在“未完成播放记录”; 若存在且上次播放位置 > xmin(如 15min),则将预加载窗口扩展至该位置前后一定区间(如 ±2min); 或采用分段加载策略:优先加载包含目标位置的小片段,再后台补齐其余内容。
Expected results(预期结果)
基于对“长音频播放进度续播异常”问题的分析与所提解决方案,预期实现以下改进效果:
播放进度恢复行为一致化:无论用户在 9 分钟或 15 分钟处停止播放,重新打开 App 后均能正确恢复至上次中断位置,消除因预加载范围限制导致的续播失败差异。
超出预加载范围仍可续播:当播放位置超过初始加载时长(如 >10 分钟)时,系统通过渐进式加载或动态扩展缓冲区,确保目标时间点可被定位并播放。
Actual results(实际结果)
播放进度是否能够续播,取决于 上次停止的播放位置是否在已加载的音频片段范围内:
- 若停止位置 ≤ 加载时长(如 ≤10 分钟) → 可定位至该位置继续播放;
- 若停止位置 > 加载时长(如 >10 分钟) → 目标位置尚未加载,系统无法定位,触发从头播放逻辑。
Server Type(服务器类型)
Navidrome
Server Version(服务器版本)
0.54.4
Client Version(客户端版本)
1.3.9
Operating System(操作系统)
iOS
Connection Type(连接类型)
Direct Mode(直连模式)
Additional Information(附加信息)
No response