把 WEB-SABR 会话的「身份与形状」整体对齐到采集回来的浏览器材料(P11-140)。这一版不改变外观,但它把 WEB-SABR 从「服务端直接判我们不合法」推进到「只剩一个具体缺口」,并首次拿到了决定性证据说明后续该往哪走。
变更
- WEB-SABR 会话的身份与形状改为「以采集材料为准」。此前我们用自己的身份字段去发这个会话,而服务端认定它不合法(每个请求都回「令牌无效」)。现在把采集到的浏览器原始请求里的身份信息与能力/偏好字段原样带过去 —— 于是静态部分与浏览器逐字段一致,而我们没建模的那十来个字段也不必猜(原样透传)。
- 进度与计时仍由我们给当前值。材料是「采集那一刻」的快照,照抄等于向服务端谎报播放进度;真实客户端也会推进这些值。所以:身份/能力/偏好以材料为准,播放进度/计时以当前值为准,而播放器实际要播的清晰度仍由我们决定(照抄材料的选定档会引发重载,已有实测)。
- 「选了哪些轨」的两个字段(轨道类型位、音轨 id)归属修正:它们属于「请求语义」而不是「身份/偏好」,本版拿回由我们自己填 —— 上一版把它们一并交给材料是分类错了。
进展与已知问题
- 服务端判决已升级(关键进展):同一视频、同一形态,从
InvalidPoToken(身份被判无效、会话直接死)变成sabr.no_audio_selected(一个明确的语义错误)。也就是说身份与形状这一层已经通过,剩下的是一个具体缺口。本版已针对该缺口修正了字段归属,待真机验证。 - 判别实验首次拿到结论:把「浏览器亲手产生、服务端已回 200」的那份材料经我们的通道原样重放,得到
status=1+ 完整媒体段(755KB)。⇒ 材料是好的,差异在我们自己的会话构造 —— 这直接说明「继续逐字段对齐」是正确方向,不必去动会话轮换或身份这条更重的杠杆。 - WEB-SABR 目前仍不能直接播;但会话被判死时会自动换到能播的路线(alpha.11 起),实测同一场靠兜底正常播放 20 段,所以日常观看不受影响。
- 取证工具修了两处(仅影响日志):我们自己的请求体日志此前被系统单行长度上限截断(丢掉的正好是身份段),采集回来的浏览器请求体内容此前根本没进日志(只有长度)—— 两处都改为分段输出,「我们的请求 vs 浏览器的请求」逐字段对比才第一次成立。这份对比正是本轮定位的依据。
- 历史遗留不变:升档预取本身仍未生效(其副作用已在 alpha.9 止住);移动端播放器不读「默认播放倍速」。