自建媒体服务器与在线播放器:一种现代化的流媒体架构

作者: OnlinePlayer Team
教程自托管openlistalist媒体服务器nas
自建媒体服务器与在线播放器:一种现代化的流媒体架构

多年来,自托管媒体领域一直被 Plex、Jellyfin 和 Emby 等单体解决方案所主导。这些平台功能强大,但它们需要沉重的服务器资源:数据库、转码引擎,以及因为不支持浏览器直接播放而需要在每个设备上安装的专用客户端 App。

在 2025 年,一种更轻量、模块化的架构正在获得关注:解耦式流媒体栈 (Decoupled Streaming Stack)

这种方法将你的存储层(OpenList, AList, FileBrowser)与播放层(无状态的 Web 播放器)分离开来。结果如何?一个可以在树莓派上运行、零客户端安装需求、且完全尊重你隐私的系统。

架构:存储 vs 播放

1. 存储层:OpenList / AList

像 OpenList(AList 的一个分支)这样的工具充当了你文件的统一 API 网关。它们不试图成为一个媒体服务器;它们只是暴露一个标准化的文件系统 API。

  • 后端集成:将本地 NAS 文件夹、S3 存储桶或云盘(Google Drive, Dropbox, 阿里云盘)映射为单一目录树。
  • 协议:通过 HTTP/WebDAV 提供文件服务,支持 Range 请求(这对流媒体至关重要,允许拖动进度条)。
  • 资源占用:极低。可以在路由器或最廉价的 VPS 上运行。

2. 播放层:OnlinePlayer

无需安装专用 App,直接使用像 OnlinePlayer 这样的 Web 应用。

  • 客户端逻辑:直接在浏览器中进行播放列表管理和交互。
  • 直连模式:播放器直接连接到你的 OpenList 服务器。流量不经过任何第三方后端中转,保护你的隐私。
  • 格式支持:专为浏览器原生格式(如 MP4WebM)优化。请注意,原始的 MKVAVI 文件在没有服务端转码的情况下可能无法在浏览器中直接播放。

为什么要选择解耦架构?

特性 单体架构 (Plex/Jellyfin) 解耦架构 (OpenList + Web Player)
部署 复杂 (数据库, 转码配置) 简单 (Docker 容器 + 网址)
客户端 需要安装 App 任何 Web 浏览器
隐私 元数据通常会被抓取/共享 私密 (点对点 HTTP 直连)
转码 服务端 (CPU/GPU 密集) 客户端 (依赖浏览器能力)
元数据 自动海报/演员表 基于文件系统 (所见即所得)

对于那些相比算法推荐和海报墙,更看重速度控制权隐私的用户来说,这种设置是理想的选择。

实施指南

让我们搭建一个环境,让你能从自定义域名的浏览器上,观看家中 NAS 里的电影。

第一步:部署 OpenList

在 Docker 中运行 OpenList 以暴露你的媒体文件夹。

docker run -d --name openlist \
  -v /mnt/user/movies:/movies \
  -p 5244:5244 \
  openlistteam/openlist:latest

如果你需要远程访问,请确保你的路由器转发了 5244 端口(或使用 Nginx 等反向代理)。

第二步:连接应用

OnlinePlayer 内置了 OpenList/AList API 的集成客户端。这允许它浏览你的目录结构,而无需手动复制粘贴链接。

  1. 打开 OnlinePlayer
  2. 选择 "云盘/服务器" 或 OpenList 图标。
  3. 输入你的服务器 URL(例如 https://nas.yourdomain.com)。
  4. 输入你的访问令牌(如果配置了的话)。

第三步:浏览与流媒体

连接成功后,你的文件层级会立即显示。

  • 点击文件夹进行导航。
  • 点击视频文件(如 .mp4)将其添加到当前播放列表。
  • 播放:浏览器立即开始流式传输。

获得流畅流媒体的技术考量

由于此架构依赖客户端(浏览器)而非服务端转码,请记住以下因素:

1. 网络带宽

因为服务器发送的是原始文件,你的上传速度(家庭端)必须匹配视频的码率。

  • 1080p H.264:需要约 5-10 Mbps 上传带宽。
  • 4K HEVC:需要约 25-50 Mbps 上传带宽。

2. 编码兼容性

大多数现代浏览器(Chrome/Edge/Safari)原生支持 H.264 和 AAC。

  • HEVC/H.265:在现代硬件上(Chrome 107+, Safari)受支持。
  • DTS 音频:浏览器支持通常较差;AAC 或 AC3 是首选。

3. 安全性

切勿在没有保护的情况下将原始 HTTP 文件服务器暴露给公共互联网。

  • 使用 HTTPS:配置反向代理(Caddy/Nginx)并使用 Let's Encrypt 证书。
  • Token 认证:确保你的 OpenList 实例设置了访问密码或 Token。

结论

解耦式流媒体架构代表了向简约的回归。通过结合像 OpenList 这样强大的文件网关和有能力的纯 Web 播放器,你可以构建一个可移植、私密且免维护的媒体系统。

没有数据库会损坏,没有转码缓冲会卡顿——只有你的文件,直接传输到你的屏幕上。

连接 OpenList 到 OnlinePlayer