4K 不再只能手切 —— 自动升档能升上去了,而且缓冲比过去厚一倍;顺带把「判死后白等半分钟」压到 17 毫秒。
变更
- 升档的地板改成「容得下两次本档往返」(P11-222)。此前要求「缓冲 ≥30 秒」,而按需拉取让缓冲常驻 9~18 秒 ⇒ 普通升档结构性进不去 4K(只有偶然堆到 35 秒以上才走「试探」路)。现在 4K 的地板按它自己的实测往返算(4K 往返 7 秒 ⇒ 地板 15 秒),真机实测 4K 开始能自动升上去。
- 升 4K 加厚垫子 + 高档一笔多搬一段(P11-225)。真机发现:自动升的 4K 每次 10 秒后被降回来(切轨等待期把
10 秒垫子耗光),根因是「每笔只搬 2 段、往返 9.2 秒 ⇒ 净攒只有 1.8 秒 ⇒ 水位永远到不了升档门槛」。现在 ≥1440p 在水位健康时一笔搬 3 段(净攒 +7.3 秒),顶档(4K)升档地板提到 20 秒。真机实测:缓冲从常驻 612 秒变为最高 49.6 秒(30 个采样里 18 个 ≥20 秒)。 - 判死立即上抛(P11-223)。SABR 会话被判死(InvalidPoToken / RELOAD / SABR_ERROR)后,取流侧早已停止发请求,但错误在播放器眼里只是「一次分片失败」⇒ 媒体框架按自己的节拍继续重试,实测判死到上抛要 3.05 / 13.96 / 31.87 秒,那段时间用户就是干等。现在终态错误标成不可重试 ⇒ 实测 17 毫秒。
- 单笔上限不再随缓冲缩(P11-224,回退上一版的错向改动)。实测那一刀会把 4K/1440p 的大段慢传(本来 7~13 秒)在 3 秒切断,而每次读超时都会丢掉整个会话 ⇒ 会话反复重建。现在余量逻辑改用在静默(多久没有新字节)上:慢滴有字节在传 ⇒ 不触发;真挂死才按缓冲余量提前切。
- 空窗不再算进带宽,并让「有请求没回复」可见(P11-221)。两次请求之间本来就不会有新流量,过去那段空窗会被当成「低带宽」把估计拉低(每次满缓冲停拉都要中招);现在只记日志、不入账,同时把「一笔请求一个媒体字节都没拿到」单列成一类证据(日志
zero-reply #N)。
已知
- 换会话必然有一段时间画面停住(实测 7.8~20.7 秒):会话在构建播放源时被绑定,无法就地替换;而挂死时服务端不会给「换节点」的重定向 ⇒ 只能整场重建。下一步计划:同一会话连续 3 笔零回复 ⇒ 提前触发重建(把「反复卡顿两分钟」换成「一次冻结」)。
- pot-less 会话仍会概率性被服务端判
status=3(与 token、与形状无关)。 - 4K 的垫子现在够厚了,但一次零字节挂死会把该档的「往返证据」污染成最坏值,于是垫子够厚时也会判降档;待改(失败样本不参与「垫子够不够」的判据)。
- 内存:4K 单笔峰值从 31MB 升到 47MB(+50%),记录在案。
- alpha.5~alpha.13 里记的已知项仍未变。