Star Music 星音乐

基于 uni-app 的插件式音乐播放器,兼容 LX Music 用户导入源脚本协议

Star Music
🎧

完整播放流程

搜索 → 试听列表 → 播放器 → 歌词滚动,开箱即用的完整音乐体验

🔌

兼容 LX Music 源协议

支持用户导入自定义音乐源脚本(musicUrl / lyric / pic 等 action)

🎶

四级歌词兜底

本地缓存 → 自定义源 → 搜索源 → 跨源匹配,层层兜底不落空

🖼️

封面三级缓存

内存 / 持久化 / 在途请求共享,列表滚动不卡顿

🔁

四种播放模式

列表循环 / 随机 / 顺序 / 单曲循环,随心切换

📊

BPM 节拍可视化

Canvas 频谱随歌曲节奏脉冲跳动,播放淡入、暂停淡出

🌅

启动页每日一句

古诗词一言 API,开机即见诗意

性能优化

防抖合并落盘、图片并发控制、Canvas 路径合并绘制,旧手机也流畅

Star Music(星音乐)

一个基于 uni-app 的插件式音乐播放器,兼容 LX Music 用户导入源脚本协议,一套代码同时运行于 H5 与 Android / iOS App。

项目简介

Star Music 是 LX Music 移动版的 uni-app 迁移项目。它提供插件运行框架与播放功能,不直接存储、提供任何音乐源文件。用户通过自行导入、启用合规的自定义源脚本获取音乐相关数据,项目旨在为开发者提供跨端应用技术实践与学习案例。

主要功能

技术栈

技术
框架uni-app(Vue 3 + Vite 5)
状态事件总线 + 本地存储(uni.setStorageSync)
播放uni.createInnerAudioContext
源执行JS 沙箱(new Function 隔离作用域,注入 globalThis.lx)
可视化Canvas 2D(uni.createCanvasContext)
加密工具纯 JS 实现 AES / MD5 / RSA / SHA1 / Base64(供源脚本 lx.utils 使用)

源码使用

环境准备

H5 运行(命令行)

bash
npm install
npm run dev:h5

App 运行

使用 HBuilderX 导入项目,运行到手机 / 模拟器即可。

三步入门

  1. 导入自定义音源:设置页 → 导入自定义音源,粘贴 LX Music 格式的源脚本(兼容 LX.Music 标准协议),导入后自动启用
  2. 搜索:首页搜索歌曲 / 歌手,点击结果进入试听列表
  3. 播放:点击歌曲即播;播放页支持歌词滚动、播放模式切换、收藏、频谱可视化
提示:内置源仅提供数据查询(搜索 / 热搜 / 榜单),播放 URL / 歌词 / 封面由自定义源脚本提供。

项目结构

text
├── pages/           # 页面(启动页/搜索/歌单/设置/播放器)
├── components/      # 组件(搜索栏/列表/播放栏/图标/自定义源导入)
├── common/          # 核心模块(播放器/音乐源/歌单/事件/设置)
│   ├── music-sdk/   # 内置搜索源 SDK(kw/kg/tx/wy/mg)
│   └── user-api/    # 自定义源引擎(沙箱 + API 执行器)
├── static/          # 静态资源(图标/TabBar/SVG)
├── scripts/         # 资源生成脚本
├── pages.json       # 页面路由与 TabBar 配置
└── manifest.json    # 应用配置

开源许可

本项目源代码遵循 GPL-3.0,仅授权用户对项目进行学习、修改与二次开发,不包含任何音乐数据相关授权。详情请参阅 LICENSE 文件,使用前请务必阅读许可条款。

免责声明

重要提示:使用本项目前,请务必阅读本声明,使用本项目即视为你已充分理解并同意本声明全部内容。
  1. 本项目仅用于技术学习与交流,不提供任何音乐文件的存储与分发。所有音乐数据均来自用户导入的第三方源,版权归原作者及版权方所有。
  2. 请勿将本项目用于商业用途,请在法律允许的范围内使用。
  3. 本项目倡导「尊重版权、支持正版」,提醒用户通过官方音乐平台获取授权音乐服务。严禁用户使用违规方式获取音乐服务,违规使用的开发团队有权责令停止
  4. 因用户使用非合规源、违反法律法规或第三方协议导致的任何法律责任,均由用户自行承担,与本项目无关。

贡献指南

欢迎开发者贡献代码与反馈建议,贡献内容需符合以下要求:

  1. 仅涉及播放器框架功能优化、bug 修复、文档完善,不包含任何音乐数据源相关代码。
  2. 遵循项目风格指南,确保代码质量。
  3. 贡献的代码需无第三方版权纠纷,且不违反开源许可协议。

联系方式