feat: cdn prefs - #666
Open
s-kk wants to merge 1 commit into
Open
Conversation
Contributor
|
目标分支应该为 dev 分支 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
视频 / 直播播放的 CDN 优化
将 Make Bilibili Great Than Ever Before (
src/utils/get-cdn-url.ts、src/modules/enhance-live.ts) 中的 CDN 优化逻辑移植到 wiliwili。B 站 playurl 响应中混杂着官方 CDN 镜像与 P2P/PCDN 节点。P2P 节点速度慢、限速, 还会占用用户上行带宽。
此前 wiliwili 直接原样使用服务端返回的
base_url:player_base_activity.cpp:onVideoPlayUrl直接把v.base_url传给setUrl(),backup_url仅作为 mpv 播放列表回退,不检查主机。durl路径完全忽略durl[].backup_url。live_player_activity.cpp只用第一个url_info,留有 todo: 允许使用备用链接。移植内容
URL 分类(
CDNHelper::classify)MIRRORupos-<region>-<node>/upos-tf-*/proxy-tf-*,域名为bilivideo.{com,net}或akamaized.{com,net},路径含/upgcxcode/BCACHE/upgcxcode/host (B 站自建 PoP,如cn-sccd-cu-01-01.bilivideo.com)P2P_UPGCXCODE/upgcxcode/URL, 签名在 path+query 中仍可复用,只有主机不可用MCDN_TF*.mcdn.bilivideo.{com,cn,net},路径为/v<N>/resourceSZBDYDszbdyd.comCDNP2P 判定利用了脚本里的规则: 关键字列表(
302ppio、302kodo、.mcdn.bilivideo、szbdyd.com、.nexusedgeio.com、.ahdohpiechei.com, 以及证书签给*.bilivideo.cn的黑名单条目upos-sz-mirror14b.bilivideo.com)、"首段子域名含302"启发式、以及对带os=mcdn参数的官方镜像的降级。排序阶梯 (
CDNHelper::optimize)MIRRORBCACHEP2P_UPGCXCODE, 主机替换为从响应中收集到的官方主机(兜底upos-sz-mirrorali.bilivideo.com); 所有/upgcxcode/主机可互换,因为签名在 path+query 中SZBDYD, 改写为其xy_usource主机,否则做主机替换MCDN_TF, 包进 B 站官方代理:https://proxy-tf-all-ws.bilivideo.com/?url=<encoded>所有改写后的 URL 强制
https/ 443 端口。同档内随机排序以分散负载 (即原脚本中的pickOne); 各档按优先级拼接, 低档保留为回退而非丢弃(用户脚本只替换单个 URL、依赖网页播放器重试,这里一次性构建完整的 mpv 回退列表)。无法识别的 URL 在两种开启模式下均保留在列表末尾。首个条目为主 URL, 其余为 mpv 播放列表回退。主机池从整个 playurl 响应(全部视频、音频、杜比、FLAC 及
durl条目)收集,因此即使某条流的 URL 全是 P2P,也能借用响应中其他位置出现的干净主机。直播
来自
enhance-live.ts:剥离*.smtcdns.net/<real-host>/反向代理包装,再将非 P2P 的bilivideo/akamaized主机排在前面。两步均在rankLive()内完成,设置为off时完全跳过。画质强制未移植, wiliwili 本就显式选择qn。设置项
新增
SettingItem::CDN_OPTIMIZE, 位于 设置 → 网络 → CDN 优化:off(默认)mirror_onlyfull手改配置文件出现越界值时按
off处理。若某档过滤后没有可播放的 URL,则原样返回原始列表并记录警告,过滤再激进也不会导致无法播放。