diff --git a/changelogs/2026-07/16_notice_grassland_guide_4k_playback_buffering.md b/changelogs/2026-07/16_notice_grassland_guide_4k_playback_buffering.md new file mode 100644 index 0000000..5349de1 --- /dev/null +++ b/changelogs/2026-07/16_notice_grassland_guide_4k_playback_buffering.md @@ -0,0 +1,122 @@ +# 草原指南 4K 原片播放缓冲优化通知 + +> 日期:2026-07-16 +> +> 前端仓库:`mmg/hl-ui` +> +> 影响页面:草原指南 H5 详情/播放页 +> +> 本次后端接口、字段和 OSS 地址均无变化 + +## 1. 问题与诊断结论 + +草原指南详情直接播放后端返回的 OSS 原始 MP4。正式环境真实 4K 样本的媒体参数为: + +- 文件约 `451.74 MiB`,时长约 `95` 秒。 +- 分辨率 `3812 × 2160`,`60 fps`。 +- H.264 Main Profile,Level `5.2`。 +- 平均码率约 `40.20 Mbps`。 +- `1x` 播放时短时峰值约 `72.98 Mbps`。 +- `2x` 播放时平均网络消耗约 `80.40 Mbps`;短时峰值约 `142.17 Mbps`。 + +正式 OSS 已支持 HTTP Range,请求返回 `206 Partial Content`。同一诊断环境连续读取 OSS Range 的平均速度约 `230.52 Mbps`,高于该视频 `2x` 播放的短时峰值。因此目前没有证据表明 Java 服务或 OSS Range 能力是主要瓶颈;但该结果不代表每个用户到 OSS 的实时链路都能达到相同速度。 + +现已确认 `1x` 也会偶发卡顿。结合 `1x` 接近 `73 Mbps` 的短时峰值,更可能是用户链路瞬时波动与浏览器前向缓冲较浅共同造成:即使平均网速高于视频平均码率,只要短时间下载速度低于瞬时消耗速度,缓冲仍可能耗尽。因此首次 `1x` 播放和卡顿恢复也必须执行缓冲水位保护,不能只处理 `2x`。 + +此外,`4K 60 fps` 在 `2x` 下相当于设备需要承担接近 `120 fps` 的解码节奏。部分设备即使网络充足,也可能因硬件解码能力不足出现掉帧;前端需要把“等待网络缓冲”和“设备解码掉帧”分别记录。 + +## 2. 前端处理要求 + +### 2.1 保持原生 Range 播放 + +- 继续直接使用接口返回的 `videoUrl` 作为 `