[GH-ISSUE #709] 云盘歌曲播放无歌词,希望优化本地歌词匹配逻辑 #334

Closed
opened 2026-02-27 07:11:20 +03:00 by kerem · 4 comments
Owner

Originally created by @Jerrrry4013 on GitHub (Jan 2, 2026).
Original GitHub issue: https://github.com/imsyy/SPlayer/issues/709

检查清单

  • 我已检索仓库中所有的 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 的本地歌词匹配规则过于严格:

  1. ID 依赖:要求歌词文件必须包含“歌曲 ID”(如 歌曲ID.lrc),对于拥有大量存量 LRC 歌词(以歌曲名命名)的用户来说,手动获取 ID 并重命名过于繁琐。
  2. 文件名不匹配:SPlayer 下载云盘歌曲的文件名格式固定为 歌曲名 - 歌手.flac,而我的本地歌词库为 歌曲名.lrc,导致文件名无法完全匹配。

建议解决方案:增加“基于歌曲名的模糊匹配”

  • 逻辑描述
    • 当播放文件 红豆 - 王菲.flac 时,若未找到匹配的内嵌歌词或 ID 命名的歌词;
    • 播放器自动检索同目录(或指定歌词目录)下的 红豆.lrc
  • 优越性
    • 兼容性:无需用户手动修改现有的 歌曲名.lrc 库。
    • 自动化:解决了云盘文件下载后因文件名带后缀而导致匹配失效的问题。
    • 优雅性:相比于强制用户使用歌曲 ID,基于文件名的模糊匹配更符合音乐发烧友的本地管理习惯。

5. 证明材料 (Logs & Screenshots)

日志文件 (Log)

localhost-1767377433379.log

客户端表现对比

  • 安卓端表现Image

  • SPlayer 本地播放(正常)Image

  • SPlayer 云盘播放(异常:暂无歌词)Image

  • ncm2.10+BetterNCM
    Image

  • ncm2.10
    Image

  • ncm3
    Image

文件样本

Originally created by @Jerrrry4013 on GitHub (Jan 2, 2026). Original GitHub issue: https://github.com/imsyy/SPlayer/issues/709 ### 检查清单 - [x] 我已检索仓库中所有的 Issues,确保我**没有重复提交问题**;或有相似 Issue,但我觉得我的情况不包含在那个相似 Issue 之内 - [x] 我已经找到了可以复现这个问题的方法,并且写在了下面的「具体信息」中 - [x] 此问题可以在我的设备和当前环境中**稳定复现** - [x] 此问题可以在最新版本 (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 的本地歌词匹配规则过于严格: 1. **ID 依赖**:要求歌词文件必须包含“歌曲 ID”(如 `歌曲ID.lrc`),对于拥有大量存量 LRC 歌词(以歌曲名命名)的用户来说,手动获取 ID 并重命名过于繁琐。 2. **文件名不匹配**:SPlayer 下载云盘歌曲的文件名格式固定为 `歌曲名 - 歌手.flac`,而我的本地歌词库为 `歌曲名.lrc`,导致文件名无法完全匹配。 ### 建议解决方案:增加“基于歌曲名的模糊匹配” - **逻辑描述**: - 当播放文件 `红豆 - 王菲.flac` 时,若未找到匹配的内嵌歌词或 ID 命名的歌词; - 播放器自动检索同目录(或指定歌词目录)下的 `红豆.lrc`。 - **优越性**: - **兼容性**:无需用户手动修改现有的 `歌曲名.lrc` 库。 - **自动化**:解决了云盘文件下载后因文件名带后缀而导致匹配失效的问题。 - **优雅性**:相比于强制用户使用歌曲 ID,基于文件名的模糊匹配更符合音乐发烧友的本地管理习惯。 --- ## 5. 证明材料 (Logs & Screenshots) ### 日志文件 (Log) [localhost-1767377433379.log](https://github.com/user-attachments/files/24410877/localhost-1767377433379.log) ### 客户端表现对比 * **安卓端表现**:![Image](https://github.com/user-attachments/assets/df6ca0eb-b75a-4406-9efc-977ac0cc2142) * **SPlayer 本地播放(正常)**:![Image](https://github.com/user-attachments/assets/5fb55c9e-9d8d-4ebd-b6f6-d29a5475f37d) * **SPlayer 云盘播放(异常:暂无歌词)**:![Image](https://github.com/user-attachments/assets/c02de9cf-e232-4567-9ddf-b244777ca19a) * **ncm2.10+BetterNCM**: <img width="1022" height="731" alt="Image" src="https://github.com/user-attachments/assets/ababd7f2-ea1b-4630-baee-85f919fc636d" /> * **ncm2.10**: <img width="1024" height="768" alt="Image" src="https://github.com/user-attachments/assets/81e75712-2b51-4272-be4e-b2d7c3591674" /> * **ncm3**: <img width="1024" height="768" alt="Image" src="https://github.com/user-attachments/assets/f621ef4b-0523-471c-8420-c05dac870bce" /> ### 文件样本 * **SPlayer 云盘下载文件**:[点击查看](https://1815786669.v.123pan.cn/1815786669/27623200) * **原始文件参考**:[点击查看](https://1815786669.v.123pan.cn/1815786669/27623185)
kerem 2026-02-27 07:11:20 +03:00
  • closed this issue
  • added the
    已修复
    label
Author
Owner

@github-actions[bot] commented on GitHub (Jan 2, 2026):

👋 您好 @Jerrrry4013,感谢提交 Issue!
🚀 我们已经收到您的反馈,会尽快确认你的问题

在等待回复期间,您可以:

<!-- gh-comment-id:3706033682 --> @github-actions[bot] commented on GitHub (Jan 2, 2026): 👋 您好 @Jerrrry4013,感谢提交 Issue! 🚀 我们已经收到您的反馈,会尽快确认你的问题 在等待回复期间,您可以: - 📖 查看 [项目文档](https://github.com/imsyy/SPlayer/blob/dev/README.md) - 💬 加入 [交流群](https://qm.qq.com/cgi-bin/qm/qr?k=2-cVSf1bE0AvAehCib00qFEFdUvPaJ_k&jump_from=webapi&authKey=1NEhib9+GsmsXVo2rCc0IbRaVHeeRXJJ0gbsyKDcIwDdAzYySOubkFCvkV32+7Cw) 进行实时讨论 - 🔍 搜索 [现有 Issues](https://github.com/imsyy/SPlayer/issues) 查看是否有类似问题
Author
Owner

@MoeFurina commented on GitHub (Jan 9, 2026):

Image https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced/pull/48 根据这位用户的PR, api应该是能获取歌词的
<!-- gh-comment-id:3728933146 --> @MoeFurina commented on GitHub (Jan 9, 2026): <img width="928" height="405" alt="Image" src="https://github.com/user-attachments/assets/0e69453c-8461-44bd-a198-c94a0e2c6ae3" /> https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced/pull/48 根据这位用户的PR, api应该是能获取歌词的
Author
Owner

@MoeFurina commented on GitHub (Jan 10, 2026):

Image 经测试, 该接口有效
<!-- gh-comment-id:3731218313 --> @MoeFurina commented on GitHub (Jan 10, 2026): <img width="2120" height="386" alt="Image" src="https://github.com/user-attachments/assets/25edc1c0-dd4b-4868-bde1-36dc75c1f2b4" /> 经测试, 该接口有效
Author
Owner

@github-actions[bot] commented on GitHub (Jan 26, 2026):

🎉 您好 @Jerrrry4013,该问题已修复,感谢您的反馈!

若您觉得仍存在问题,请重新开启或者创建新的 Issue,我们会尽快确认并修复

<!-- gh-comment-id:3798487760 --> @github-actions[bot] commented on GitHub (Jan 26, 2026): 🎉 您好 @Jerrrry4013,该问题已修复,感谢您的反馈! 若您觉得仍存在问题,请重新开启或者创建新的 Issue,我们会尽快确认并修复
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/SPlayer#334
No description provided.