LMP34 v2.6.1 · 核心更新速览

v2.6.1 是一次聚焦"播放稳定性"和"地址补全"的重要更新。 本次更新不玩花哨功能,全部落在让远程音频真正能播、让代理真正可控这两件事上。 共修复 3 项 bug、新增 1 项自动补全、优化 1 项代理降级逻辑。

一、关闭频谱后,远程 MP3 终于能直连了

之前有用户反馈:把 spectrum_id 设为 0(关闭频谱), 远程 CDN 上的 MP3 文件就是播不了,控制台还满屏 CORS 报错。 这次彻底解决了。

根因很简单:旧版 applyCors() 对所有跨域资源无条件加上 crossOrigin='anonymous',这会让浏览器强制要求远程服务器返回 Access-Control-Allow-Origin 头,缺一个字符都不让加载—— 哪怕你只是想纯播放,根本不需要跨域分析音频。

LMP34 v2.6.1 · 核心更新速览

新版 按频谱状态动态决定:

  • 频谱开(spectrum_id > 0)
    AudioContext 需要同源音频才能分析波形,此时强制 crossOrigin='anonymous', 远程资源必须走代理中转。
  • 频谱关(spectrum_id = 0)
    纯播放不需要 CORS 头,crossOrigin = null, 浏览器正常跨域加载,远程 MP3/视频直连即可播放。

一句话总结:频谱关=直连,频谱开=代理。各归其位,互不干扰。

二、播放列表相对地址自动补全

之前 list.xml 里写相对路径(比如 music/test.mp3), 播放器加载时会因为路径解析不一致找不到文件。 v2.6.1 新增 resolveRelUrl() 函数, 对 src / lrc / image / list_src 五个字段统一自动补全:

  • http:// https:// // 开头 → 跳过(已经是绝对地址)
  • / ? # 开头 → 跳过(根路径或锚点)
  • data: blob: → 跳过(浏览器原生协议)
  • 其余情况 → 根据当前播放器所在目录自动补成完整 URL
  • 远程子列表 → 以子列表自身 XML 位置为基准补全,不会跑偏

写 list.xml 再也不用苦哈哈写完整 URL 了,和写本地 HTML 的相对路径一个感觉。

三、代理配置 · 什么时候必须自己部署

v2.6.1 重写了代理优先级链,让"频谱开关"和"代理策略"直接绑定, 不再是两张皮。先搞清楚代理到底在什么时候发挥作用:

场景 是否走代理 原因
频谱开 + 远程资源 强制走代理 AudioContext 跨域分析必须同源
频谱关 + 远程资源 可直连 纯播放不需要 CORS 头
本地资源 不走代理 直接读文件
代理配置为空 走兜底代理 第三方服务器,不稳定

什么时候应该自己部署代理?

  • 远程 CDN 屏蔽直连(403 或跨域拦截)
  • 播放卡顿 / 加载慢 / 经常超时
  • 需要稳定的跨域频谱分析
  • 不想流量全部消耗在第三方代理服务器上

代理代码与部署教程

完整的 proxy.php 代码、src_handler.php、 lrc_handler.php,以及部署步骤、DNS 污染绕过配置、 Range 分块、编码自动检测(GBK → UTF-8)等说明, 请访问:https://www.cnlog.cc/post/21.html

index.php 中的配置方法

// 全局统一代理(通吃所有远程资源)
// 留空 = 用第三方兜底代理(不稳定)
proxy: '',

// src_handler 优先级高于 proxy
// 仅对远程音频/视频生效
src_handler: 'src_handler.php?vid={src}',

// lrc_handler 兜底:歌曲没自带 lrc 时自动尝试查询
lrc_handler: 'lrc_handler.php?title={label}&rd={rd}',

代理文件上传到播放器根目录即可,和 index.php 同级, 配置里写相对路径 proxy.php?url={src} 就能自动生效。

四、皮肤静音图标修复

lmp34-pulse 皮肤存在一个经典 bug: 点击静音后图标只在点击瞬间显示静音状态,鼠标一移开就恢复成未静音图标, 但功能实际上已经执行了(声音真的没了)。

根因是皮肤钩子设置 data-muted 属性的方式和核心逻辑不一致, MEDIA_STATE 钩子设成了 data-muted="0" 而非移除属性, 导致 hover 事件反复覆盖持久状态。 v2.6.1 统一了属性操作约定:

  • 静音中 → data-muted="1"
  • 未静音 → 移除属性(不设为 "0")

修复后静音图标状态正确持久,不再闪烁。

五、更新日志(v2.6.1 · 2026-10-25)

类型 内容
✨ 新增 播放列表相对地址自动补全(src/lrc/image/list_src)
✨ 新增 频谱关闭时远程资源可直连浏览器,不再强制代理
🔧 修复 lmp34-pulse 皮肤静音图标闪烁恢复的 bug
🔧 修复 跨域资源代理降级逻辑,非频谱模式下代理失败自动尝试直连
🔧 清理 内核 JS 文件格式统一(缩进/乱码注释/开发遗留标记)
📝 完善 index.php 全部配置参数加中文注释,代理与频谱关系重点说明
📝 完善 docs/config.md 新增代理-频谱关系章节、FAQ 更新
📝 完善 docs/changelog.html / docs/index.html 同步 v2.6.1