画质不再乱掉 —— 上一版把续播打通之后,反馈集中在另一类症状上:画质会莫名其妙掉到最低档,而且掉下去就回不来。这一版连着修了三个不同的原因,并且都拿到了真机回归;另外移动端频道页补上了此前缺失的会员角标。
变更
- 开字幕会掉到 144p(P11-164)。开关字幕会让播放器重新选一次档,而重选时的「初始档」取的是列表最后一个 —— 也就是最低档。现在记住当前正在播的档,重选时先回到它。这个问题不只字幕能触发:任何一次选档重建都会踩到,字幕只是最常见的那个。
- 暂停一会儿之后砸到 144p(P11-167)。暂停时不再拉流,这段空白被带宽估计当成了「网络一个字节都收不到」,于是判定带宽归零、直落最低档。现在把这类长时间的「需求性空闲」(暂停、切后台)与真正的「供给不足」区分开:前者不计入带宽估计。
- 带宽明明够,画质却钉在低档(P11-168)。这条最隐蔽:播放器升到高画质的那一刻缓冲水位偏低(满缓冲主动停拉的正常排空段),被「水位急救降档」误当成告急,于是降回去、并把高档禁用 90 秒;此后每一轮升档都撞同一堵墙。现在给这个急救降档加了一道带宽闸 —— 当前带宽连这一档的码率都撑得住时,不开这一枪。真饿(带宽确实低于当前档码率)时照旧降档。
- 移动端频道页、UP 空间投稿列表补会员角标(P11-169)。会员专属视频的角标数据一直是好的,只是这两处的视频行从来没画过角标(同一页的 Shorts/直播 tab 和 TV 端都有)。现在复用首页卡那枚粉底胶囊,贴在封面右上角,与全 App 其余位置样式一致。
- 修一次约 99 秒的静默卡顿(P11-162)。逐行核对了 FreeTube 的实现,补上三处缺失的超时(其中最长的一处是自己代发请求时没设连接/读取超时,阻塞读把线程占满,连兜底都没法触发)。
- 慢启动时不再白等 18 秒(P11-166)。「首包偶发十几秒一个字节都不发」时,原来会等到 18 秒上限才切断重试;实测这种停顿重试只要 4 秒就能成功,所以把「多久没有新字节」的阈值收到 8 秒 —— 停顿 8 秒就立刻重发。
- 内部:采集到的「冷启占位令牌」不再被兜底路径放行进入会话(P11-165)。
进展与已知问题
- 真机回归(带宽闸):连续一场约 3 分钟,视频轨只升降一次(720p → 1080p)并稳定在 1080p;全程零降档、零门禁、零卡顿、零重载、零报错;那唯一一次水位急救降档被带宽闸挡下 —— 正是它没被降档,才没有触发 90 秒禁用,升档随后顺利完成。上一版遗留的「上不去」到此消失。
- 仍未验证的一侧:目前的证据只覆盖「该挡时挡得住」。弱网下「真饿时该挡不挡」还没有取到证据,需要在低带宽场次复测。
- 上一版承诺的「起播并行化」已回退(P11-161)。实测 3 场里只有 1 场成功、并出现协程作用域被提前取消的报错,整笔回退;起播提速改由上面那条「静默超时 8 秒」拿回一部分。
- 起播仍偏慢(承接上一版):借令牌环节约 17.7 秒,是下一轮的主要目标。
- 本次回归场的清晰度天花板是 1080p(服务端该场只提供 6 个高度);1440p/2160p 的路径状态与上一版结论一致,不在本版改动范围内。