博客 / 详情

Emby 302 播放网盘影视

2026.08.24
技术教程
10517 Words
- Views
- Comments

通过 OpenList + go-emby2openlist + Emby,可以让 Emby 直接播放网盘中的影视资源。

整个方案的核心思路是:

  • OpenList:挂载 115 网盘,并提供网盘文件访问能力。
  • OpenList Strm:将网盘中的影视资源生成 .strm 文件并保存到本地。
  • go-emby2openlist:负责将 Emby 的播放请求转换为 OpenList 网盘直链,并通过 302 重定向返回给客户端。
  • Emby:负责影视库管理、刮削、播放等功能。
  • 115 网盘:负责实际存储影视资源。

准备工作

开始之前,需要准备以下环境:

  1. 115 网盘
  2. 飞牛 NAS、Linux 服务器,或者其他支持 Docker 的设备
  3. Docker / Docker Compose
  4. Emby
  5. OpenList
  6. go-emby2openlist

本文以飞牛 NAS + Docker + 115 网盘为例进行说明。


部署 OpenList

首先运行一个 OpenList Docker 实例, 以飞牛 NAS 为例:

  1. 打开 Docker 面板。
  2. 新增 Compose 项目。
  3. 项目名称填写 openlist,名称可以自行修改。
  4. 项目路径建议使用:
Docker/openlist

如果目录不存在,可以自行创建,也可以选择其他目录。

  1. 选择「创建 docker-compose.yml」。
  2. 填入以下配置:
services:
openlist:
image: 'openlistteam/openlist:latest'
container_name: openlist
network_mode: host
user: '0:0'
volumes:
- './data:/opt/openlist/data'
- './strm:/strm'
ports:
- '5244:5244'
environment:
- UMASK=022
- TZ=Asia/Shanghai
restart: always

其他 Docker 环境部署方式基本相同。

如果使用 Linux,可以直接进入 OpenList 工作目录创建 docker-compose.yml,然后执行:

Terminal window
docker compose up -d

获取 OpenList 管理员密码

OpenList 第一次启动后会生成初始管理员密码。

飞牛 NAS 可以直接在 Docker 面板查看容器运行日志。

Linux 可以执行:

Terminal window
docker logs -f openlist

在日志中找到生成的管理员密码。


挂载 115 网盘

这里以 115 网盘为例。

  1. 使用 admin 账户登录 OpenList。
  2. 进入「管理 → 存储」,添加存储。
  3. 驱动选择:
115网盘开放平台
  1. 挂载路径填写:
/115

也可以根据自己的习惯修改。

  1. 浏览器新建标签页访问:

https://api.oplist.org/

  1. 网盘名称选择:
115网盘(OAuth2)跳转登录

或者使用扫码登录。

  1. 按照页面提示完成 115 登录。
  2. 登录成功后点击「获取 Token」。
  3. 获取到以下两个参数:
访问令牌(Access Token)
刷新令牌(Refresh Token)
  1. 将这两个参数分别填写到 OpenList 的:
访问令牌
刷新令牌

建议同时勾选:

启用签名

最后保存即可。


115 网盘目录结构

下面是我的 115 网盘目录结构:

115/media/剧集
├── 华语剧集
├── 外语剧集
└── 动漫剧集
115/media/电影
├── 华语电影
├── 外语电影
└── 动画电影
115/media/正在热播

实际目录结构可以按照自己的媒体库习惯进行调整。


生成 Strm 文件

这里建议将不需要频繁更新的影视资源生成 Strm 文件并保存到本地

例如:

  • 电影
  • 已完结剧集
  • 已经整理完成的动漫
  • 其他基本不会发生变化的资源

而对于仍在持续更新的剧集,则建议使用后面的 go-emby2openlist 自动生成 Strm。

这样可以避免每次网盘内容发生变化时,都需要重新生成大量 Strm 文件。

创建 OpenList Strm 存储

在 OpenList 中再次添加存储,驱动选择:

Strm

1. 挂载路径

自定义一个与 /115 不重复的路径。

例如:

/strm-115

2. 路径

填写需要生成 Strm 的 OpenList 路径。

例如:

/115/media/剧集

3. 站点 URL

如果 OpenList 和 Emby 位于同一台设备,或者位于同一个局域网,可以填写 OpenList 的局域网访问地址。

例如:

http://192.168.0.254:5244

如果 OpenList 与 Emby 部署在同一台设备,也可以根据实际网络环境填写对应地址。

4. 过滤文件类型

可以根据自己的需求添加视频文件后缀。

例如:

iso

5. 编码路径

一般情况下可以不勾选。

6. 保存设置

建议勾选:

携带签名
保存 Strm 到本地

7. Strm 本地保存路径

填写:

/strm

这里的 /strm 对应 Docker Compose 中的:

volumes:
- './data:/opt/openlist/data'
- './strm:/strm'

因此,OpenList 容器中的 /strm 实际会映射到宿主机当前目录下的:

./strm

