每日签到奶昔超市点数市场奶昔访达
返回列表 发布新帖
查看: 570|回复: 15

[教程] Emby + Alist + AutoFilm + MediaWarp 实现网盘直链播放

发表于 2025-9-30 00:02:40 | 查看全部 |阅读模式

欢迎注册论坛,享受更多奶昔会员权益!

您需要 登录 才可以下载或查看,没有账号?注册

×

最近给某个群内搭建了 Emby 媒体服务器作为群服务提供,中间因为各种原因踩了大大小小的坑,最后才有了这篇文章。

目录:

  • AList + 网盘挂载
  • AutoFilm 自动生成 strm 文件供 Emby 刮削
  • 部署 Emby 服务端
  • MediaWarp + Emby 向客户端返回网盘直链作为播放链接

AList + 网盘挂载

实现流程图

部署 AList

参考 AList 官方文档自行部署。

Docker Compose 文件参考如下:

version: '3.3'
services:
  alist:
    image: 'xhofe/alist:beta'
    container_name: alist
    volumes:
      - '/etc/alist:/opt/alist/data'
    ports:
      - '5244:5244'
    environment:
      - PUID=0
      - PGID=0
      - UMASK=022
    restart: unless-stopped

挂载网盘

假设我已经分别挂载了天翼云盘和 OneDrive,且他们都有 bangumi 这个文件夹。

那么我们可以使用别名功能,选择添加存储 - 别名,设置挂载路径为 /bangumi开启启用签名、关闭保护重名

在路径中填写:

/天翼云盘/bangumi
/OneDrive/bangumi

随后,这两个文件夹中的内容都会显示在 /bangumi 目录下。

为什么要用别名
假设我在不同网盘都存放了视频,但是一个个分别挂载太过麻烦,这时候别名功能就能让你把多个网盘的文件汇总在同一个文件夹下。

AutoFilm 自动生成 strm 文件供 Emby 刮削

实现流程图

部署 AutoFilm

参考 AutoFilm说明文档 | 秋澪的博客 部署。

Docker Compose 文件参考如下:

version: '3.1'
services:
  autofilm:
    restart: always
    volumes:
      - ./autofilm_config:/config # AutoFilm 配置文件存放位置
      - ./media:/media            # .strm 文件存放位置
      - ./autofilm_logs:/logs     # AutoFilm 日志存放位置
    container_name: autofilm
    image: akimio/autofilm:latest

./autofilm_config/config.yaml 写入以下配置文件:

Settings:
  DEV: False                          # 开发者模式(可选,默认 False)

Alist2StrmList:
  - id: 动漫                          # 标识 ID
    cron: 0 * * * *                # 后台定时任务 Crontable 表达式
    url: http://alist:5244     # Alist 服务器地址
    username: alist                   # Alist 用户名
    password: alist           # Alist 密码
#   token: alist-d22d23ddf42fvv2      # Alist Token 永久令牌(可选,使用永久令牌则无需设置账号密码)
    source_dir: /bangumi/                 # Alist 服务器上文件夹路径
    target_dir: /media/bangumi/          # 输出路径
    flatten_mode: False               # 平铺模式,开启后 subtitle、image、nfo 强制关闭(可选,默认 False)
    subtitle: True                   # 是否下载字幕文件(可选,默认 False)
    image: False                      # 是否下载图片文件(可选,默认 False)
    nfo: False                        # 是否下载 .nfo 文件(可选,默认 False)
    raw_url: False                    # 是否使用原始地址替换 Alist 服务器下载地址(可选,默认 False)
    overwrite: False                 # 覆盖模式,本地路径存在同名文件时是否重新生成/下载该文件(可选,默认 False)
    sync_server: True                 # 是否同步服务器(可选,默认为 True)
    sync_ignore: \.(nfo|jpg)$         # 同步时忽略的文件正则表达式(可选,默认为空,仅对文件名及拓展名有效,对路径无效)
    max_workers: 2                    # 下载文件最大并发数(可选,默认 5)
    max_downloaders: 2                # 下载文件最大并发数(可选,默认 5)
    mode: AlistPath                   # 下载模式(可选项:AlistPath、AlistFile、AlistList,默认 AlistPath)

