github urbanescavenger/BiliMT v3.1.1

4 hours ago

稳定版:4K 全自动播放收口 + 网络层抗坏 IP + 移动端/电视端体验修复。 本版整合
v3.1.1-alpha.1 ~ alpha.16,逐版本条目见下方各节。

主线一:YouTube 4K 全自动

  • 4K 不用再手切(alpha.1):一版修掉两个独立的坑 —— ①「连续重载」真因是切档时音频段被灌进了
    视频字节(音频段 60KB 变 2.4MB,播放器解析报错后整场重载),改成「每笔响应一份段编号表 + 实收
    字节必须等于声明长度」;②「4K 永远升不上去」是两个 20 秒互相顶死,升档垫子改为全档统一
    max(15s, 2×本档往返),顶档不再单独加 20 秒(4K 的三条守门员未放松)。
  • 带宽记账修正(alpha.6):sus(持续带宽)分母扣错了不在窗口里的空闲时间,38 Mbps 的管子上报
    127 Mbps;改为样本带区间、窗口单点滚动、只扣与窗口有交集的空闲,并补 susRaw= 取证。
  • WEB-SABR 首启不崩(alpha.4):harvest 采集 WebView 的预热从「进程启动后 8 秒」挪到「启动稳定
    • 用户空闲」的后台窗口,避开首屏最挤的主线程,修掉切档后连崩三次。
  • 动态页 YouTube 卡补齐提示(alpha.7):后台按频道补 TVHTML5 的 4K 角标(原位只改 badge、只补
    空位,不重拉首屏),并把绿框改画在内容之上,不再被不透明封面盖住。

主线二:网络与更新稳定性

  • WebDAV 备份不再「按好几次才成」(alpha.5):真正搬数据的 put/get 接上与 ping 相同的
    8s→15s→25s 阶梯重试,只有网络异常与 5xx 才重试,失败语义统一为返回失败而不是抛异常。
  • DNS 结果优选 + 坏 IP 短期拉黑(alpha.15):DNS 答案里混入被本网络 RST 的任播 IP 时,OkHttp
    的阶梯重试会全撞同一个坏 IP;新增 HealthyDns 把连接失败的地址拉黑 5 分钟并排到最后,恢复后
    自动解除,覆盖 WebDAV / IPTV 频道表 / 下载 / 更新。
  • 移动端下载更新失败不再崩溃(alpha.12):补 try/catch + Toast;顺带修 callTimeout 单位
    bug(毫秒值按秒传入,兜底形同虚设)、读缓冲 8KB→64KB、进度回调改 200ms 节流。

主线三:搜索与电视端焦点

  • 搜索补「影视」类型(alpha.10):B站搜索在番剧之外接上 media_ft,结果与番剧共用季详情链路。
  • TV 搜索类型与焦点(alpha.9 / alpha.13 / alpha.14):类型切换从单枚循环按钮改为并与排序同排的
    chip,clear() 复位类型;影视搜索结果 ↓ 不再逃到侧栏番剧分区,首卡聚焦改按帧重试,解决「选不到
    结果」。
  • TV 历史点番剧卡报 -400(alpha.8):AppShell 文件内私有的 toPlaybackRequest 漏了 PGC 分支,
    历史里番剧条目的伪 BV 号被当普通稿件打给 playurl;删掉私有实现改用共享版(超集)。

主线四:移动端体验

  • 下拉刷新只认用户手势(alpha.16):惯性 fling 的剩余增量(SideEffect)也被当成下拉距离,
    下滑甩回顶部就自动刷新;改为只累加 UserInput 的下拉余量,并补上滑回退。
  • 动态页返回不再丢焦/重拉(alpha.2 / alpha.3):页面重建不再触发首屏刷新,刷新只由切子 tab /
    侧栏重点击等明确动作触发;判据与 DataStore 频道表首帧解耦。

已知

  • 4K 升档窗口机制仍在:持续带宽闸需要先拿到「同编码族实测锚」,锚到手慢的场次仍要等。
  • 白名单与预取仍自相矛盾:向服务端点名要来的候选档仍会被判成「未请求的格式」整段丢弃。
  • B站 只有一档两种编码:按 height 的降档判据恒空,唯一「降档」动作可能退化成换 codec。
  • 电视端 4K 仍受盒子内存约束(Java 堆约 448MB),叠加其他重负载时需留意。
  • alpha.1 ~ alpha.16 各节里记的其他已知项不变。

Don't miss a new BiliMT release

NewReleases is sending notifications on new releases.