8. 本地保存模式

第一次生成时建议选择:

更新

等待所有 Strm 文件生成完成后,可以根据实际需求修改为:

同步

OpenList 会自动将网盘中的资源逐步生成 Strm 文件并保存到本地。


go-emby2openlist

Go 语言编写的 Emby + OpenList(Alist)网盘直链反向代理服务,支持 OpenList 本地目录树生成以及网盘直链 302 重定向。

项目地址:

https://github.com/AmbitiousJun/go-emby2openlist

Docker 老手

如果熟悉 Docker,可以直接执行:

Terminal window
git clone --branch v2.8.2 --depth 1 https://github.com/AmbitiousJun/go-emby2openlist
cd go-emby2openlist

新手部署方式

如果不熟悉 Git,可以直接下载项目压缩包。

  1. 浏览器访问项目地址并下载 ZIP:

https://github.com/AmbitiousJun/go-emby2openlist/archive/refs/heads/main.zip

  1. 解压:
go-emby2openlist-main.zip
  1. 将解压后的 go-emby2openlist-main 文件夹上传到飞牛 NAS 用于 Docker Compose 的工作目录。

配置 go-emby2openlist

修改 config.yml

首先将:

config-example.yml

重命名为:

config.yml

编辑 config.yml

即使此时 Emby 还没有启动,也可以先修改:

host: http://127.0.0.1:8096
mount-path: /media

其中:

host

为 Emby 的访问地址。

mount-path

为 Emby 容器内部挂载媒体目录的路径。


path-map

继续配置:

path-map:
- http://192.168.0.254:5244 => http://127.0.0.1:5244
internal-redirect-enable: true

这里的作用是进行地址转换。

前面的:

http://192.168.0.254:5244

是 OpenList Strm 文件中使用的地址。

后面的:

http://127.0.0.1:5244

则是本机可以访问 OpenList 的地址。

如果不希望客户端直接访问 OpenList,而是由 go-emby2openlist 在服务端内部完成访问,可以开启:

internal-redirect-enable: true

具体是否开启,需要根据自己的网络结构决定。


OpenList 配置

找到:

# openlist 访问配置
openlist:
host: http://127.0.0.1:5244
token: openlist-xxxxx
local-tree-gen:
enable: true
virtual-containers:
strm-containers: mp4,mkv,flv,ts,rmvb
scan-prefixes:
- /115/media/正在热播

这里不需要直接复制整段配置,主要修改以下几个参数。

host
host: http://127.0.0.1:5244

OpenList 的访问地址。

由于 OpenList 和 go-emby2openlist 都使用 host 网络模式,因此在同一台设备上可以直接使用:

127.0.0.1
token
token: openlist-xxxxx

这里填写 OpenList 的 API Token。

登录 OpenList 管理后台后,在:

设置 → 其他 → Token

中获取。

local-tree-gen.enable
enable: true

如果希望使用 go-emby2openlist 自动生成和更新 Strm 文件,则设置为:

enable: true

如果不需要此功能,则设置为:

enable: false
scan-prefixes
scan-prefixes:
- /115/media/正在热播

用于指定需要生成 Strm 的 OpenList 目录。

这里非常推荐将仍在持续更新的影视目录交给 go-emby2openlist 管理。

例如:

/115/media/正在热播

这样新剧集上传到网盘后,可以自动生成对应的 Strm 文件。

virtual-containers

建议删除内容,保持为空:

virtual-containers:
strm-containers

用于指定需要处理的视频文件后缀:

strm-containers: mp4,mkv,flv,ts,rmvb

可以根据自己的媒体文件类型进行调整。


path 配置

找到:

path:
emby2openlist:
- /media:/115/media

一般情况下这里不需要修改。

其中:

/media

是 Emby 容器中的媒体挂载路径。

而:

/115/media

是 OpenList 中实际对应的网盘路径。

简单理解就是:

Emby /media
OpenList /115/media

Docker Compose

修改 docker-compose.yml

如果不熟悉 Docker,可以直接使用下面的配置。

这里需要注意:网络模式必须使用 host

services:
go-emby2openlist:
build:
context: .
dockerfile: Dockerfile
environment:
- TZ=Asia/Shanghai
- GIN_MODE=release
container_name: go-emby2openlist
network_mode: host
restart: always
volumes:
- ./config.yml:/app/config.yml
- ./strm:/app/openlist-local-tree
ports:
- 8095:8095

Linux 进入项目目录后执行:

Terminal window
docker compose up -d

即可启动。

飞牛 NAS

在飞牛 Docker 面板中:

  1. 进入「Compose」。
  2. 新增项目。
  3. 项目路径选择刚才上传的 go-emby2openlist-main
  4. 勾选「创建项目后立即启动」。
  5. 点击「确认」。

Emby

接下来部署 Emby。

Emby 的 Docker 部署方式与前面的 OpenList 基本一致。

由于 OpenList 和 go-emby2openlist 都使用 host 网络模式,因此这里也推荐 Emby 使用 host 网络模式。