需要注意的点:

  • mode 请填写 AlistPath,因为可以配合下面的 MediaWarp 使用
  • cron 不能填写 * * * * *,所以你不能一分钟刷新一次。

随后,定时任务执行后,./media 文件夹下应当已经生成了 .strm 文件。

部署 Emby 服务端

Docker Compose 一把梭:

version: '3.1'
 emby:
    image: emby/embyserver:beta # 可自行修改
    container_name: emby
    volumes:
      - ./data:/config  # 持久化配置文件
      - ./media:/media  # 持久化媒体文件
    restart: unless-stopped  # 当容器停止时除非手动停止,自动重启
    ports:
      - 8096:8096 # Emby 默认端口

MediaWarp 向客户端返回网盘直链作为播放链接

MediaWarp 是前置于 EmbyServer 的 反向代理服务器,修改了原版 EmbyServer 的 API 返回内容以实现特殊功能。

实现流程图

部署 MediaWarp

参考 MediaWarp说明文档 | 秋澪的博客 部署。

Docker Compose 文件参考如下:

version: '3.1'
services:
  mediawarp:
    image: akimio/mediawarp:latest
    container_name: mediawarp
    restart: unless-stopped
    volumes:
      - ./mediawarp_config:/config
      - ./mediawarp_logs:/logs
      - ./static:/static
    ports:
      - 9000:9000

./autofilm_config/config.yaml 写入以下配置文件:

Port: 9000                                  # MideWarp监听端口

MediaServer:                                # 媒体服务器相关设置
  Type: Emby                                # 媒体服务器类型(可选选项:Emby)
  ADDR: http://emby:8096                    # 媒体服务器地址
  AUTH: authkey                             # 媒体服务器认证方式

Cache:                                      # 缓存设置
  Type: Memory                              # 缓存类型(可选项:Memory内存缓存)
  WebCache: False                           # 是否启用Web缓存中间件(若MdiaWarp离上游服务距离较近则不建议启用)

Logger:                                     # 日志设定
  AccessLogger:                             # 访问日志设定
    Console: True                           # 是否将访问日志文件输出到终端中
    File: False                             # 是否将访问日志文件记录到文件中
  ServiceLogger:                            # 服务日志设定
    Console: True                           # 是否将服务日志文件输出到终端中
    File: True                              # 是否将服务日志文件记录到文件中

Web:                                        # Web页面修改相关设置
  Enable: True                              # 总开关
  Custom: True                              # 是否加载自定义静态资源
  Index: false                               # 是否从static目录读取index.html文件 
  Head: |                                   # 是否添加自定义字段到index.html的HEAD中
    <script src="/MediaWarp/static/custom/emby-front-end-mod/actor-plus.js"></script>
    <script src="/MediaWarp/static/custom/emby-front-end-mod/emby-swiper.js"></script>
    <script src="/MediaWarp/static/custom/emby-front-end-mod/emby-tab.js"></script>
    <script src="/MediaWarp/static/custom/emby-front-end-mod/fanart-show.js"></script>
    <script src="/MediaWarp/static/custom/emby-front-end-mod/playbackRate.js"></script>

  ExternalPlayerUrl: True                   # 是否开启外置播放器
  ActorPlus: false                           # 过滤没有头像的演员和制作人员
  FanartShow: True                          # 显示同人图(fanart图)
  Danmaku: True                             # Web显示弹幕
  VideoTogether: False                       # 共同观影,详情见 https://videotogether.github.io/
  BeautifyCSS: True                         # Emby美化CSS样式

ClientFilter:                               # 客户端过滤器
  Enable: False                             # 是否启用客户端过滤器
  Mode: BlackList # WhileList / BlackList   # 黑白名单模式
  ClientList:                               # 名单列表
    - Fileball
    - Infuse

# 302重定向相关配置

HTTPStrm: 
  Enable: False                            # 是否开启HttpStrm重定向
  TransCode: True                          # False:强制关闭转码 True:保持原有转码设置
  PrefixList:                               # EmbyServer中Strm文件的前缀(符合该前缀的Strm文件且被正确识别为http协议都会路由到该规则下)
    - /media/strm/http
    - /media/strm/https

