Repository navigation
RustMusic v0.5.1
RustMusic v0.5.1
修复:三音源逐字(卡拉OK)歌词
本次集中修复了网易云、QQ、酷狗三源逐字歌词的数据解析问题——逐字染色的渲染层是共享的,但三家的歌词格式各有一个坑,此前分别表现为:
- 酷狗:拿到了逐字数据但整行一点亮就满色、没有逐词过程。KRC 的词级时间是相对行首的偏移,此前被当成绝对时间写进增强 LRC,任何 10 秒之后的行所有词都被判定为"已唱完"。已补上行首偏移。
- 网易云:逐字染色整体滞后一个字(唱第一个字时屏幕上没有字亮起)。yrc 的时间元组在字的前面,此前按"元组配前面的字"解析,等于每个字都用下一个字的时间点亮,行首元组被当作"起拍占位"丢弃。已修正配对方向(30 行真实 yrc 统计核验:元组精确铺满整行)。
- QQ 音乐:与网易云相反,QRC 的时间元组在字的后面,行以首字开头、以末元组结尾。修复中曾误与 yrc 统一配对方向导致每行行首少一个字,现按各自真实格式分别解析(55 行真实 QRC 统计核验),并补回此前被整体丢弃的行末字。
- 新增网络端到端回归测试:真实拉取逐字歌词并断言"首字起始 ≈ 行首",三种格式各自的坑今后都有测试把守;顺带修复了 4 处旧测试未跟上榜单分页改动导致的
cargo test编译失败(此前单测实际无法运行)。
新:播放页歌词颜色全面自适应
- 播放页歌词颜色改为按封面取色自适应,替换原先"平均亮度一刀切选黑/白字"的简单策略:文字颜色按最亮/最暗背景区域的最坏情况对比度决策(背景渐变持续旋转、光斑漂移,平均亮度代表不了歌词区背后的实际颜色);与可读标准的缺口按比例由文字阴影、远行歌词不透明度、歌词区柔边衬底三档补偿;当前行卡拉OK染色颜色跟随封面主色(此前固定强调色,同色系封面上染色会隐形);歌名、歌手继承同一套阴影。
- 修复封面取色静默失败:库存的网易云封面 URL 不带缩放参数,CDN 返回 3~4MB 原图,超过服务端取色的 2MB 读取上限被截断后解码必然失败——这类歌(含此前"看不清"的大部分场景)的自适应配色从未生效过。现主动向网易 CDN 要 350px 缩略图、放宽读取上限,并在服务端失败时以前端 canvas 取色兜底。
- 设置页移除「播放页配色」:手动三色在自适应策略下已无生效场景,为避免误导直接删除(桌面歌词配色不受影响,仍可自定义)。