如果对 Docker 网络比较熟悉,也可以自行改成 bridge 模式。

Emby 镜像

本文示例使用 ARM64 平台。

image: amilys/embyserver_arm64v8:4.8.10.0

如果使用 x86_64 平台,则替换为:

image: amilys/embyserver:4.8.10.0

这里使用 4.8.10.0,主要是因为神医助手社区版目前最高支持该版本。

如果使用的是捐赠版,则可以根据实际兼容情况使用更新版本的 Emby。

另外,由于本方案使用的是 Strm + 302 重定向播放,播放本身并不依赖 Emby Premiere。


Emby Docker Compose

下面以 ARM64 平台为例:

services:
emby:
image: amilys/embyserver_arm64v8:4.8.10.0
container_name: emby
restart: always
network_mode: host
privileged: true
ports:
- 8096:8096
environment:
- TZ=Asia/Shanghai
- HTTP_PROXY=http://127.0.0.1:7890
- HTTPS_PROXY=http://127.0.0.1:7890
- ALL_PROXY=http://127.0.0.1:7890
volumes:
- ./config:/config
- /vol1/1000/Docker/go-emby2openlist/strm/115/media:/playing
- /vol1/1000/Docker/openlist/strm:/media

如果不需要代理,可以删除:

- HTTP_PROXY=http://127.0.0.1:7890
- HTTPS_PROXY=http://127.0.0.1:7890
- ALL_PROXY=http://127.0.0.1:7890

这里添加代理主要是为了方便 Emby 访问 TMDB 等刮削服务。

具体代理 IP 和端口需要根据自己的环境修改。


Emby 媒体目录映射

重点看下面两个目录:

- /vol1/1000/Docker/go-emby2openlist/strm/115/media:/playing
- /vol1/1000/Docker/openlist/strm:/media

/playing

前面的:

/vol1/1000/Docker/go-emby2openlist/strm/115/media

是 go-emby2openlist 自动生成的 Strm 文件目录。

后面的:

/playing

是 Emby 容器内部的目录。

也就是:

go-emby2openlist
宿主机 Strm
Emby /playing

/media

前面的:

/vol1/1000/Docker/openlist/strm

是 OpenList 生成并保存到本地的 Strm 文件目录。

后面的:

/media

是 Emby 容器内部的媒体目录。

最终 Emby 中可以看到:

/media
/playing

两个媒体目录。


启动 Emby

启动 Emby 后,访问:

http://你的NAS地址:8096

按照向导完成初始化。

添加媒体库时,选择前面映射到容器中的:

/media

以及:

/playing

完成初始化后,建议重启一次 go-emby2openlist 容器,确保 Emby 与 OpenList 的相关配置已经正常加载。


测试 302 播放

全部服务启动后,可以查看:

go-emby2openlist

的容器日志。

然后使用 Emby 客户端访问:

http://NAS地址:8095

此时应该可以正常进入 Emby。

打开网盘中的影视资源进行播放。

如果配置正确,go-emby2openlist 日志中会出现类似:

[SUCCESS] 重定向 strm: https://xxx?xxx

这里的:

https://xxx?xxx

就是 OpenList 获取到的网盘直链。

Emby 不需要自己下载或者转发整个视频文件,而是通过 302 Redirect 将播放请求重定向到网盘直链。

最终数据流大致为:

Emby 客户端
Emby
go-emby2openlist
OpenList
115 网盘
获取网盘直链
302 Redirect
Emby 客户端
直接播放

这样可以避免 NAS 服务器承担完整的视频流量转发。


总结

整个方案可以简单理解为:

┌──────────────┐
│ 115 网盘 │
└──────┬───────┘
┌──────────────┐
│ OpenList │
└──────┬───────┘
┌─────────────┴─────────────┐
│ │
↓ ↓
已完结/稳定资源 正在更新资源
│ │
↓ ↓
OpenList Strm go-emby2openlist
│ │
└─────────────┬─────────────┘
Emby
Emby 客户端
302 重定向播放
115 直链

核心策略就是:

不经常更新的资源

例如:

电影
已完结剧集
已经整理完成的动漫

使用 OpenList Strm 生成 Strm,并保存到本地。

这样可以减少重复扫描和 Strm 重新生成。

正在更新的资源

例如:

正在热播
连载中的电视剧
连载中的动漫

使用 go-emby2openlist 自动扫描并生成 Strm。

这样网盘中新增加一集内容后,可以自动更新到 Emby 媒体库。

最终,Emby 负责:

媒体库
刮削
海报
字幕
播放界面
用户管理

OpenList 负责:

网盘挂载
获取文件
生成网盘直链

go-emby2openlist 则负责:

Emby 播放请求
识别 Strm
调用 OpenList
获取网盘直链
302 重定向

因此整个过程中,NAS 主要承担媒体库管理和请求处理,实际的视频数据可以直接从 115 网盘传输到客户端。