feat(playback): 拥塞网络退避重试 + mpv 缓冲加大

针对公司共享出口(整栋楼抢网):
- 恢复退避:连续失败 3 次后 30s、4 次 60s、5 次 120s,
  冷却结束自动再试一次;累计 6 次后停止,等用户手动点
- 用户手动点播放会清零退避计数
- 成功出声(position>1s)后清零
- mpv 缓冲加大:cache-secs=60s、demuxer-max-bytes=64MiB、
  demuxer-readahead-secs=30

真机验证:缓冲参数设置成功,起播 1576ms(此前 2098ms)。
This commit is contained in:
2026-10-31 22:03:09 +08:00
parent 5c4b0c2728
commit 30e68780f4
2 changed files with 67 additions and 6 deletions
+14
View File
@@ -41,6 +41,20 @@ class PlaybackService {
return;
}
_player = Player();
// 拥塞网络(公司共享出口)下加大缓冲:多存一点余量,
// 减少"播到一半断流 -> 重连"的次数。代价是起播稍慢。
// 通过 platform 动态调用,避免依赖 media_kit 的内部类型。
try {
final platform = _player!.platform as dynamic;
platform.setProperty('cache-secs', '60');
platform.setProperty('demuxer-max-bytes', '64MiB');
platform.setProperty('demuxer-readahead-secs', '30');
debugPrint('✅ [PlaybackService] mpv 缓冲参数已设置(cache 60s / 64MiB)');
} catch (e) {
debugPrint('⚠️ [PlaybackService] 设置 mpv 缓冲参数失败: $e');
}
_initialized = true;
debugPrint(
'✅ [PlaybackService] Player 已创建, serviceId=$_serviceId, player=${_player.hashCode}');