Emby 302 直链播放
约 3552 字大约 12 分钟
2026-05-02
Emby 302 是 ResourceTool 的核心播放引擎,将 Emby 媒体库的播放请求通过 302 重定向到 115 网盘直链,实现无需下载的即时播放。
配置流程概览
按以下步骤完成从零到可用的完整配置:
- 创建实例 — 配置 Emby 连接和端口
- 配置路径映射 — 建立 Emby 路径与 115 文件的对应关系
- 选择播放模式 — 路径替换 / Pickcode / 分享 / 原生
- 配置 CD2 加速(可选)— gRPC 毫秒级路径查询
- 配置缓存与预缓存 — 提升播放响应速度
- 配置设备流控 — 限制并发设备数
- 配置分享播放 — 跨账号三级兜底
- 配置同播复制 — 多用户同时播放同一文件
- 配置容器监控 — Emby 内存自动管理
- 配置 Webhook — 新内容入库 Telegram 通知
- 配置 Emby Bot — 用户自助服务 Bot
步骤 1:创建实例
进入侧边栏 概览 → Emby 助手,点击 新增配置。
基本信息
| 配置项 | 说明 |
|---|---|
| 配置名称 | 自定义名称,如「Emby 家庭服」 |
| Emby 内网地址 | Emby 服务器地址,如 http://192.168.5.5:8096 |
| Emby API Key | 在 Emby 管理面板 → API 密钥中获取 |
| 反代端口 | Emby 客户端连接此端口,如 18096 |
反代端口不能与 Emby 原始端口相同,客户端必须通过反代端口连接才能触发 302 重定向。
关联 115 账号
| 配置项 | 说明 |
|---|---|
| 115 账号 | 必选。默认播放账号,同时用于 Emby API 文件路径查询 |
步骤 2:配置路径映射
路径映射定义了 Emby 媒体库路径与 115 网盘文件之间的对应关系。在路径替换模式中启用。
路径替换规则
可视化编辑器,格式为 /路径前缀 => 115配置名:
/CloudNAS/CloudDrive/115open => 115-殊途
/mnt/115 => 115-殊途
http://cd2:29798/static/http/.../False//115open => 115-殊途
# 井号开头为注释行自动生成路径映射
点击「自动生成路径映射」,输入 strm 文件内的路径,系统自动匹配 115 配置名生成映射规则。
支持的 Strm URL 格式
/115open/Symedia媒体库/电影.mkv (本地挂载路径)
/mnt/115/媒体库/电影/电影.mkv (CD2 本地挂载路径)
http://cd2:29798/static/http/.../False//115open/... (CD2 cloud strm)步骤 3:选择播放模式
四种模式可独立开关,也可组合使用(混合 STRM 库),系统自动根据 STRM 文件内容匹配对应模式。
路径替换模式
将 Emby 的本地路径替换为 115 直链 URL。配合 CD2 加速 可实现毫秒级查询。
Pickcode 模式
通过 115 文件的 Pickcode 直接获取直链,支持秒传映射:
115-殊途 => 115-淡然 # 秒传到淡然播放
115-殊途 => 115-淡然, 115-2 # 随机选一
# 留空表示不秒传支持的 Strm URL 格式:
http://host/api/?pickcode=abc&name=电影.mkv
http://host/videoPlayUrl?pickcode=abc&account=xxx
http://host/videoPlayUrl?fileId=abc&account=xxx分享模式
通过 115 分享链接实现跨账号播放,支持分享秒传映射。
支持的 Strm URL 格式:
http://host/api/?share_code=xxx&receive_code=yyy&id=12345&name=电影.mkv
http://host/shareVideoPlayUrl?shareCode=xxx&password=yyy&fileId=zzz&fileName=电影.mkvEmby 原生播放
| 状态 | 行为 |
|---|---|
| 开启 | 不启用其他模式时走 Emby 原生播放 |
| 作为备用 | 115 直链失败时回退到 Emby 原生播放 |
| 关闭 | 不提供 Emby 原生播放 |
步骤 4:配置 CD2 加速(可选)
CloudDrive2 通过 gRPC 协议直连 CD2 服务,在路径替换模式中实现毫秒级路径查询,大幅提升播放响应速度。
安装和配置 CD2
进入侧边栏 插件库 → CloudDrive2 助手:
连接配置:
| 配置项 | 说明 |
|---|---|
| CD2 地址 | CD2 服务地址(如 http://192.168.1.100:19798) |
| 用户名 / 密码 | CD2 登录凭据 |
| 测试连接 | 验证连接是否成功 |
路径映射:
| 配置项 | 说明 |
|---|---|
| Emby 路径前缀 | Emby 媒体库路径(如 /mnt/media/) |
| CD2 挂载路径 | CD2 115 网盘挂载路径(如 /115/media/) |
系统会将 /mnt/media/movies/xxx.mkv 转换为 /115/media/movies/xxx.mkv,然后通过 CD2 gRPC 查询 115 Pickcode。
在 Emby 302 中启用: 编辑 Emby 实例 → 路径替换模式 → 选择 CD2 实例。
CD2 与 RT 建议部署在同一内网环境,避免网络延迟影响响应速度。CD2 服务需保持运行,停止时系统回退到其他模式。
性能对比
| 场景 | 无预缓存 | 有预缓存 |
|---|---|---|
| 路径模式 + CD2 | ~353ms | ~0ms(缓存命中) |
| PK 模式 | ~550ms | ~0ms(缓存命中) |
| 路径模式无 CD2 | ~1130ms | ~0ms(缓存命中) |
步骤 5:配置缓存与预缓存
URL 缓存
在 Emby 302 配置卡的「流控配置」标签页中设置:
| 配置项 | 说明 |
|---|---|
| 缓存有效期 | 滑块调节,5 分钟 ~ 2 小时,默认 30 分钟 |
缓存到期后自动过期。进入侧边栏 概览 → 缓存管理 可查看所有活跃缓存条目:
- 每条缓存显示 115 配置名、缓存时间、剩余倒计时(实时)、播放文件、Emby 用户、Host、UA
- 支持单条删除和全部清空
- 页面每 10 秒自动刷新
- 预缓存生成的条目显示「预缓存」标签
缓存管理适用场景
- 排查播放问题:查看某用户的直链是否已缓存
- 确认预缓存生效:检查详情页触发的预缓存是否写入
- 手动清理:115 账号风控时清空缓存强制获取新直链
预缓存
预缓存在用户实际播放前提前获取 115 直链并缓存,实现零延迟播放体验。
触发方式:
| 触发入口 | 场景 | 控制机制 |
|---|---|---|
| PlaybackInfo | 用户点击播放按钮 | 令牌桶限速 |
| 详情页 | 用户打开影片详情 | 速率检测 + 冷却期 |
| 剧集系列 | App 打开剧集卡片 | 流控检测 |
版本数限制:
| 媒体类型 | 最大预缓存版本数 | 说明 |
|---|---|---|
| 电影 | 2 | 按码率从高到低取前 2 个版本 |
| 剧集 | 1 | 减少 115 API 调用量,避免风控 |
防重复机制: 快速浏览检测(电影/剧集/季共用频率窗口)+ 单集冷却(同集不重复触发)。
配置项:
| 配置项 | 说明 |
|---|---|
| 启用预缓存 | 总开关 |
| 电影 / 剧集 | 分别控制是否触发 |
| 多版本缓存上限 | 电影和剧集分别设置 |
| 预缓存用户名单 | 从 Emby 用户中勾选,不勾选 = 全部用户触发 |
被设备流控拦截的用户不会触发预缓存,避免浪费 API 调用额度。
步骤 6:配置设备流控
设备流控限制每个 Emby 用户同时使用的客户端数量,防止账号共享滥用。
流控范围
流控仅作用于登录认证、播放信息获取和视频播放三个环节。浏览媒体库、加载海报、搜索、查看详情等操作不受影响。
双层超时机制
| 层级 | 超时时间 | 效果 |
|---|---|---|
| 空闲超时 | 5 分钟 | 设备可被新设备替换 |
| 完全过期 | 30 分钟 | 设备从在线列表中移除 |
配置设备数
全局默认:在 开服配置 页面设置全局默认设备数上限。
用户级覆盖:在 用户管理 中为每个用户单独设置:
| 设置值 | 效果 |
|---|---|
> 0(如 1/2/3) | 该用户最多同时 N 个设备在线 |
0 | 不限制设备数 |
管理员账号不受设备流控约束。
平滑过渡
对于更新前已在多个设备登录的用户,系统不会立即中断正在播放的设备,下次播放时自动清理最久未使用的多余设备。
步骤 7:配置分享播放
分享播放通过 115 分享机制实现跨账号播放,无需将文件转存到用户自己的网盘。
三级兜底机制
分享秒传 → 分享转存 → 分享直链| 级别 | 说明 |
|---|---|
| 分享秒传 | 通过 SHA1 秒传到目标账号,速度最快 |
| 分享转存 | 秒传失败时通过 share/receive API 转存 |
| 分享直链 | 直接通过分享下载 API 获取直链 |
多副号轮询
配置多个分享副号时,随机选择一个,单个失败自动尝试下一个,分摊请求压力。
自备模式支持
自备 Cookie 用户同样享有完整的三级兜底能力。
分享转存的文件在缓存过期后自动删除,避免副号空间占用增长。
步骤 8:配置同播复制
115 网盘对同一文件的并发下载有限制。当多个用户同时播放同一视频时,同播复制自动为后续用户创建文件副本。
触发条件
用户 A 正在播放文件 X(pickcode 活跃中)
→ 用户 B 请求播放同一文件 X
→ 检测到不同用户播放同一 pickcode
→ 触发同播复制配置
在 Emby 302 基础配置中:
- 在关联的 115 账号配置中启用「同播复制」(详见 115 配置 - 步骤 3)
- 设置临时目录(副本存储位置,默认
/ResourceTool)
检测覆盖
同播复制检测覆盖所有播放路径:缓存命中、CD2 快速路径、115 API 路径。同一用户的重复请求不会触发。
副本在缓存过期后自动删除(缓存 TTL + 30 秒缓冲)。
步骤 9:配置容器监控
Emby 长期运行后内存可能持续增长。容器监控功能可自动检测 Emby Docker 容器的内存用量,在内存超标且 Emby 空闲时自动重启容器释放内存。
配置项
| 配置项 | 说明 |
|---|---|
| 启用内存监控 | 总开关 |
| Docker Host | 同设备留空,跨设备填 tcp://IP:2375 |
| 容器名称 | Emby Docker 容器名 |
| 内存阈值 (GB) | 超过此值开始计时,默认 5.0 |
| 持续时间 (分钟) | 超阈值且空闲持续多久后重启,默认 5 |
工作原理
每 60 秒检测一次
↓
内存超过阈值? → 否 → 等待下次检测
↓ 是
Emby 是否繁忙? → 是 → 重置计时
↓ 否(空闲)
连续空闲超时? → 否 → 继续计时
↓ 是
自动重启容器 → TG 通知 → 冷却 10 分钟繁忙检测项(任一成立即跳过):计划任务运行中、近期有入库活动、有用户正在播放、Emby API 不可达。
内存阈值参考
| 媒体库规模 | 建议阈值 |
|---|---|
| 小型(< 5,000 部) | 3.0 ~ 4.0 GB |
| 中型(5,000 ~ 20,000 部) | 5.0 ~ 8.0 GB |
| 大型(> 20,000 部) | 8.0 ~ 12.0 GB |
确定合适阈值的方法:观察 Emby 正常运行 1~2 天后的内存峰值,将阈值设为峰值的 1.2 ~ 1.5 倍。
步骤 10:配置 UA 屏蔽
在 Emby 302 配置卡的「流控配置」标签页:
| 配置项 | 说明 |
|---|---|
| 启用 UA 屏蔽 | 总开关 |
| 屏蔽的 UA 列表 | 一行一个 UA(如 SenPlayer),区分大小写,命中返回 403 |
| UA 白名单用户 | 从 Emby 用户列表中选择,管理员自动跳过 |
页面内置常见播放器 UA 参考:Emby、Infuse、SenPlayer、Forward、Hills、Yamby、AfuseKt、VidHub、Filmly 等 20+ 播放器。
步骤 11:配置 Emby Bot
每个 Emby 302 实例可绑定一个独立的 Emby Bot(需开服授权)。
| 配置项 | 说明 |
|---|---|
| 启用实例 Bot | 总开关 |
| Bot Token | 从 @BotFather 获取的实例专属 Token |
| 管理员 TG 账号 | Bot 管理员,接收通知并进入管理菜单 |
| TG 群组 ID | 用于退群检测,不需要填 0 |
| 自定义欢迎消息 | 支持 {name} 占位符 |
| 封面图 | 支持 jpg/png/gif/webp |
用户命令
| 命令 | 说明 |
|---|---|
/start | 主菜单 |
/bind | 绑定 TG 到 Emby 用户 |
/invite | 兑换邀请码续期 |
/userinfo | 查看个人信息(到期时间、网盘模式等) |
/status | 服务器状态 |
/cookie | 更新自备模式 115 Cookie |
/count | 媒体库统计 |
/leaderboard | 观影排行榜 |
用户内联菜单: 个人信息、修改密码、切换线路、切换网盘模式、更新 Cookie
管理员内联菜单: 用户管理(搜索/禁用/删除/调整到期时间)、批量操作、退群检测、系统状态
步骤 12:配置 Emby 已知代理
配置后 Emby 才能正确读取客户端的真实 IP 地址。
- 直接访问 Emby 的原始端口(不通过 RT 网关)
- 进入管理后台 → 设置 → 网络 → 已知代理
- 填入 RT 网关所在机器的 IP:
| 部署方式 | 填写内容 |
|---|---|
| RT 与 Emby 同机(host 模式) | 127.0.0.1 |
| RT 与 Emby 同机(bridge 模式) | RT 容器内网 IP |
| RT 与 Emby 不同机 | RT 所在机器的局域网 IP |
配置后新播放会话显示用户真实公网 IP,旧会话需重连。
附录:容器监控部署场景
场景一:同机 Linux(host 模式)
修改 docker-compose.yml,挂载 Docker Socket:
volumes:
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sockDocker Host 留空,填入容器名称。
场景二:跨机器(局域网)
Emby 所在机器开启 Docker TCP:
修改 /etc/docker/daemon.json:
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}RT 机器上 Docker Host 填 tcp://192.168.1.100:2375。
Docker TCP 2375 无认证,仅限可信内网,绝对不要暴露到公网。
场景三:群晖 DSM
Container Manager → 找到 RT 容器 → 设置 → 存储空间 → 添加 /var/run/docker.sock 到 /var/run/docker.sock。Docker Host 留空。
场景四:飞牛 fnOS
编辑 docker-compose.yml 添加 docker.sock 挂载,Docker Host 留空。
场景五:Unraid
Docker → RT → Edit → Add Path:Container Path /var/run/docker.sock,Host Path /var/run/docker.sock。Docker Host 留空。
场景六:RT 裸机运行
不需要挂载任何东西,Docker Host 留空即可。
容器监控常见问题
测试连接失败(同设备): 检查 docker.sock 是否挂载,是否重启了 RT 容器。
测试连接失败(跨设备): 在 RT 机器上 curl http://目标IP:2375/_ping 验证可达性。
Emby 频繁重启: 调高内存阈值或增加持续时间。检查 TMM、Bazarr 等自动化工具是否频繁触发入库。
功能关联
| 功能 | 关联文档 |
|---|---|
| 115 账号配置 | 115 云盘配置 |
| 用户管理 | Emby 用户管理 |
| 开服配置 | 开服安全配置 |
| 访问线路 | 访问线路与会话管理 |
| 签到积分 | 签到与积分系统 |
| 公告与邀请码 | 公告与邀请码 |

