LXMusic 中文文档 下载 App

音源机制详解——洛雪音乐为什么能跨平台搜歌

什么是自定义源

自定义源(Custom Source)是洛雪音乐的核心架构设计。它是一个用 JavaScript 编写的脚本文件(通常 .js 后缀),通过洛雪音乐在宿主环境中注入的 API,来完成以下事情:

软件本身不实现任何以上功能——它只是加载脚本、注入 API、接收脚本返回的数据并渲染。

架构图(文字版)

┌─────────────────────────────────────────────┐
│            洛雪音乐宿主进程                    │
│  ┌─────────┐   ┌───────────────┐   ┌──────┐ │
│  │ 搜索界面 │   │  播放控制     │   │ 歌词 │ │
│  └────┬────┘   └──────┬────────┘   └──┬───┘ │
│       │               │               │     │
│       ▼               ▼               ▼     │
│  ┌───────────────────────────────────────┐  │
│  │  音源调度器(自动换源 / 回退机制)      │  │
│  └───────────────────┬───────────────────┘  │
│                      ▼                       │
│  ┌───────────────────────────────────────┐  │
│  │  脚本沙箱 ─── 注入 API(lx.request)   │  │
│  └───────────────────┬───────────────────┘  │
└──────────────────────┼──────────────────────┘
                       ▼
              ┌─────────────────────┐
              │  .js 自定义源脚本     │
              │  (搜索 / 取 URL     │
              │    / 取歌词 / 取封面)│
              └─────────┬───────────┘
                        ▼
              ┌─────────────────────┐
              │  第三方音乐平台接口    │
              │  (脚本内部实现具体请求)│
              └─────────────────────┘

宿主进程把请求分发给音源脚本,脚本负责发起实际的网络请求并返回数据。如果某个源失败,调度器自动换下一个源。

脚本的基本结构

每个音源脚本文件开头需要声明元信息:

/**
 * @name 音源显示名称
 * @description 音源简介
 * @version 1.0.0
 * @author 作者
 * @homepage http://example.com
 */

脚本通过 const { EVENT_NAMES, request, on, send } = globalThis.lx; 获取宿主注入的 API,然后:

  1. 在脚本加载完成后,向宿主发送 inited 事件,声明自己支持哪些音质和操作。
  2. 通过 on() 注册事件处理函数,响应宿主发起的搜索、取 URL、取歌词等请求。
  3. 使用 request() 发起跨域不受限的 HTTP 请求,从第三方平台获取数据。

支持的音质

音源脚本可以声明支持以下音质等级:

标识说明
128k标准音质
320k高品音质
flac无损音质
flac24bitHi-Res 24bit 无损

不同平台的音源脚本可能支持不同的音质,具体以导入后音源脚本的声明为准。在播放或下载时,你可以在设置中指定默认音质。

换源与回退机制

洛雪音乐支持多音源并行。当你导入了多个音源脚本后:

  1. 搜索时,所有已启用的音源会同时或依次请求,结果合并后展示。
  2. 播放时,软件优先使用默认音源的 URL。如果获取失败,自动尝试下一个音源——这就是「换源」。
  3. 如果所有已启用的音源都失败,会提示「换源失败,请尝试手动切换」。

换源机制不是让你手动一个个试,而是软件自动完成的调度过程。导入多个音源脚本是防止「换源失败」的最佳策略。

脚本生命周期

安全提示

音源脚本是第三方代码,运行在沙箱环境中但仍需谨慎:

相关阅读