AlistStrm:                                  # AlistStrm相关配置(Strm文件内容是Alist上文件的路径,目前仅支持适配Alist V3)
  Enable: True                              # 是否启用AlistStrm重定向
  TransCode: False                           # False:强制关闭转码 True:保持原有转码设置
  RawURL: True                             # Fasle:直接响应 Alist 上游的真实链接 True:响应 Alist 服务器的直链(要求客户端可以访问到 Alist)
  List:                                     # Alist服务关配置列表
    - ADDR: http://1Panel-alist-fvbK:5244      # Alist服务器地址
      Token: AlistToken  # Alist Token
      PrefixList:                           # EmbyServer中Strm文件的前缀(符合该前缀的Strm文件都会路由到该规则下)
        - /media/bangumi                   # 同一个Alist可以有多个前缀规则
        - /media/movies
        - /media/dramas

Subtitle:                                   # 字体相关设置
  Enable: True                              # 启用
  SRT2ASS: False                             # SRT 字幕转 ASS 字幕
  ASSStyle:                                 # SRT 字幕转 ASS 字幕使用的样式
    - "Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding"
    - "Style: Default,楷体,20,&H03FFFFFF,&H00FFFFFF,&H00000000,&H02000000,-1,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1"

其中,MediaServerauthkey 可以在 Emby 管理后台 - 高级 - API 密钥 获取。

后记

此时访问服务器 IP:9000 应当就可以正常访问了。

这篇文章一开始是在三月份写的,但是考虑到原文中部分功能实际上大多数人用不到,所以简单改了下发到论坛来。

由于也过去了差不多半年,部分配置文件可能已经存在部分差别,对此仅供参考,请根据实际调整。


基于Emby N+1(自动入库新番、直链、AList、单点认证......) 最终解决方案修改。

首发于奶昔论坛,CC-BY-NC-SA 4.0 许可协议。

评分

参与人数 1点数 +20 收起 理由
nyarime + 20 很给力!

查看全部评分

爱生活,爱奶昔~
回复

使用道具 举报

发表于 2025-9-30 00:20:54 | 查看全部
很有用的内容但是建议换openlist(
爱生活,爱奶昔~
发表于 2025-9-30 00:38:11 | 查看全部
SatoHideki 发表于 2025-9-30 00:20
很有用的内容但是建议换openlist(

+1 换openlist放心些
爱生活,爱奶昔~
发表于 2025-9-30 01:29:21 | 查看全部
alist不知道有没有投毒,好多奶友都说改openlist
爱生活,爱奶昔~
发表于 2025-9-30 01:41:25 | 查看全部
这个alist可以改成openlist吗,我看他们好像是一个东西... 不同分支?
爱生活,爱奶昔~
发表于 2025-9-30 08:31:47 | 查看全部
感觉openlist会好点
爱生活,爱奶昔~
发表于 2025-9-30 10:27:31 | 查看全部
非常棒的教程,就是alist现在不太敢用了
爱生活,爱奶昔~
发表于 2025-10-1 01:28:46 | 查看全部
openlist适用吗
爱生活,爱奶昔~
发表于 2025-10-1 04:09:26 来自手机 | 查看全部
牛啊
爱生活,爱奶昔~
回复

使用道具 举报

发表于 2025-10-17 13:55:36 | 查看全部
alist已经不是原来的alist了
爱生活,爱奶昔~
发表于 2025-10-18 18:48:30 | 查看全部
又是学到技术的一天
爱生活,爱奶昔~
发表于 2025-10-19 09:00:15 来自手机 | 查看全部
好高级!学习下
爱生活,爱奶昔~
发表于 2025-11-6 09:59:10 | 查看全部
+1 换openlist
爱生活,爱奶昔~
发表于 2025-11-6 10:31:06 | 查看全部
AList 不是被卖了吗?还安全吗?
爱生活,爱奶昔~
发表于 2025-11-6 10:34:37 来自手机 | 查看全部
一个浏览器扩展脚本就能做到播放的事情,为啥要搞这么复杂啊?
爱生活,爱奶昔~
发表于 昨天 21:50 | 查看全部
牛逼  刮削的影片信息用什么比较好?
爱生活,爱奶昔~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2025 Nyarime 沪ICP备13020230号-1|沪公网安备 31010702007642号手机版小黑屋RSS
返回顶部 关灯 在本版发帖
快速回复 返回顶部 返回列表