4207 字
21 分钟
从零搭建:CD2+Symedia+FastEmby实现302观影体验
WARNING

全文由人工撰写并通过AI寻找语病订正,如果无法接受可退出。

1. 概览与先决条件#

本文将在一台云服务器上,手把手带你从零开始搭建基于 115 网盘或 123 网盘的影视库。我们将结合 Symedia 进行自动化管理,并提供 Emby 服务端与 Infuse 直连两种观影路径。

在正式开始之前,我们需要理清整体的架构逻辑。

image

前情提要: 115 网盘对开放 API 接口有着极其严格的速率限制。这就导致了一个非常现实的问题:无论是使用刮削软件、Emby 还是 Infuse,如果选择直接挂载 115 网盘进行读取,扫库速度会慢到令人发指。添加新影片后,刮削入库的过程繁琐且漫长。更糟的是,Infuse 在直接挂载 115 网盘时,请求限制往往导致扫库卡顿,甚至无法起播。

与此同时,Infuse 虽然好用,但也有局限性:

  1. 在线元数据模式:无法获取 TMDB 里不存在的那类 影片信息。
  2. 离线元数据模式:识别率感人。

因此,引入 Emby 作为后端来统一管理元数据,是提高观影体验的必要手段。

NOTE

主要方案流程:

  1. 存储:115网盘 / 123网盘

  2. 挂载:通过 CloudDrive (CD2) 挂载为本地目录

  3. 管理:Symedia 读取网盘目录树,生成指向本地路径的 STRM 文件,并自动下载影片元数据

  4. 媒体库:Emby 直接扫描 STRM 文件极速入库

  5. 播放(302)

    • 客户端连接 FastEmby 反代端口
    • STRM 链接被拦截并改写
    • 115 视频由 FastEmby 获取直链
    • 123 等其他盘由 OpenList 302 挂载模式获取直链
  6. 客户端:Infuse/Emby直连网盘地址流畅观看

然而,原生的 Emby 在起播 STRM 文件之前,有一个顽固的机制:它总是会尝试读取文件头部,使用 ffprobe -i 获取视频的编码、音轨等详细信息。这带来了三个严重的副作用:

  1. 起播龟速:客户端点击播放后需要转圈很久。
  2. 流量爆炸:服务端为了读取文件头,会消耗大量下行流量,对于按流量计费的服务器不友好。
  3. 性能崩溃:在处理结构不良的 MKV 或 ISO 原盘文件时,可能消耗上 GB 的流量并耗尽低配服务器的内存与磁盘 IO,直接导致假死。

在 Symedia 的官方 Wiki 中有关于此问题的详细描述:Symedia Wiki-神医插件。简单来说:这款 Emby 插件可以有效解决问题 1(起播慢),但对问题 2 和 3 的改善有限。

因此,针对服务端配置较低、或者对起播速度有极致要求的场景,这里也提供一套去除了 Emby 的备选方案。代价是牺牲了媒体库的自由划分能力,且无法展示特殊影片的海报墙。但经实测,该方案针对 Remux 动漫和电影,起播速度可压缩至 2-5 秒。

NOTE

备选方案流程(极速起播):

  1. 存储:115网盘 / 123网盘

  2. 挂载:CloudDrive (CD2) 挂载

  3. 管理:Symedia 生成指向 OpenList 的 STRM 文件(而非本地路径),并下载元数据

  4. 播放(302)

    • Infuse 直接挂载包含 STRM 的文件夹(通过 WebDAV)
    • 所有视频请求由 OpenList 302 模式获取直链
  5. 终端:客户端直连网盘观看

如果既想观看特殊影片,又希望普通影片在低配服务器上秒播,可以混合使用这两种方案。即:普通影片走备选方案(Infuse 直连),特殊影片走主要方案(Emby 管理)。

让我们开始吧!

本文所需的前置条件:

IMPORTANT
  • 一台 NAS 或云服务器(必需)
  • 115 网盘或 123 网盘账号(必需,需付费)
  • Symedia 激活码(必需,179 元)
  • Infuse PRO(备选方案必需,需付费)
  • CloudDrive 会员(若挂载多个网盘则必需)
  • Emby 激活码(可选,也可寻找某种版本)

