本项目的名称及图标灵感来源于《星空鉄道とシロの旅》中的角色「风又音理」。
项目采用原生 Android 开发,当前支持 Android 9 (API 28) 及以上设备,遵循 Material You 设计与动效语言,持续探索「聚合音视频内容、保持隐私本地可控」的体验路径。
🚧 Work in progress / 开发中
Warning
本项目仅供学习与研究使用,请勿将其用于任何非法用途。
Note
为保护音乐版权并保障您的使用权益,本软件的音频服务依赖您在第三方平台的账号授权。 会员专属内容仍需遵循原平台的会员规则。
NeriPlayer 是一个专注于「聚合多平台音视频流」的开源播放器,致力于在不复制、不缓存版权内容的前提下,为个人学习与研究提供一个整洁、可控且现代化的播放器体验。核心目标包括:
- 账号即能力:通过用户在第三方平台的合法授权,实现多源搜索与播放。
- 跨平台聚合:整合网易云音乐、哔哩哔哩等平台的播放与账号能力,逐步拓展更多来源。
- 隐私优先:所有播放记录、搜索历史均保留在本地,不上传任何账号信息或媒体数据。
- 开放演进:以 Jetpack Compose + Media3 为基础,欢迎社区协作扩展平台、完善体验。
- 🎧 跨平台音频播放:同一界面内快速切换网易云、B 站等多平台歌曲来源。
- 🔍 统一搜索与元数据补全:聚合多平台搜索接口,自动补齐封面、歌词与曲目信息。
- 🧠 自研播放器管理器:
PlayerManager统一处理播放队列、缓存、失败重试与洗牌逻辑。 - 🌈 Material You & Compose:全局动态色彩、沉浸式背景渲染与可组合式 UI 组件库。
- 🪄 音频可视化背景:基于
ReactiveRenderersFactory+ RuntimeShader 的实时音频反应效果。 - 🔐 零云端存储:不上传、不分发任何媒体文件;Cookie 与账号信息仅保存在本地
DataStore。 - ☁️ GitHub自动同步:可选的歌单云端备份功能,使用GitHub私有仓库加密存储,支持多设备同步。
- 核心模块:
core/api:封装各平台 API(网易云、B 站、跨平台搜索等)。core/player:基于 Media3 的播放器服务与前台通知,处理音轨解析、缓存策略与状态同步。data:使用 Jetpack DataStore 与 JSON 文件维护设置、Cookie、本地歌单等持久化数据。data/github:GitHub同步模块,使用三路合并算法实现跨设备歌单同步,Token加密存储。ui:Jetpack Compose 构建的多 Tab 导航、Now Playing 页面以及调试工具。
- 依赖注入:通过
AppContainer实现 Service Locator,集中管理客户端、仓库、搜索服务与播放器实例。 - 扩展方式:新增平台时实现对应 API/仓库,并在
AppContainer和PlayerManager中注册即可复用现有能力。
想深入了解实现细节?请阅读 CONTRIBUTING.md 中的「目录结构与关键实现」与「扩展指南」。
NeriPlayer 支持将歌单数据自动备份到 GitHub 私有仓库,实现跨设备同步:
- 🔒 安全加密:GitHub Token 使用 Android Keystore 加密存储
- 🔄 智能同步:修改后自动同步,支持冲突自动合并
- 📱 跨平台:支持 Android 和桌面端(开发中) 数据互通
- 🚀 零配置:自动创建私有仓库,或使用现有仓库
- 在设置 → 备份与恢复 → GitHub 自动同步
- 点击"配置 GitHub 同步"
- 在 GitHub 创建 Personal Access Token (需要
repo权限) - 输入 Token 并验证
- 选择创建新仓库或使用现有仓库
- 开启"自动同步"开关
- 前往 GitHub Action 中点击最后一次构建成功的版本并下载 Artifacts 后解压
- 前往 NeriPlayer CI Builds
- 克隆仓库并使用 Android Studio(最新稳定版)打开:
git clone https://github.com/cwuom/NeriPlayer.git cd NeriPlayer - 同步依赖(首次打开 Android Studio 会自动执行)。
- 构建调试版:
./gradlew :app:assembleDebug
- 安装 APK(需要 Android 9+ 设备):
adb install -r app/build/outputs/apk/debug/app-debug.apk
- 在设置页面连续点击 版本号 7 次,即可开启开发者模式与调试入口,用于自测或反馈问题。
发布版构建与签名流程请参阅 CONTRIBUTING.md。
- 视频播放
- 评论区
- 清理缓存
- 添加到播放列表
- 平板适配
- 歌词悬浮窗
- 国际化
- 第三方平台持续扩展(YouTube、QQ 音乐、酷狗音乐等)
- 网易云音乐适配 / NetEase Cloud Music
- 哔哩哔哩适配 / BiliBili
⚠️ QQ 音乐的授权有效期过短,无法长期使用。
如果您有可行的解决方案,请在Issues中提出,我们会尽快评估并适配。
- 反馈前请确保已开启调试模式(设置界面点击 版本号 7 次)。
- 前往 Issues,按照模板提供:系统版本、机型、应用版本、复现步骤及关键日志。
- 可使用以下命令过滤调试日志:
adb logcat | grep "[NeriPlayer]"
- 歌单详情接口存在 1000 首曲目获取上限,目前仍使用
/api/v6/playlist/detail。 - 如有更大规模歌单需求,欢迎在 Issues 中讨论改进方案。
- 请合理配置代理规则,全局代理可能导致部分接口返回异常数据。
- NeriPlayer 仅作为跨平台聚合工具,不上传、不分发、不修改任何音视频文件。
- 不收集任何 个人身份信息、设备信息 或行为轨迹。
- 播放与搜索记录仅保存在本地;下载文件不会上传或回传给开发者/第三方。
- 不接入第三方统计、崩溃分析或广告 SDK。
- 第三方平台访问日志由对应平台按照其隐私政策处理。
| netease-cloud-music | ✨ 网易云音乐 Golang 实现 🎵 |
| bilibili-API-collect | 哔哩哔哩-API收集整理【不断更新中....】 |
| HyperCeiler | HyperOS enhancement module - Make HyperOS Great Again! |
- 仅维护核心功能,其他功能欢迎社区贡献。
- 仓库可能因特殊原因暂停更新。
- 欢迎提交 PR 与反馈!
- 由于项目特殊性,暂不接受任何形式的捐赠。
- 欢迎通过提交 Issue、PR 或分享使用体验来支持项目发展。
NeriPlayer 使用 GPL-3.0 开源许可证发布。
这意味着:
- ✅ 你可以自由地使用、修改和分发本软件;
⚠️ 分发修改版时须继续以 GPL-3.0 协议开源;- 📚 详细条款请参阅 LICENSE。
感谢你对 NeriPlayer 的兴趣!在提交 PR 前,请先阅读完整的 CONTRIBUTING.md。