NeriPlayer 是一款基于 Jetpack Compose + Media3 的 Android 音乐播放器,支持网易云、Bilibili、YouTube Music 多源播放。仿 Apple Music 歌词、GitHub 同步、一起听、音效调节。Android 9+ 免费无广告。
🎤 引言
说实话,安卓音乐播放器这个赛道已经卷到没边了——手机厂商自带的应用商店里躺着几十个"支持网易云"的 App,大多数都是套个壳,歌词显示残缺、播放一卡一卡、换个网络就歇菜。
NeriPlayer 不太一样。
它把多源播放、GLSL 流体背景、GitHub 元数据同步、甚至"一起听"(多人实时同步播放)全部做进了同一个应用里,而且用的是 Jetpack Compose + Media3 这样的现代 Android 技术栈,不是那种 WebView 套壳能比的。
更难得的是:没有公共云端服务,数据全存在你自己手里——GitHub 私有仓库或 WebDAV,自己掌控,不被平台绑架。
⭐ 核心功能
1. 多源播放 — 网易云 / B站 / YouTube Music 一个不落
NeriPlayer 的核心逻辑是"账号即能力":你在各平台有账号,就能搜、能播、能下载。PlayerManager 统一管理音源解析、播放队列和失败重试。
特别值得一提的是网易云自动换源机制:歌曲无版权、只有试听片段时,会先尝试降低音质,再自动匹配 Bilibili 音源兜底。这个逻辑解决了很多网易云用户的痛——版权灰了不用手动去找 B 站版,App 自己就搞定了。
Bilibili 取流支持 DASH 音频重试和 html5/mp4 渐进流回退,YouTube Music 包含 PoToken / JS Challenge 支持。
2. 仿 Apple Music 歌词体验
SyncedLyricsView 支持逐词高亮、翻译歌词、音译显示、歌词偏移、点击跳转和长按分享。LyricShareSheet 可以生成 1080p 歌词卡片。
更实用的是悬浮歌词和状态栏歌词:Android 13+ 可以显示系统悬浮歌词,魅族设备还能用状态栏歌词,SuperLyric 和蓝牙歌词也支持。
3. GLSL 流体背景 — 不是简单高斯模糊
播放页动态背景由 BgEffectPainter 加载 hyper_background_effect.glsl shader,通过 RuntimeShader 逐帧渲染。shader 基于封面取色生成动态色块,接入音频电平数据做音频响应——不是简单地把封面图高斯模糊,是真正的视觉反馈。
4. 去中心化同步 — 数据在自己 GitHub 仓库里
这是 NeriPlayer 最有区分度的功能。播放统计、歌单、收藏、最近播放都可以同步到你自己创建的 GitHub 私有仓库(或 WebDAV),不是上传到任何中心化服务器。
PlaybackStatsRepository 按歌曲稳定身份记录播放次数、收听时长、每日统计桶,参与 GitHub/WebDAV 同步合并。
5. 一起听 — Cloudflare Workers 私有部署
内置"一起听"功能,客户端和 Cloudflare Worker 通过 WebSocket 实时同步。房主可以分享直链给朋友,听众权限可配置,支持循环/随机模式同步、房主离线检测。你也可以部署自己的服务端,不依赖任何公共服务器。
6. 本地歌曲管理
- 支持外部分享导入、设备媒体库扫描、授权文件夹扫描
- 自动识别附近 lrc/txt 歌词和 cover/folder/front 封面
- 大批量扫描先快速预览,再后台补全完整元信息
- 本地歌手自动聚合、拆分合作歌手写法
7. 下载与缓存
不走系统 DownloadManager,而是用共享 OkHttpClient + 工作文件和 sidecar 元数据管理完整落盘流程。支持直链、YouTube Range 分块和 HLS 续传。默认缓存上限 1GB,可按类型分组清理(只清缓存,不删用户主动下载的内容)。
8. 音效调节
内置倍速、音调、系统均衡器预设/手动频段、响度增强、淡入淡出、交叉淡入淡出。USB 独占播放支持 UAC1.0 DAC 设备(采样率/位深/缓冲策略可调)。
9. 脱机模式
NetworkStatusMonitor 自动感知网络状态。脱机时只走本地缓存,本地文件、已下载音频、播放缓存、歌单仍可继续使用。
10. 安全模式与诊断
JVM / Native 崩溃或 ANR 后,下次启动会优先进入 Safe Mode,只开放日志预览导出、配置导出和设置重置。连续点击版本号 7 次可开启开发者模式,出现独立 Debug 页面。
📥 安装与使用
下载地址(Release):
- Release 渠道:https://github.com/cwuom/NeriPlayer/releases
- CI 自动构建(最新代码):https://t.me/neriplayer_ci
- Telegram CI 频道:https://t.me/ouom_pub
版本选择:
arm64-v8a— 大部分手机选这个armeabi-v7a— 老旧 32 位设备x86 / x86_64— 模拟器、Intel 设备、Chromebook
从源码构建:
git clone --recursive https://github.com/cwuom/NeriPlayer.git
cd NeriPlayer
# Android Studio 打开并同步
./gradlew :app:assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk最低要求: Android 9 (API 28)+
首次使用: 启动后先阅读免责声明并完成引导,Android 13+ 会申请通知权限。
🎯 适用场景
- 网易云灰歌党:版权灰了自动换 Bilibili 音源,不用手动找
- 多平台音乐用户:同时用网易云、B站、YouTube Music,不想装三个 App
- 在意隐私的用户:播放历史和统计同步到自己 GitHub,不上传到任何第三方
- 极客玩家:一起听私有部署、GLSL shader 背景、USB DAC 直连
- 本地音乐收藏者:本地歌曲管理、歌手聚合、歌词自动匹配
🔍 对比 / 替代方案
| 工具 | 类型 | NeriPlayer 优势 |
|---|---|---|
| 网易云音乐 App | 官方 App | 无版权灰色歌曲限制,无广告 |
| Splayer | 本地播放器 | NeriPlayer 有多平台在线播放 |
| Orbit | Android 音乐 App | 无 GitHub 同步和一起听功能 |
| YouTube Music App | 官方 App | NeriPlayer 无地区限制,支持网易云 |
| 本地播放器 (Shuttle/VLC) | 本地播放 | NeriPlayer 有多源播放能力 |
一句话:如果你用网易云 + B 站 + YouTube Music 且受够了版权灰色歌曲,NeriPlayer 的自动换源 + 本地管理 + GitHub 同步是其他 App 给不了你的组合。
⚠️ 注意事项
- 不提供公共云端曲库:NeriPlayer 需要你自己有各平台账号(网易云/B站/YT Music),没有账号的话在线播放功能不可用。本地歌曲管理和音效功能不依赖账号。
- Release 渠道非严格稳定版:官方说明"Release 渠道不是严格意义上的稳定通道",要尝鲜最新功能建议走 CI Builds(t.me/neriplayer_ci)。
- 部分功能需要 Android 12/13+:GLSL RuntimeShader 动态背景仅 Android 13+,封面模糊仅 Android 12+,低版本会自动降级。
- GitHub 同步需要 Access Token:同步到 GitHub 需要生成 Personal Access Token,应用内新建仓库时默认创建为私有仓库。Token 需要 repo 权限。
- USB 独占仅支持 UAC1.0:如果你用的高端 USB DAC 是 UAC2.0,暂时不支持。
- 一起听需要 Cloudflare 部署:想用自己的服务端,需要部署 Cloudflare Workers(官方有部署模板)。
✅ 总结
NeriPlayer 解决的核心矛盾:不想被任何一个音乐平台绑架版权,又想要统一的歌词体验、播放统计和跨平台管理。
它的优势:
- 多源播放 + 网易云自动换 Bilibili 兜底,版权灰色问题基本自动化解决
- 仿 Apple Music 歌词体验(逐词高亮 + 翻译 + 音译 + 悬浮歌词)
- GitHub/WebDAV 去中心化同步,数据永远在自己手里
- GLSL 音频响应流体背景,不是简单封面高斯模糊
- Jetpack Compose + Media3 现代技术栈,不是 WebView 套壳
- 完整本地管理链路 + USB DAC 支持
- Cloudflare Workers 一起听,可私有部署
不足:
- 需要各平台账号,无公共曲库兜底
- 歌词依赖 LRCLIB 外部来源,部分冷门歌曲可能找不到
- 部分高级功能(USB 独占、一起听)有门槛,需要一定技术基础
推荐给:网易云/B站/YouTube Music 重度用户、被版权灰色歌曲困扰的音乐爱好者、注重隐私和数据自持的极客用户,以及想要一个"全功能统一管理"的 Android 音乐播放器的人。