Files
StudyDiary-20261009/02-学习笔记/自建音乐库和有声书库.md
CrazyJasonwell e97be9ac8c commit all
2026-10-09 22:06:40 +08:00

281 lines
11 KiB
Markdown
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 音乐服务器
- navidrome 不支持strm
- songloft 待部署
- 飞牛音乐 不支持strm 升级后可以添加远程挂载了!
- Music TagWeb 2.0 支持subsonic strm 已购买永久使用
- jellyfin/emby
- audiodock 声仓 支持strm jellyfin/navidrome
# 音乐App
- ✅音流 iOS 支持navidrome+subsonic+emby+jellyfin+plex 支持strm
- ✅箭头音乐 iOS+Android 支持navidrome+飞牛音乐+audiobookshelf+subsonic
- ❌流云音盒 鸿蒙 5+
- ❌音乐方舟 鸿蒙 5+
- Prologue Android
- Symfonium Android navidrome+audiobookshelf(From local files and NAS to Plex, Emby, Jellyfin, Audiobookshelf, Subsonic, OpenSubsonic, Navidrome and cloud drives, Symfonium unifies your music and audiobook libraries in one Android player.)
- ✅流云 iOS navidrome+icloud+飞牛音乐+songloft+百度网盘+emby 永久会员38元
- jellyfin及第三方播放器
- audiodock 安卓
# 有声书服务器
- ✅audiobookshelf 支持RSS 生态支持
- ❌leelaa reader server 暂停使用 鸡肋!支持RSS 不支持wma 已购买永久使用
- ✅ting reader 听悦 支持RSS 有丰富的插件 支持strm+刮削
- 声仓 audiodock
-
-
有声书App
- ✅听见有声 audiobookshelf+ting reader+leelaa+emby+audiodown+musicDL iOS 支持strm
- leelaa reader 对应server 支持strm(iOS有bug) 不能自动刮削 不支持wma 安卓支持strm iOS说是支持strm 测试有问题
- ✅still 希声 audiobookshelf iOS
- ✅audiobookshelf Android 自带
- Buchable Android audiobookshelf
- lissen audiobookshelf Android
- ✅plappa iOS 永久38元
- ✅ting reader app Android+ipa(须自签名) 安卓/Mate30有点卡 leelaa要流畅一点
📊 总结方案:
1. ⭐音乐:navidrome+飞牛音乐 流云+音流
2. ⭐有声:audiobookshelf+ting reader 听见有声(iOS)+still(iOS)+ting reader(android)
- audiobookshelf用于每天定时下载博客RSS到本地,由tingreader监听更新书库
- tingreader:主要保存在115153上,openlist生成strm文件,将strm文件保存到/vol4/1000/MediaLibrary/有声书目录
- audiobookshelf:将115153远程挂载作为本地目录文件,添加到媒体库,效果不好!
-
英语+历史 115153
- 💡箭头音乐App 两者通用 箭头app bug:audiobookshelf 媒体库只加载了一个,原本是2个,待观察!
- ⚠️鸿蒙上的音乐方舟和流云音盒app待试用
- ✨songloft可以与小爱同学协同,待搭建。
歌曲组合:飞牛音乐+箭头音乐app
流云音乐app 界面差点 歌词跟歌曲对不上
箭头音乐app:经常没有歌词。。。飞牛web:有歌词
# 参考资料
## Ting‑Reader(听悦)自建有声书库完整评测
> Ting‑Reader(听悦)**国产开源Docker有声书服务端**,主打中文有声书,Rust后端,对中文资源友好,**和Audiobookshelf(ABS)是现在自建有声书两大主流选择**。
## ✨核心亮点
1. **中文元数据刮削很强** 对接喜马拉雅源,自动抓取书名、演播者、简介、封面,中文有声书识别远好于ABS(ABS英文刮削强,中文弱),文件名混乱也能匹配。
2. **支持WebDAV库** 不只是本地目录,可以直接挂载Alist、115、夸克WebDAV网盘当书库,不用把文件拷贝到NAS本地磁盘。
3. **官方原生客户端**
- Android:官方APK直接下载,离线缓存
- Windows/macOS/Linux:Flutter桌面客户端
- Web/PWA网页端,手机浏览器直接用
- iOS:**只有未签名IPA,不能App Store直接装**,普通iPhone只能用网页PWA,无法得到CarPlay支持。
4. 播放功能:倍速、睡眠定时、跳过片头片尾、多用户独立进度、根据封面自动变色UI、插件系统(热插拔不用重启容器)。
5. 资源占用低,Rust编写,小主机/树莓派/群晖/飞牛fnOS都能跑,提供现成docker‑compose配置。
```
# Ting‑Reader docker‑compose.yml
services:
ting-reader:
image: dqsq2e2/ting-reader:latest
container_name: ting-reader
ports:
- "3000:3000"
volumes:
- ./data:/app/data
- ./plugins:/app/plugins
- ./temp:/app/temp
- /你的有声书本地目录:/app/storage
restart: always
environment:
- RUST_LOG=info
- TING_SERVER__HOST=0.0.0.0
- TING_SERVER__PORT=3000
```
访问地址:`http://nasip:3000`
## ⚠️短板(重点,对比Audiobookshelf)
1. **iOS硬伤**:没有App Store上架版本,官方只提供未签名IPA,普通用户只能网页PWA;网页没有系统后台播放、CarPlay、离线缓存,iPhone体验大打折扣。
> ABS虽然官方iOS也TestFlight,但大量第三方App(希声Still、AudioBooth)App Store可直接下,支持CarPlay离线。
2. **没有播客订阅**:不能订阅网络播客;ABS原生完整播客功能。
3. **无电子书阅读(EPUB/PDF)**,只做音频;ABS可以同时管理有声书+电子书。
4. **第三方客户端几乎没有**,只能用官方客户端/PWA;ABS生态庞大,大量社区App。
5. m4b内置章节解析能力弱于ABS;多文件分割的有声书识别合并不如ABS成熟。
## 📊 Ting‑Reader vs Audiobookshelf(ABS)选型对比
| 项目 | Ting‑Reader(听悦) | Audiobookshelf(ABS) |
| ----------- | ------------------ | ------------------------------------- |
| 中文刮削 | ⭐⭐⭐⭐⭐喜马拉雅源,中文强 | ⭐⭐ 英文强,中文需要额外插件⭐ |
| WebDAV网盘库 | ✅原生支持 | ❌不支持WebDAV,只能本地挂载 |
| 安卓客户端 | ✅官方APK | ✅官方APK+大量第三方 |
| iPhone | ❌无商店版,仅网页PWA | ✅App Store大量第三方App(希声Still等)支持CarPlay |
| 播客功能 | ❌无 | ✅完整播客订阅 |
| EPUB/PDF电子书 | ❌ | ✅支持 |
| 第三方客户端生态 | 极少 | 非常丰富 |
| 适合资源 | 中文有声书,大量网盘WebDAV资源 | 有声书+播客+电子书,本地文件库 |
## ✅怎么选
### 选 Ting‑Reader(听悦),如果你:
1. **主力安卓手机,少量/不用iPhone**;
2. 大量中文有声书,想要自动刮削中文信息,不想手动整理标签;
3. 需要直接WebDAV挂载网盘(Alist等)做书库,不想把文件下载本地NAS;
4. 不需要播客、电子书阅读。
### 选 Audiobookshelf(ABS),如果你:
1. **有iPhone,想要CarPlay、原生App体验**;
2. 需要播客订阅、EPUB电子书阅读;
3. 本地磁盘存储有声书,不需要WebDAV源;
4. 希望多第三方客户端可以自由选择。
> 💡折中方案:两个docker同时跑,ABS处理本地库+播客,Ting‑Reader处理WebDAV网盘中文有声书,资源占用都很低。
## 补充注意点
1. Ting‑Reader网页版在iPhone上:锁屏后容易断播,系统限制,**无法像原生App那样后台稳定播放**。
2. 外网访问建议套反向代理开启HTTPS,不要裸端口暴露公网。
3. WebDAV添加库时,网络网盘资源扫描受网速影响,不要一次性扫描超大库。
如果你需要,我可以把两者的反向代理Nginx配置一并给你。
## Nginx 反向代理配置
> 前提说明
1. 假设域名:
- `abs.example.com` → 代理 Audiobookshelf(ABS),容器内部端口 `80`,宿主机端口 `13378`
- `ting.example.com` → 代理 Ting‑Reader,容器内部端口 `3000`,宿主机端口 `3000`
2. 使用 `certbot` 获取 SSL 证书;证书路径 `/etc/letsencrypt/live/你的域名/`
3. Nginx 与 docker 服务在同一台机器,后端地址写 `127.0.0.1:端口`;不在同一台则替换为对应内网IP。
4. 两个服务都需要**websocket支持**,否则网页端实时状态、播放进度同步会异常。
### 1)Audiobookshelf (abs.example.com) nginx 配置
```
server {
listen 80;
server_name abs.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name abs.example.com;
ssl_certificate /etc/letsencrypt/live/abs.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/abs.example.com/privkey.pem;
proxy_set_header Host $host;
proxy_set_header X‑Real‑IP $remote_addr;
proxy_set_header X‑Forwarded‑For $proxy_add_x_forwarded_for;
proxy_set_header X‑Forwarded‑Proto $scheme;
# WebSocket 关键配置,ABS必须
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
location / {
proxy_pass http://127.0.0.1:13378;
proxy_buffering off;
client_max_body_size 100M;
}
}
```
### 2)Ting‑Reader (ting.example.com) nginx 配置
```
server {
listen 80;
server_name ting.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name ting.example.com;
ssl_certificate /etc/letsencrypt/live/ting.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ting.example.com/privkey.pem;
proxy_set_header Host $host;
proxy_set_header X‑Real‑IP $remote_addr;
proxy_set_header X‑Forwarded‑For $proxy_add_x_forwarded_for;
proxy_set_header X‑Forwarded‑Proto $scheme;
# Ting‑Reader 同样需要WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
location / {
proxy_pass http://127.0.0.1:3000;
proxy_buffering off;
client_max_body_size 100M;
}
}
```
### 单域名子路径模式(不推荐,简单给示例)
> 不建议子路径部署(如 `https://xxx.com/abs`、`https://xxx.com/ting`),两个程序对子路径兼容都一般,容易出现静态资源、websocket异常。优先用**子域名**。
### 使用步骤
1. 将配置写入 nginx sites‑available 下,软链接到 sites‑enabled
2. 检查配置语法:
```
nginx -t
```
3. 重载nginx
```
systemctl reload nginx
```
### 重要踩坑提示
1. **容器绑定地址**:docker 端口映射必须是 `0.0.0.0:xxxx:xxxx`,不要只绑定 127.0.0.1(如果你nginx不在本机)。
2. 不要直接把容器端口暴露公网,全部走nginx 443 HTTPS。
3. ABS第三方客户端(希声Still、AudioBooth等)填写地址时直接填完整 `https://abs.example.com`,不要带端口。
4. Ting‑Reader网页/PWA访问也直接用 `https://ting.example.com`。
5. 如果你使用 Nginx Proxy Manager(NPM),不需要手写上面配置,网页界面填后端地址,开启Websocket开关即可。
### NPM(Nginx Proxy Manager)界面填写要点
- ABS:Forward Hostname/IP `127.0.0.1`,Port `13378`,勾选 **WebSockets Support**
- Ting‑Reader:Forward Hostname/IP `127.0.0.1`,Port `3000`,勾选 **WebSockets Support**
- 申请SSL证书,强制HTTPS。
> 如果你需要,我可以顺带给一份两者的 Caddy v2 配置(更简单,自动https)。
## audiodock 声仓
https://post.smzdm.com/p/arz6orng/
https://laosu.tech/2026/03/28/%E9%9F%B3%E4%B9%90%E5%92%8C%E6%9C%89%E5%A3%B0%E8%AF%BB%E7%89%A9%E6%92%AD%E6%94%BE%E5%99%A8AudioDock/
https://github.com/NasDock/AudioDock