Aching Notes

技术笔记、折腾记录和长期项目整理

115 网盘 + Emby + STRM 直链播放:告别 FUSE 挂载的折腾之路

这篇记录的是我把媒体库从「网盘 FUSE 挂载直读」改成「STRM 文件 + 播放时重定向」的过程。结论先说:媒体库负责展示和管理,真正的视频流量尽量交给网盘侧直链/CDN,不让家宽或中转机长期扛视频流。

为什么要改

最早的做法是把 115 网盘挂成一个本地目录,再让 Emby 直接扫描。短期好用,长期问题明显:

  • 扫描不稳定,FUSE 偶发卡住或断开。
  • 播放路径不理想,容易把流量压到自建机器上。
  • 目录改名、移动和元数据刷新容易留下脏状态。

所以这次不是继续补 FUSE,而是把 FUSE 从播放链路里拿掉。

现在的链路

这套方案可以理解成两段:前半段负责“看起来像一个正常媒体库”,后半段负责“把播放尽量导向网盘直链”。

用户端
  -> 媒体入口
  -> go-emby2openlist
  -> Emby 媒体库与播放控制
  -> STRM 文件
  -> OpenList / 115 API 获取真实地址
  -> 客户端跳转到网盘直链播放

最关键的点是:Emby 还是负责海报墙、观看记录和客户端体验;go-emby2openlist 负责把 STRM 里的路径解析成真实播放地址;真正的视频流量尽量不要走反代服务器。

组件分工

组件职责注意点
OpenList管理网盘目录,提供文件列表和下载地址能力API 调用要控制频率,避免触发限速
STRM 文件给 Emby 提供可扫描的媒体入口路径映射必须稳定,不要频繁改根目录
go-emby2openlist解析 STRM,协助重定向播放请求入口应该先进它,而不是直接打到 Emby
Emby媒体库、海报墙、观看记录和客户端体验Web 播放器兼容性不如外部播放器稳定

实施重点

STRM 要放在持久化目录里

OpenList 生成的 STRM 必须落在 Docker volume 里。否则容器重建后文件丢失,Emby 的媒体库也会跟着失效。

路径映射按 Emby 视角写

go-emby2openlist 的路径映射不要按宿主机绝对路径写,而要按 Emby 容器里看到的路径写。最容易错的地方就是把宿主机路径直接塞进去。

入口先到中间层

如果入口直接反代到 Emby,播放请求就绕过了解析和重定向逻辑。正确做法是先到 go-emby2openlist,再由它和 Emby 协作处理页面和播放请求。

踩过的坑

  • Emby 首次识别 STRM 时,部分内容可能会被误判成普通目录。
  • Web 播放器经常会先发 HEAD 请求,实际体验不一定最好。
  • 批量生成 STRM 和刷新媒体库都要限速,别硬怼并发。
  • 目录改名后要清理旧 STRM,不然容易出现重复条目和失效条目。

现在的取舍

这套方案不是最省事的,但比 FUSE 直读稳定。它把媒体服务拆成两层:Emby 负责“像一个正常媒体库”,OpenList / go-emby2openlist 负责“让播放尽量走网盘直链”。

后面更值得优化的是海报墙和元数据,而不是继续让自建服务器承担视频流量。只要播放链路能稳定跳到直链,这套架构就算达成目标。


已发布

分类

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注