Player 是一款使用 Electron 和 Vite 构建的跨平台媒体播放器,旨在提供一个集本地播放、在线搜索与下载、以及丰富视觉体验于一体的现代化解决方案。其界面设计灵感来源于 Spotify,注重美观与用户体验。
| 主播放界面 (音频) | 同步歌词 & 快捷键设置 |
![]() |
![]() |
| 无限画廊背景 | 在线搜索与本地导入 |
![]() |
![]() |
- 多媒体支持: 同时支持本地音频与视频文件播放。
- 播放列表管理: 直观的播放列表,支持搜索(拼音/首字母)、删除和排序。
- 多种播放模式: 提供列表循环、单曲循环和随机播放模式。
- 可自定义快捷键: 支持用户自定义全局快捷键,包括长按与短按组合(如长按快进、短按步进),提升操作效率。
- 倍速播放控制: 支持在播放时动态加速或减速,并通过UI实时反馈。
- 状态持久化: 自动保存播放进度、音量、播放模式等状态,下次打开时无缝衔接。
🎨 丰富的视觉体验
- 现代化UI: 灵感源于 Spotify 的现代化、美观且用户友好的界面设计。
- 动态渐变背景: 自动从歌曲封面或视频帧中提取颜色,生成流畅的动态渐变背景。
- 音频可视化: 在播放音频时,专辑封面周围会产生与音乐节奏同步的动态光效。
- 无限画廊: 在播放器外的空白区域拖拽,即可在无限滚动的专辑封面画廊中漫游,点击封面直接播放。
- 沉浸式视图与屏保: 双击播放区域可进入无边框沉浸模式;F11键可启动无限画廊自动滚动的屏保模式。
🎵 内容管理与获取
- 在线音乐搜索 (VIP支持): 内置在线音乐搜索引擎,并能智能识别会员歌曲。播放时会先加载试听版本,同时在后台无缝获取并切换到完整音源,保证流畅体验。
- 一键缓存: 搜索到的在线歌曲(包括会员歌曲的完整音源)可一键下载到本地媒体库,并自动保存封面和歌词。
- 跨平台文件关联: 在 Windows, macOS 和 Linux 上均可将 Player 设置为
.mp4,.mkv,.mp3等多种媒体文件的默认打开方式。 - 拖拽导入: 支持直接将音频或视频文件拖拽到播放器窗口,快速添加到媒体库。
- 本地媒体库导入: 强大的本地文件夹导入功能,可递归扫描指定目录,智能匹配同名的音频、封面和歌词文件,并将其复制到应用媒体库中。
- 智能封面生成: 当任何本地导入的歌曲缺少封面时,能根据歌曲标题自动生成风格化的占位封面图。
- 多平台链接解析: 支持粘贴 某音/某B 等平台的分享链接,直接下载无水印视频到本地。
🎤 歌词与交互
- LRC歌词同步: 完美支持
.lrc格式的歌词文件,并实现逐行高亮同步滚动。 - 歌词拖拽定位: 支持在歌词界面拖拽歌词,快速定位到歌曲的任意时间点。
- 桌面端框架: Electron
- 构建工具: Vite + Electron Forge
- 前端: HTML5, CSS3, Vanilla JavaScript (ESM)
- 后端 (Main Process): Node.js
- 核心库:
axios: 用于处理网络请求。pinyin-pro: 为播放列表和搜索提供强大的中文拼音支持。yt-dlp-wrap-plus: 用于解析 YouTube 等平台链接。m3u8-parser: 用于解析 HLS (m3u8) 视频流。canvas: 用于在后端生成占位封面图。p-limit: 控制并发下载,防止请求过多。
- 特色实现:
- 依赖注入 (DI): 后端采用轻量级DI容器管理服务依赖,代码结构清晰,易于测试和扩展。
- 服务/提供者架构 (策略模式): 将不同下载源(如B站、抖音)的实现逻辑封装在独立的
Provider中,由DownloadService统一调度,易于新增支持。 - 在线音乐服务适配层: 新增
MusicApiService,封装并统一了在线音乐API(基于重构的Meting),实现了VIP歌曲识别、无缝切换和URL缓存等高级逻辑。 - 文件关联: 通过
Electron Forge的fileAssociations和MIME Type配置,实现了跨平台的原生文件关联。 - 自定义协议 (
media://): 安全地从应用userData目录提供本地媒体文件。 - IPC通信: 使用
contextBridge在主进程和渲染进程之间安全通信。
您可以从项目的 Releases 页面下载适用于您操作系统的最新版本。
- Windows: 下载
.exe安装程序。
- 从文件夹导入: 点击右下角的 “添加资源” 图标 -> “导入本地资源” -> 选择您的音乐文件夹。
- 拖拽文件: 直接将一个或多个媒体文件拖拽到播放器窗口内。
- 文件关联: 在系统设置中将 Player 设为默认播放器后,双击媒体文件即可直接播放。
- Node.js (建议 v18 或更高版本)
npm或yarn
-
克隆仓库
git clone https://github.com/git-hub-cc/Player.git cd Player -
安装依赖
npm install
-
运行开发环境 此命令将启动 Vite 开发服务器和 Electron 应用,并支持热重载。
npm start
-
构建可执行文件 此命令将根据您的操作系统,使用 Electron Forge 构建最终的可执行文件和安装包,输出到
out目录。npm run make
.
├── src/
│ ├── backend/ # 主进程核心后端逻辑
│ │ ├── meting/ # 重构的 Meting 音乐API引擎
│ │ ├── providers/ # 各平台链接解析器 (策略模式)
│ │ ├── services/ # 核心服务 (下载、媒体库、在线音乐适配层等)
│ │ ├── bootstrap.js # DI容器配置
│ │ ├── container.js # DI容器实现
│ │ └── main-api.js # Electron主进程入口
│ ├── preload/ # Electron预加载脚本
│ └── renderer/ # 渲染进程UI与逻辑 (Vite根目录)
│ ├── css/
│ ├── js/
│ ├── assets/
│ └── index.html
├── forge.config.js # Electron Forge 配置文件
└── package.json # 项目依赖与脚本
我们对 Player 的未来充满期待,以下是正在规划中的一些激动人心的功能:
- 目录式媒体库: 重构媒体库,支持以文件夹视图进行浏览和管理,并能实时监控目录变动,自动同步文件增删。
- 内置媒体工具: 在右键菜单中加入实用工具,例如一键将
.mkv视频无损转封装为兼容性更好的.mp4格式。
- 专属设置页面: 新增一个独立的设置面板,用户可以在此管理核心组件(如下载或更新 FFmpeg/yt-dlp)、配置应用行为等。
- 播放历史与进度记忆: 记录所有播放过的媒体,并记住每个文件的最后播放位置,方便下次继续观看或收听。
这是一项旨在彻底改变音乐浏览体验的创新功能。
- 核心概念: 我们将不再局限于传统的列表式歌单,而是将您的整个音乐库可视化为一个可以自由探索的 3D情绪星云。
-
数据维度:
- 每首歌曲都会成为星云中的一个“星球”,其在三维空间中的位置
$(x, y, z)$ 由歌曲的 情绪(Valence)、能量(Energy) 和 节奏感(Danceability) 决定。 - 星球的 颜色 将由其封面主色调决定,标签(如 "Live", "Remix", "Acoustic")则通过智能分析文件名生成。
- 每首歌曲都会成为星云中的一个“星球”,其在三维空间中的位置
-
交互体验:
- 探索: 您可以用鼠标自由地拖拽旋转、滚轮缩放,沉浸式地漫游在由您的音乐构成的宇宙中。
-
框选生成歌单: 最核心的交互——按住
Shift键在星云中拖拽出一个选择框,所有被框选的“星球”(歌曲)将立刻被组合成一个新的播放列表。这意味着您可以直观地“画”出一个区域,来创建符合特定情绪和氛围的歌单(例如,“左下角那片安静、忧伤的区域”)。
- 技术驱动: 此功能将由 Spotify 的音频分析API、高效的文件名标签匹配算法以及轻量级的原生JS 3D渲染引擎驱动,确保在不引入大型库的情况下实现流畅体验。对于无法匹配的歌曲,将考虑使用大语言模型进行辅助分析。
- 在线音乐搜索与播放功能基于开源项目 Meting 进行了二次开发与集成。
- 部分会员歌曲解析功能参考了 GD音乐台 (music.gdstudio.xyz) 提供的思路。使用过程如遇问题可 B 站私信:GD-Studio。
本项目中使用的所有在线媒体资源均收集自互联网,仅供个人学习和技术研究使用,严禁用于任何商业用途。所有媒体内容的版权归原作者或其各自的版权所有者所有。
如果您继续使用本项目,即表示您同意并承诺遵守以上声明。如因使用不当产生任何法律纠纷,本人概不负责。如有侵权,请与我联系删除。
本项目采用 MIT 许可证。



