-
Notifications
You must be signed in to change notification settings - Fork 1k
Open
Description
检查清单
- 我已检索仓库中所有的 Issues,确保我没有重复提交问题;或有相似 Issue,但我觉得我的情况不包含在那个相似 Issue 之内
- 我已经找到了可以复现这个问题的方法,并且写在了下面的「具体信息」中
- 此问题可以在我的设备和当前环境中稳定复现
- 此问题可以在最新版本 (Latest Release) 中复现
- 此问题是在我更新到当前版本后才出现的
是网页端还是客户端
客户端
当前系统环境
Windows 11 版本25H2(OS内部版本 26200.7462)
当前 Node.js 及 npm 版本
v22.20.0/11.6.4
当前版本
v3.0.0-beta.8.2025
具体信息
[BUG] 云盘歌曲元数据丢失及本地歌词匹配逻辑优化
1. 问题描述
在 SPlayer 中播放网易云音乐云盘歌曲时,无法显示内嵌歌词与封面。
- 核心现象:用户自主上传的 FLAC 文件(网易云曲库不存在该歌曲),在 SPlayer 播放云盘流时,歌词面板显示 “暂无歌词”。
- 根源分析:经排查发现,通过 SPlayer 下载到本地的云盘文件 Metadata(标签信息)中的歌词字段被抹除,导致播放器无法解析内嵌歌词。由于是私有上传歌曲,云端也无法匹配在线歌词。
2. 环境信息
- 文件格式:FLAC (内嵌 LRC 歌词与封面)
- 对比测试:
- 本地播放:直接在 SPlayer 打开源文件,内嵌歌词与封面显示正常。
- 云盘播放:在 SPlayer 云盘功能中播放,歌词显示“暂无歌词”,封面正常。
- 官方客户端:PC 端 3.1.25 正常;2.10.13 无封面,且开启 UnblockNeteaseMusic 后无歌词/封面;移动端正常。
3. 技术细节与对比
| 测试维度 | 原始文件 | SPlayer 下载的文件 |
|---|---|---|
| 标签信息 (Tags) | 完整 (Title, Lyrics, Cover) | 歌词标签丢失,其余正常 |
| MD5 校验 | 原始 MD5 | 已改变 |
| 歌词状态 | 内嵌 LRC 正常读取 | 显示“暂无歌词” |
分析结论:
SPlayer 调用的云盘流或下载接口未能保留文件原始的内嵌歌词标签。由于云盘歌曲在服务器端通常没有对应词库,一旦内嵌标签丢失且无法匹配本地歌词,播放器便彻底无法显示歌词。
4. 功能建议:优化本地歌词匹配逻辑
现状
目前 SPlayer 的本地歌词匹配规则过于严格:
- ID 依赖:要求歌词文件必须包含“歌曲 ID”(如
歌曲ID.lrc),对于拥有大量存量 LRC 歌词(以歌曲名命名)的用户来说,手动获取 ID 并重命名过于繁琐。 - 文件名不匹配:SPlayer 下载云盘歌曲的文件名格式固定为
歌曲名 - 歌手.flac,而我的本地歌词库为歌曲名.lrc,导致文件名无法完全匹配。
建议解决方案:增加“基于歌曲名的模糊匹配”
- 逻辑描述:
- 当播放文件
红豆 - 王菲.flac时,若未找到匹配的内嵌歌词或 ID 命名的歌词; - 播放器自动检索同目录(或指定歌词目录)下的
红豆.lrc。
- 当播放文件
- 优越性:
- 兼容性:无需用户手动修改现有的
歌曲名.lrc库。 - 自动化:解决了云盘文件下载后因文件名带后缀而导致匹配失效的问题。
- 优雅性:相比于强制用户使用歌曲 ID,基于文件名的模糊匹配更符合音乐发烧友的本地管理习惯。
- 兼容性:无需用户手动修改现有的
5. 证明材料 (Logs & Screenshots)
日志文件 (Log)
客户端表现对比
- ncm2.10:
- ncm3:
文件样本
Metadata
Metadata
Assignees
Labels
No labels