2. 服务端准备工作#

2.1 虚空终端(网络环境配置)#

Symedia 在刮削元数据、通过 Bot 推送通知以及我们拉取 Docker 镜像时,需要一个相对科学的网络环境。

如果你使用的是家用 NAS,解决方式较多:

  1. 旁路网关:在局域网内运行基于虚空终端的软件,开启“允许局域网连接”,获取内网代理地址(如 192.168.1.x:7890
  2. 透明代理:在主路由或软路由层面解决
  3. 本机运行:直接在服务端运行虚空终端核心

下面重点介绍方法 3,它同时适用于云服务器和 NAS 环境。

操作步骤:

  1. 下载核心:用电脑下载适用于你服务器架构(通常是 linux-amd64​)的虚空终端核心并解压。

  2. 上传文件:将核心文件上传到服务器的工作目录,假设重命名为 mihomo-linux-amd64

  3. 安装与配置:执行以下命令,创建目录并赋予权限。

    Terminal window
    sudo mv mihomo-linux-amd64 /usr/local/bin/mihomo
    sudo chmod +x /usr/local/bin/mihomo
    sudo mkdir -p /etc/mihomo
    sudo vi /etc/mihomo/config.yaml
  4. 编辑配置文件:先填入下面的基础配置,然后从你自己的订阅配置文件中复制 proxies​、proxy-groups​ 和 rules 部分填入下方。

    # 基础端口设置
    port: 7890
    socks-port: 7891
    mixed-port: 7893
    allow-lan: true
    mode: Rule
    log-level: info
    ipv6: true
    external-controller: '0.0.0.0:9990'
    secret: "您的后台密码"
    external-ui: /etc/mihomo/ui
    # --- 关键:TUN 模式配置 ---
    # 在拉取 Docker 镜像时非常有用,日常运行可关闭
    tun:
    enable: false
    stack: system # 或者 gvisor
    dns-hijack:
    - any:53
    auto-route: true
    auto-detect-interface: true
    # --- 关键:DNS 配置 (配合 TUN 必须开启 fake-ip 或 redir-host) ---
    dns:
    enable: true
    listen: 0.0.0.0:53
    enhanced-mode: fake-ip
    nameserver:
    - 8.8.8.8
    - 1.1.1.1
    # --- 请在下方粘贴您的 proxies, proxy-groups, rules ---
  5. 配置 UI 面板:下载 Metacubexd 或其他 UI 的 release 压缩包,解压后将文件夹内的所有文件放入 /etc/mihomo/ui​。
    注意:运行时如果提示缺少 MMDB 文件,请自行下载 Country.mmdb放入 /etc/mihomo目录。

  6. 设置开机自启
    创建服务文件:

    Terminal window
    sudo nano /etc/systemd/system/mihomo.service

    填入内容:

    [Unit]
    Description=Mihomo Daemon
    After=network.target
    [Service]
    Type=simple
    User=root
    # TUN 模式必须用 root 权限运行
    ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target

    启动服务:

    Terminal window
    sudo systemctl daemon-reload
    sudo systemctl enable mihomo --now
    sudo systemctl status mihomo
  7. 验证:访问 http://服务器IP:9990/ui,填入服务器 IP 和密码即可进入控制面板。

2.2 Docker 环境#

在安装 Docker 和拉取镜像之前,建议先在虚空终端的网页面板中,开启 “配置” -> “开启 TUN 转发”​。下载完成后记得关闭此开关,以免影响其他服务。

image

安装 Docker :

Terminal window
curl -fsSL https://get.docker.com | bash

3. 安装 CD2 与 OpenList#

CloudDrive2 (CD2)#

此处不使用 Docker 版本的 CD2,前往 CloudDrive2 官网 下载 Linux x86_64 版本。

请详细阅读 CD2 官方教程。将下载的 tgz​ 包解压到你的工作目录,例如 /root​。解压后,最终的可执行文件路径应类似:/root/clouddrive-2-linux-x86_64-x.x.x/clouddrive

设置开机自启服务:

Terminal window
sudo nano /etc/systemd/system/clouddrive.service
[Unit]
Description=CloudDrive Daemon
After=network.target
[Service]
Type=simple
User=root
# 请根据实际解压路径修改 WorkingDirectory 和 ExecStart
WorkingDirectory=/root/clouddrive-2-linux-x86_64-你的版本号
ExecStart=/root/clouddrive-2-linux-x86_64-你的版本号/clouddrive
Restart=on-failure
[Install]
WantedBy=multi-user.target

启动 CD2:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable clouddrive --now
sudo systemctl status clouddrive

安装完成后,可通过 http://服务器IP:19798 访问 CD2 管理页面。

OpenList#

OpenList 是一个轻量级的目录列表程序,支持 302 重定向,是本方案中处理非 115 网盘(如 123 盘)直链的工具。

使用官方一键脚本安装(脚本可能随时间更新,建议到官网一键安装寻找最新脚本):

Terminal window
curl -fsSL https://res.oplist.org/script/v4.sh > install-openlist-v4.sh && sudo bash install-openlist-v4.sh

脚本运行过程中选择“安装OpenList”即可。安装完成后,通过 http://服务器IP:5244 访问。初始用户名和密码会显示在终端输出中,请务必记录。如果遗忘,可再次运行脚本重置密码。

4. 创建 Symedia、Emby、FastEmby 容器#

这一步涉及到路径映射,逻辑需要非常清晰。

我们将通过 CD2 把网盘挂载到宿主机的本地路径。

  • 对于群晖/飞牛等 NAS,通常挂载到 /volume1/CloudNAS
  • 对于普通 Linux 服务器,推荐挂载到 /mnt/CloudNAS

关键: 本文不使用 Docker 化的 CD2,因此挂载路径完全由我们控制。为了统一后续配置,我们假设宿主机的挂载点为 /mnt/CloudNAS/CloudDrive

NOTE

关于 Symedia 官方 Wiki 的说明: Wiki 中的逻辑是针对“全容器化”场景,即网盘在宿主机的路径和在 CD2 容器内的路径存在映射关系。由于我们直接在宿主机运行 CD2,请勿参考 Wiki 中“标准挂载”部分的映射逻辑。

请直接复制以下命令创建容器,确保路径一致。

Symedia#

Symedia 负责刮削、整理和生成 STRM。

Terminal window
docker run -d \
--name symedia \
-e TZ=Asia/Shanghai \
-e LICENSE_KEY=你的Symedia激活码 \
-e COVER_MAKER=true \
-e HTTP_PROXY=http://127.0.0.1:7890 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v ./config:/app/config \
-v ./playwright:/symedia/.cache/ms-playwright \
-v ./fonts:/app/static/fonts \
-v /mnt/CloudNAS:/CloudNAS:rslave \
-v /mnt/media_strm:/media \
-p 8095:8095 \
--restart always \
--network host \
shenxianmq/symedia:latest
  • HTTP_PROXY​:指向你搭建的虚空终端。如果 Symedia 使用 host​ 网络模式,填 127.0.0.1:7890 即可;否则需填服务器内网 IP。
  • /mnt/CloudNAS:这是 CD2 挂载网盘的根目录的上级目录。
  • /mnt/media_strm:这是 Symedia 生成的 STRM 文件存放的本地路径。

访问端口:8095

Emby#

媒体服务器核心。

Terminal window
docker run -d \
--name emby_server \
--restart always \
--network host \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-v /mnt/emby_data:/config \
-v /mnt/CloudNAS:/CloudNAS:rslave \
-v /mnt/media_strm:/media \
linuxserver/emby:latest
  • /mnt/emby_data:Emby 的配置数据目录,可以改变。
  • /mnt/media_strm:/media:将 Symedia 生成的 STRM 映射给 Emby 读取。

访问端口:8096

FastEmby#

用于接管 115 视频流量并实现重定向。

Terminal window
docker run -d \
--name FastEmby \
--network host \
--restart unless-stopped \
-e LICENSE_KEY=你的Symedia激活码 \
-v /mnt/fastEmby/config:/app/config \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
shenxianmq/fastemby:latest

访问端口:9026

所有容器部署完毕后,请务必回到虚空终端面板,将 TUN 模式 开关关闭,避免影响服务器正常的网络流量转发。

5. 在 CD2 和 OpenList 挂载网盘#

CloudDrive2 挂载#

访问 CD2 后台,登录你的 115 和 123 网盘账号。

  • 115 网盘挂载名设为:/115open
  • 123 网盘挂载名设为:/123云盘

image

进入“挂载”,点击添加挂载点。按照下图填写,将网盘挂载到我们预设的 /mnt/CloudNAS/CloudDrive

image

挂载完成后,进入“我的文件”,找到网盘内的影视库文件夹,点击“详情”,将缓存时间修改为 0 秒。如果后期遇到添加了影片,但是Symedia却找不到文件、无法链接的情况,可以点击黄色时钟按钮清空缓存。

image

目录结构建议: 为了配合 Symedia 的自动整理,建议按照如下树状结构组织你的网盘影视库:

115影视库
├── 电影
│ └── 上海堡垒 (2019)
│ ├── 上海堡垒 (2019) {tmdb-xxxxx} - 4K DV.mkv
│ └── (元数据)
├── 动漫
│ └── 笨女孩 (2017)
│ ├── (元数据)
│ └── Season 1
│ ├── (集元数据)
│ └── 笨女孩 (2017) S01E01 - 标题.mkv
├── 演唱会
└── 电视剧

OpenList 挂载#

OpenList 主要用于解决 123 盘等非 115 网盘的直链分发。

  1. 全局设置:进入设置 -> 全局,关闭“签名所有”。
    image

  2. 添加驱动

    • 进入存储 -> 添加。
    • 驱动选择:123开放平台
    • 挂载路径:/123云盘
    • WebDAV 策略:302 重定向
    • 其他参数(客户端 ID、密钥等):请参考 OpenList 官方文档 - 123开放平台驱动 获取并填写

6. 配置 Symedia#

6.1 插件配置:EmbyServer#

进入 Symedia 插件中心,找到 EmbyServer。
按照下图填写 Emby 地址和 API Key。API Key 可以在 Emby 后台 -> API 页面生成。填写完毕记得保存。

image

6.2 添加网盘账号#

  1. 115 设置:设置 -> 115设置 -> 添加配置 -> 随便填写名称 -> 保存。
    image

    • Cookie 获取:去插件中心安装“115扫码cookie”插件,扫码获取 Cookie 后,可以一键填入刚才创建的配置中。
  2. 123 设置:设置 -> 123设置 -> 直接填写账号密码保存。
    image

6.3 STRM 链接同步#

115 网盘同步任务: 打开“链接同步”界面,创建任务。

  • 媒体目录:选择 CD2 挂载的 115 影视库目录。
  • 链接目录:选择 /media/影视库115(Symedia 容器内的路径)。

image
image

在“实时监控”选项卡中,选择 Webhook 模式。

image

123 网盘同步任务: 创建新任务,设置逻辑同上,但请注意下图红框标记的字段。

image

6.4 连接 CD2 并开启 Webhook#

Symedia 插件 -> clouddrive2助手。

  • 服务器地址:填写 CD2 的访问地址(如果你的CD2是容器化的,IP填写服务器的内网IP,如果你按照本文来部署的,无需改动)。
  • API Token:在 CD2 界面创建一个拥有**所有权限**的 Token 填入。

保存配置后,Symedia 就能接收到 CD2 的文件变动通知。

image

6.5 运行同步与归档#

  1. 启动同步:在链接同步界面,启动 115 和 123 的任务。可以在日志中查看进度。
    如果卡住,可以在“CD2-系统任务-下载任务”查看情况,通常是由于下载到了体积较大的元数据或者多音轨。这是正常现象,如果嫌慢,可以编辑任务-高级配置-元数据后缀-去掉mka,mp3,flac等体积可能较大的文件。

  2. 配置自动归档

    • 创建规则:Symedia -> 归档刮削 -> 规则。推荐使用“自动二级分类”,文件名保持默认。
    • 创建任务:Symedia -> 归档刮削 -> 任务列表。源目录指向网盘内的“影视库待归档”文件夹,目标目录指向正式的“影视库”文件夹。

image
image

设置完成后,只需将下载或转存的影片丢入“待归档”文件夹,Symedia 就会全自动刮削、重命名并移动到影视库,整个过程行云流水。

7. 配置 Emby 媒体库 + FastEmby#

  1. Emby 媒体库设置
    进入 Emby 设置 -> 媒体库。
    /media​内的文件夹按你的喜好添加为媒体库,去掉一切可能导致读取视频信息、生成缩略图有关的选项。之后开始扫库,体验速度带来的快感,所有人保持衣物干燥。

  2. FastEmby 设置
    打开 FastEmby 后台,参照下图配置:

    image

    • 115 授权:打开 Symedia 设置 -> 115设置,复制 Cookie。然后去 FastEmby -> 115助手,粘贴并测试。

最终效果
客户端连接 http://服务器IP:8098(FastEmby 的反代端口),即可实现 302 播放。Emby 负责展示精美的海报墙,FastEmby 负责在后台偷梁换柱。

至此,新片转存后,Emby将会快速完成入库。emby由于会在播放前尝试解析视频信息,导致起播速度缓慢,可通过购买神医助手插件解决,详见本文开头部分。注意,这无法解决服务器流量消耗和配置不足、解析视频时卡死的问题。

8. 低配服务器的备用方案(极速起播)#

如果服务器配置实在太低或者流量费用太高,可以将普通影片的播放任务完全交给 Infuse,抛弃 Emby,或者只把Emby用于特殊影片的观看。

原理变更: 在备用方案中,Symedia 生成的 STRM 文件不再包含指向本地文件的路径,而是直接指向 OpenList 的网盘视频文件地址。Infuse 挂载 OpenList STRM文件夹后,请求视频时,OpenList 直接返回网盘直链(302 跳转),Infuse 随之直连网盘。

改造步骤:

  1. 清理旧数据
    删除 /mnt/media_strm 内的所有旧 STRM 文件(因为它们是给 Emby 用的本地路径)。
    先预览要删除的文件:

    Terminal window
    find /mnt/media_strm -type f -name "*.strm"

    确认无误后,执行删除:

    Terminal window
    find /mnt/media_strm -type f -name "*.strm" -delete
  2. 修改同步任务
    回到 Symedia -> 链接同步,修改 115 和 123 的任务配置。
    重点关注红框部分,将链接前缀指向 OpenList 路径。

    image

    重新执行同步任务。这次速度会飞快,因为元数据之前已经下载过了。

  3. 配置 OpenList

    • 添加本机存储
      进入 OpenList -> 存储 -> 添加。
      驱动:本机存储
      挂载路径:/media_strm​。
      根文件夹路径:/mnt/media_strm(即 Symedia 生成 STRM 的位置)。
      保存。

      image

    • 添加 115 存储
      驱动:115开放平台
      挂载路径:/115open​。
      WebDAV 策略:302 重定向
      令牌获取方式到OpenList官方文档去查

  4. Infuse 客户端设置

    • 添加 WebDAV 共享。
    • 地址:服务器 IP,端口 5244
    • 用户名/密码:OpenList 的账号密码(默认是admin)。
    • 路径:/dav/media_strm
    • 关闭“预获取详情”和“预缓存海报”,但可以开启“智能文件夹”。

等待 Infuse 扫描完成,点击播放。此时,Infuse 获取到的是经过 OpenList 302 重定向后的直链,起播速度通常在 5 秒以内,拖拽进度条丝般顺滑。

image

从零搭建:CD2+Symedia+FastEmby实现302观影体验
https://duke486.com/posts/从零搭建cd2symediafastemby实现302观影体验/
作者
Duke486
发布于
2026-02-04
许可协议
CC BY-NC-SA 4.0