
如何快速跑通 SPlayer开源跨平台音乐播放器从部署到架构一篇讲清【免费下载链接】SPlayer A cross-platform music player with Jellyfin / Navidrome / Emby media server support, word-by-word lyrics, desktop taskbar lyrics, cloud music drive, local library management, audio spectrum visualization and mobile-friendly UI. 简约的跨平台音乐播放器支持逐字歌词、桌面歌词、任务栏歌词、云盘音乐、本地音乐管理及流媒体播放项目地址: https://gitcode.com/GitHub_Trending/spl/SPlayerSPlayer 是一款基于 Vue 3 TypeScript Naïve UI Electron 的开源音乐播放器同时提供网页与桌面两种形态支持跨平台使用。它把在线听歌、桌面歌词、本地音乐库、流媒体接入装进同一套代码里适合想自建音乐库、追求歌词体验或研究 Electron 音乐播放器的开发者。第一印象先看它最有意思的地方桌面歌词独立成窗样式、位置、字号都能自定义逐字歌词逐字点亮配歌词滚动与翻译无版权歌曲自动匹配替代音源能继续听下载支持单曲或批量最高 Hi-Res需相应会员账号同一套代码跑 Web 和 Electron 桌面端还能打包 Windows / macOS / Linux 客户端。快速上手三条路把 SPlayer 跑起来 本地运行pnpm 装完依赖直接 dev前置条件Node.js 20、pnpm 10克隆仓库地址为 https://gitcode.com/GitHub_Trending/spl/SPlayer。pnpm install cp .env.example .env pnpm devpnpm dev默认会先编译native/下的 Rust 原生模块需 Rust 工具链。如果暂时不需要系统媒体控件、Discord RPC 这类能力设置SKIP_NATIVE_BUILDtrue即可跳过。 SPlayer Docker 部署一条命令跑 Web 版前置条件已安装 Docker。docker build -t splayer . docker run -d --name SPlayer -p 25884:25884 splayer镜像采用两阶段构建node:22-alpine出静态产物nginx:1.27-alpine-slim托管页面网易云 API 与解锁服务直接装进镜像见 Dockerfile。也支持docker-compose up -ddocker-compose.yml 里暴露了NETEASE_SERVER_IP、UNBLOCK_SOURCES等可选环境变量。启动后访问http://localhost:25884换端口就改-p后面的宿主机端口。SPlayer Vercel 部署先备好 API 再一键导入前置条件先部署一个 NeteaseCloudMusicApi Enhanced 兼容服务拿到在线地址。Fork 仓库复制.env.example为.env把VITE_API_URL指向 API 地址导入 VercelOutput Directory填out/renderervercel.json 已配好构建命令点击 Deploy完成。功能深讲按场景看它解决什么问题 在线听歌扫码、私人 FM、每日推荐、云盘登录走扫码或手机号两条路对应 src/api/login.ts 里的qrKey()/qrCreate()/checkQr()与loginPhone()登录组件在 src/components/Modal/Login/。登录后可以点私人 FMsrc/api/radio.ts、看每日推荐src/views/DailySongs.vue、src/api/rec.ts。云盘的上传、播放、纠正、删除统一封装在 src/api/cloud.tsREADME 中每日签到、云贝签到已被划除当前版本不再保证。SPlayer 桌面歌词与主题色视觉跟着封面走歌词分三层applemusic-like-lyrics负责逐字渲染与滚动src/utils/lyric/ 下的parseLrc.ts、parseQrc.ts、parseTTML.ts负责 LRC / QRC / TTML 多格式解析桌面歌词由独立窗口承载src/views/DesktopLyric/index.vue electron/main/windows/lyric-window.ts。主题色由 src/utils/color.ts 从封面取色生成 Material 配色界面随封面全站着色Light / Dark / Auto 三档跟随。本地音乐扫描入库、改标签、解锁无版权歌曲electron/main/services/LocalMusicService.ts 扫描目录并写入 better-sqlite3 库electron/main/database/LocalMusicDB.ts改标签、换封面靠 electron/main/services/MusicMetadataService.ts 读写 ID3 元数据无版权歌曲由 electron/server/unblock/ 对接酷我、波点等音源给出替代链接/api/unblock/*详见 docs/api.md。下载单曲或批量Hi-Res 看会员electron/main/services/DownloadService.ts 负责任务执行src/components/Modal/DownloadModal.vue 提供单曲 / 批量入口进度在 src/views/Download/ 页面查看。音质档位从 standard 到 Hi-Res 甚至杜比全景声src/api/song.ts最高 Hi-Res 需要相应会员账号。架构速览四层分工一张表层目录一句话职责渲染进程src/Vue 3 Pinia Vue Router 的全部界面与页面主进程electron/main/窗口、托盘、快捷键、better-sqlite3 库、下载与 MPV 服务内置服务electron/server/Fastify 提供 HTTP API默认 25884与 WebSocket默认 25885Rust 原生插件native/napi-rs 编译的系统媒体控件与 Discord RPC 集成环境要求 Node.js 20、pnpm 10原生插件构建可跳过SKIP_NATIVE_BUILDtrue。进阶与远程控制让 SPlayer 听你指挥本地 HTTP APIhttp://localhost:25884统一{ code, message, data }响应。curl http://localhost:25884/api/control/play/api/control/song-info文档明确警告别用它高频轮询播放进度实时进度请走 WebSocket。WebSocket 事件连上ws://localhost:25885先收到welcome之后status-change/song-change/progress-change约 500ms 一次/lyric-change依次推送客户端定期发PING服务端回PONG。const ws new WebSocket(ws://localhost:25885); ws.onopen () ws.send(JSON.stringify({ type: control, data: { command: next } }));流媒体服务兼容 Subsonic 协议Navidrome、Subsonic、Airsonic 等见 docs/streaming.md设置里添加服务器多服务器可切换并自动连接上次使用的那个Subsonic 端还会按采样率与位深识别 Hi-Ressrc/api/streaming/subsonic.ts另有 Emby / Jellyfin 适配。系统媒体控件与 Discord RPC原生插件 EMInative/external-media-integration/把播放状态同步到 Windows SMTC、Linux MPRIS、macOS 控制中心Discord 上显示歌曲、封面与进度排障指南在 docs/native.md。常用命令与打包命令说明pnpm dev启动开发含原生模块构建 Vite HMRpnpm build构建 Web 版生产包pnpm typecheck类型检查node web 两套 tsconfigpnpm lintESLint 检查零警告通过pnpm build:win/build:mac/build:linux打包对应平台客户端产物在dist/默认只构建当前系统架构要同时出 x64 与 arm64命令后追加参数例如pnpm build:win -- --x64 --arm64。维护提示SPlayer 已进入维护模式只做必要维护与重大问题修复新功能请移步 SPlayer-Next项目依赖网易云第三方 API仅供个人学习研究禁止商业及非法用途整体基于 AGPL-3.0 协议开源。延伸阅读docs/guide.md、docs/api.md、docs/socket.md、docs/streaming.md、docs/native.md、docs/download.md【免费下载链接】SPlayer A cross-platform music player with Jellyfin / Navidrome / Emby media server support, word-by-word lyrics, desktop taskbar lyrics, cloud music drive, local library management, audio spectrum visualization and mobile-friendly UI. 简约的跨平台音乐播放器支持逐字歌词、桌面歌词、任务栏歌词、云盘音乐、本地音乐管理及流媒体播放项目地址: https://gitcode.com/GitHub_Trending/spl/SPlayer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考