{"id":40625015,"url":"https://github.com/hoowhoami/echomusic","last_synced_at":"2026-06-13T07:01:35.026Z","repository":{"id":337738472,"uuid":"1149419148","full_name":"hoowhoami/EchoMusic","owner":"hoowhoami","description":"🎉 一个简约的第三方酷狗概念版音乐播放器","archived":false,"fork":false,"pushed_at":"2026-04-25T19:31:52.000Z","size":87601,"stargazers_count":1372,"open_issues_count":1,"forks_count":80,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-25T21:21:49.882Z","etag":null,"topics":["flutter","kugou","music","music-player"],"latest_commit_sha":null,"homepage":"https://t.me/+H9vpkAJrDlViZjU1","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hoowhoami.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-04T04:58:36.000Z","updated_at":"2026-04-25T17:22:04.000Z","dependencies_parsed_at":"2026-03-07T05:01:42.995Z","dependency_job_id":"c36ecab0-1798-4537-bb74-5c8efd243afb","html_url":"https://github.com/hoowhoami/EchoMusic","commit_stats":null,"previous_names":["hoowhoami/echomusic"],"tags_count":84,"template":false,"template_full_name":null,"purl":"pkg:github/hoowhoami/EchoMusic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoowhoami%2FEchoMusic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoowhoami%2FEchoMusic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoowhoami%2FEchoMusic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoowhoami%2FEchoMusic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hoowhoami","download_url":"https://codeload.github.com/hoowhoami/EchoMusic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hoowhoami%2FEchoMusic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32326122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flutter","kugou","music","music-player"],"created_at":"2026-01-21T07:20:58.491Z","updated_at":"2026-06-13T07:01:34.697Z","avatar_url":"https://github.com/hoowhoami.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EchoMusic\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"build/icons/icon.png\" width=\"128\" height=\"128\" alt=\"EchoMusic Logo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eEchoMusic\u003c/strong\u003e —— 一个专为桌面端打造的简约、精致、功能强大的第三方音乐播放器。\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Electron-42.3.1-blue?logo=electron\" alt=\"Electron\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Vue-3.5-brightgreen?logo=vue.js\" alt=\"Vue 3\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-5.9-blue?logo=typescript\" alt=\"TypeScript\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Rust-napi--rs-orange?logo=rust\" alt=\"Rust\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Platform-macOS%20%7C%20Windows%20%7C%20Linux-brightgreen\" alt=\"Platform\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-orange\" alt=\"License\"\u003e\n\u003c/p\u003e\n\n---\n\n## ✨ 核心特性\n\n- **极致美学**：精心适配桌面端布局，支持深浅色模式与主题色自定义，完美兼顾信息密度、个性表达与沉浸式体验。\n- **数据安全**：官方服务器直连，数据不经过第三方服务器，保证用户数据安全。\n- **音乐推荐**：支持歌曲、歌单、歌手、专辑、排行榜等内容推荐。\n- **多维探索**：支持歌曲、歌手、专辑、歌单、歌词、MV 全方位搜索，快速发现心仪旋律。\n- **外部歌单导入**：支持网易云、QQ 音乐、酷我、酷狗、汽水、Spotify、Apple Music 及文本歌单导入。\n- **进阶播放**：支持播放队列管理、播放模式切换、音量调节、进度拖动、倍速播放、淡入淡出切歌等核心播放能力。\n- **私人 FM**：智能推荐个性化电台，发现更多好音乐。\n- **音乐云盘**：支持本地音频和跨平台文件导入，快速将专属音乐同步至云端存储。\n- **听歌识曲**：支持麦克风和系统音频捕获，快速识别正在播放的歌曲。\n- **歌曲详情**：支持查看歌曲档案及播放详情。\n- **歌曲评论**：支持查看歌曲评论与评论楼层跳转。\n- **歌词显示**：支持 LRC/YRC 逐字歌词解析、歌词选择、歌词翻译、正则过滤、滚动同步、全屏歌词、写真模式、桌面歌词。\n- **音频增强**：支持 18 段参数化 EQ 均衡器（带自动增益补偿）、音量均衡（基于 LUFS 响度标准化）、优化的空间音效（高效 IR 卷积、Dry/Wet 混合控制、内置混响预设）与多种音效模式。\n- **实时频谱分析**：直接从播放引擎提取音频数据，使用 FFT 进行实时频谱分析，为插件 `ctx.audio.spectrum` 提供低延迟、高精度的频谱帧。\n- **系统媒体控制**：原生集成 macOS MPNowPlayingInfoCenter、Windows SMTC、Linux MPRIS，支持系统媒体按键和进度同步。\n- **系统集成**：支持窗口控制、系统托盘、托盘快捷控制、全局快捷键、开机自启动、启动时最小化和 mini 模式。\n- **音频设备**：支持切换音频输出设备、独占模式输出。\n- **插件扩展**：支持在线插件源浏览安装与本地插件加载，自定义页面、侧边栏入口、设置项、播放器按钮、歌曲右键菜单与播放事件监听。\n- **持久化能力**：支持设置、播放历史、收藏、播放状态等本地持久化。\n- **跨平台支持**：完整适配 macOS、Windows 与 Linux 系统。\n- **自动更新**：内置应用更新检测与下载，支持静默更新。\n- **持续集成**：完善的 GitHub Actions 配置，支持多平台自动构建与 Release 发布。\n\n## 音质音效\n\n- **音质**：DSD臻品音质、Hi-Res、SQ(flac)、HQ(320)、标准(128)\n- **音效**：人声、伴奏、钢琴、骨笛、尤克里里、唢呐、DJ、蝰蛇母带、蝰蛇全景声、蝰蛇超清\n- **高级音频处理**：\n  - **18 段参数化 EQ**：50Hz - 20kHz 精细控制，自动增益补偿，支持预设（流行、摇滚、古典、电子等）\n  - **优化的空间音效**：高效 FFT-based 卷积混响、IR 预处理和归一化、Dry/Wet 混合级别控制、内置精选混响空间（音乐厅、教堂、录音室、剧院）\n  - **统一滤镜链管理**：智能管理 EQ、混响、音量均衡等多重音频效果，避免冲突，确保最佳音质\n\n## 🛠️ 技术栈\n\n- **Desktop Shell**: [Electron](https://www.electronjs.org/) 42.3\n- **Frontend**: [Vue 3.5](https://vuejs.org/) + [TypeScript 5.9](https://www.typescriptlang.org/)\n- **Build Tool**: [Vite](https://vitejs.dev/) 8\n- **State Management**: [Pinia](https://pinia.vuejs.org/) + [pinia-plugin-persistedstate](https://prazdevs.github.io/pinia-plugin-persistedstate/)\n- **UI Primitives**: [Reka UI](https://reka-ui.com/)\n- **CSS**: [Tailwind CSS](https://tailwindcss.com/) v4.3\n- **Routing**: [Vue Router](https://router.vuejs.org/)\n- **Package Manager**: [pnpm](https://pnpm.io/)\n- **Backend Service**: [Node.js](https://nodejs.org/)（内置本地服务，进程内直接调用）\n- **Audio Engine**: [libmpv](https://mpv.io/)（通过 Rust NAPI addon 进程内嵌入，零延迟直接函数调用）\n- **Native Addons**: [napi-rs](https://napi.rs/)（Rust 编写的原生扩展）\n  - `echo-mpv-player`：libmpv 播放引擎封装，支持淡入淡出、高级 EQ、音量均衡、优化的空间音效、实时频谱分析\n  - `echo-media-controls`：系统媒体控制集成（macOS/Windows/Linux 原生 API）\n  - `echo-storage`：SQLite 本地持久化存储，负责设置、播放队列与状态快照\n\n## 🖼️ 界面截图\n\n- 首页\n  ![首页](screenshots/home.png)\n- 发现\n  ![发现](screenshots/discover.png)\n- 私人FM\n  ![私人FM](screenshots/personal_fm.png)\n- 听歌识曲\n  ![听歌识曲](screenshots/recognize.png)\n- 歌词\n  ![歌词](screenshots/lyric.png)\n- 歌曲详情\n  ![歌曲详情](screenshots/song_detail.png)\n- 歌曲评论\n  ![歌曲评论](screenshots/song_comment.png)\n- 播放列表\n  ![播放列表](screenshots/playlist.png)\n- 专辑\n  ![专辑](screenshots/album.png)\n- 歌手\n  ![歌手](screenshots/artist.png)\n- 搜索\n  ![搜索](screenshots/search.png)\n- 个人中心\n  ![个人中心](screenshots/profile.png)\n- 设置\n  ![设置](screenshots/settings.png)\n\n## 🚀 快速开始\n\n### 前置要求\n\n- [Node.js](https://nodejs.org/) 18+\n- [pnpm](https://pnpm.io/) 9+\n- [Rust](https://www.rust-lang.org/)（编译原生模块需要）\n- [mpv / libmpv](https://mpv.io/)（播放引擎，macOS: `brew install mpv`，Linux: `apt install libmpv-dev`，Windows: 自行下载 `libmpv-2.dll` 到 `build\\mpv` 目录）\n- Linux 构建系统音频捕获模块需要 ALSA 开发库（Debian/Ubuntu: `sudo apt install libasound2-dev`）\n\n### 本地开发\n\n1. **克隆仓库**\n\n   ```bash\n   git clone https://github.com/hoowhoami/EchoMusic.git\n   cd EchoMusic\n   git submodule update --init --recursive\n   ```\n\n2. **安装依赖**\n\n   ```bash\n   pnpm install\n   cd server \u0026\u0026 npm install \u0026\u0026 cd ..\n   ```\n\n   在Linux下，可能会出现如下报错:\n\n   ```bash\n   Error: ENOENT: no such file or directory, open '/home/xxx/Projects/Work/EchoMusic/node_modules/electron/path.txt'\n   ```\n\n   需手动下载并解压Electron到对应目录：\n\n   ```bash\n   cd node_modules/.pnpm/electron@42.3.1/node_modules/electron/\n   mkdir -p dist\n   curl -L -o /tmp/electron.zip \"https://npmmirror.com/mirrors/electron/v42.3.1/electron-v42.3.1-linux-x64.zip\"\n   unzip -o /tmp/electron.zip -d dist/\n   printf '%s' './electron' \u003e path.txt\n   ```\n\n3. **编译 Rust 原生模块**\n\n   倘若出现如下报错:\n\n   ```bash\n   Error: Cannot find module '/home/myname/EchoMusic/native/echo-mpv-player/echo-mpv-player.node'\n   [error] [MpvController] Failed to load echo-mpv-player addon\n   ```\n\n   需要手动编译 Rust 原生模块，因为 `*.node` 文件在 `.gitignore` 中被排除。推荐使用各 addon 自带的 napi-rs 构建脚本生成平台对应的 `.node`：\n\n   ```bash\n   cd native/echo-mpv-player\n   npm install\n   npm run build\n\n   cd ../echo-media-controls\n   npm install\n   npm run build\n\n   cd ../echo-storage\n   npm install\n   npm run build\n\n   cd ../..\n   ```\n\n   `echo-mpv-player` 集成了实时频谱分析功能，可选地支持系统音频捕获：Windows 使用 WASAPI loopback，Linux 使用 ALSA monitor，macOS 使用 ScreenCaptureKit。macOS 首次使用系统级频谱捕获时，需要在”系统设置 -\u003e 隐私与安全性 -\u003e 屏幕与系统音频录制”中授权 EchoMusic；开发模式下也可能需要授权 Terminal、Electron 或当前启动进程。\n\n4. **启动本地开发服务器**\n\n   ```bash\n   pnpm dev\n   ```\n\n\u003e 开发模式下会由 Electron 主进程自动拉起本地服务端。\n\n## 插件系统\n\nEchoMusic 支持在线插件源浏览安装与本地插件扩展。插件可以提供高自由度的扩展能力，包括自定义页面、音源解析、歌词解析、音频频谱、插件浮窗，以及由 `ctx.lyricEffects.register()` 提供的页面歌词动效扩展点。\n\n👉 **[插件开发文档](https://github.com/hoowhoami/EchoMusicPlugins)**\n\n## 🏗️ 编译发布\n\n项目使用 GitHub Actions 进行自动化构建。每当推送 `v*` 格式的 Tag 时，会自动触发多平台构建并将二进制包上传至 Releases。\n\n**手动编译：**\n\n```bash\npnpm build\n```\n\n## 📦 打包产物\n\n- **macOS**：`dmg`、`zip`\n- **Windows**：`exe (nsis，x64/arm64)`\n- **Linux**：`deb`、`rpm`、`AppImage`、`tar.gz`\n\n## macOS\n\n```bash\nxattr -cr /Applications/EchoMusic.app \u0026\u0026 codesign --force --deep --sign - /Applications/EchoMusic.app\n```\n\n## 交流群\n\n- [Telegram](https://t.me/+H9vpkAJrDlViZjU1)\n- QQ群: 1036693403\n\n## 💡 灵感来源\n\n本项目受到以下优秀开源项目的启发：\n\n- [KuGouMusicApi](https://github.com/MakcRe/KuGouMusicApi) - 酷狗音乐 NodeJS 版 API\n- [SPlayer](https://github.com/imsyy/SPlayer) - 一个简约的音乐播放器\n- [MoeKoeMusic](https://github.com/MoeKoeMusic/MoeKoeMusic) - 一款开源简洁高颜值的酷狗第三方客户端\n\n## 📄 免责声明\n\n本项目是基于公开 API 接口开发的第三方音乐客户端，仅供个人学习和技术研究使用。\n\n- **数据来源**：所有音乐数据通过公开接口获取，本项目不存储、不传播任何音频文件\n- **版权声明**：音乐内容版权归原平台及版权方所有，请尊重知识产权，支持正版音乐\n- **使用限制**：禁止将本项目用于任何商业用途或违法行为\n- **责任声明**：因使用本项目产生的任何法律纠纷或损失，均由使用者自行承担\n- **争议处理**：如版权方认为本项目侵犯其权益，请通过 Issues 联系，我们将积极配合处理\n\n**本项目不接受任何商业合作、广告或捐赠。**\n\n## ⚖️ 开源协议\n\n基于 [MIT License](LICENSE) 协议发布。\n\n本项目使用 [mpv](https://mpv.io/) 作为音频播放引擎（LGPL-2.1+ / GPL-2.0+），通过动态链接方式加载。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoowhoami%2Fechomusic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhoowhoami%2Fechomusic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhoowhoami%2Fechomusic/lists"}