NeriPlayer 是一款基于 Jetpack Compose 和 Media3 构建的原生 Android 音频播放器。其名称与图标灵感源自《星空铁道与白的旅行》中的角色「风又音理」。
不同于传统的单一平台播放器,NeriPlayer 致力于在用户自有账号授权的前提下,打破平台壁垒,整合 网易云音乐、Bilibili (B站) 与 YouTube Music 的在线内容,并提供强大的本地化管理、流媒体缓存及 GitHub 私有仓库同步功能。它不提供服务,而是作为你连接已有音乐服务的桥梁。
核心特性
1. 多源聚合与无缝播放
- 三大平台支持:
- 网易云音乐:登录、搜索、精选歌单/专辑访问、播放、下载、歌词补全。
- Bilibili:登录、搜索、收藏夹访问、视频转音频播放(分 P 支持)、下载。
- YouTube Music:登录、歌单浏览、播放、下载。
- (注:QQ 音乐目前仅用于元数据/歌词补全)
- 分层搜索体系:
- Explore 页:聚合网易云、B站、YTM 的搜索与推荐。
- SearchManager:利用网易云和 QQ 音乐接口补全封面、歌词等元数据,确保播放体验完整。
2. 极致的本地可控性
- 流媒体缓存:基于
SimpleCache + LRU策略,默认 1GB 上限,支持手动清理,让在线歌曲也能“离线”听。 - 应用内下载:支持将在线音源下载到应用专属目录,自动同步歌词与封面,方便离线管理。
- 本地导入:支持系统分享 (
SEND) 或直接扫描设备本地音频文件,统一纳入播放库。 - 数据备份:支持歌单与收藏数据的 JSON 导入/导出,便于设备迁移。
3. GitHub 私有仓库同步
- 元数据云同步:可选将本地歌单、收藏、最近播放记录同步至用户自己的 GitHub 私有仓库。
- 安全存储:GitHub Token 通过 Android Keystore + EncryptedSharedPreferences 加密存储,确保凭证安全。
- 智能同步:基于
WorkManager实现延迟同步(变更后 5 秒)与周期同步(每小时),采用三路合并算法处理冲突。 - 隐私边界:仅同步元数据(歌单/历史),绝不上传音频文件、缓存、Cookie 或播放 Token。
4. 高级功能与交互
- 一起听 (Listen Together):
- 基于 WebSocket 的实时同步播放状态。
- 支持创建房间、权限控制(房主/听众)及房主离线检测。
- 服务端基于 Cloudflare Workers + Durable Objects,低延迟且易于自建。
- 音频反应式背景:在 Android 13+ 设备上,Now Playing 页面可选启用基于
RuntimeShader的动态音频可视化背景。 - 开发者模式:连续点击版本号 7 次开启,内含各平台 API 探针、日志查看器,方便调试与问题排查。
技术架构
- UI 框架:Jetpack Compose (单 Activity 架构)。
- 播放核心:Android Media3 (ExoPlayer)。
- 导航:Compose NavHost。
- 后台任务:WorkManager (用于同步与后台播放服务)。
- 网络通信:Retrofit + OkHttp。
- 最低要求:Android 9 (API 28)。
快速开始
1. 安装与初始化
- 从 GitHub Releases 下载最新 APK 并安装。
- 首次启动需阅读并同意免责声明。
2. 配置账号
- 进入设置页,分别登录网易云音乐、Bilibili 或 YouTube Music。
- 注意:NeriPlayer 不提供公共曲库,所有在线内容依赖你的个人账号权限(如会员歌曲仍需会员身份)。
3. (可选) 配置 GitHub 同步
- 在 GitHub 生成一个具有
repo权限的 Personal Access Token。 - 在 NeriPlayer 设置中填入 Token 并配置仓库名称。
- 开启自动同步,享受跨设备元数据同步体验。
4. (可选) 部署“一起听”服务端
- 使用官方提供的 Cloudflare Workers 模板一键部署,或使用社区搭建的服务。
- 在应用内输入服务端地址即可创建或加入房间。
⚠️ 重要说明
- 非盗版工具:NeriPlayer 只是一个播放器外壳,所有内容来源均依赖第三方平台接口。请尊重版权,遵守各平台服务条款。
- 账号安全:虽然 Token 加密存储,但建议定期更换 GitHub Token 及各平台密码,以保万全。
- 稳定性:由于依赖第三方非公开 API,部分功能可能随平台接口调整而暂时失效,请关注项目更新。











评论