strm媒体库使用redir115的进阶302方案

strm媒体库使用redir115的进阶302方案

黑田奈奈子 1,079 2024-09-20

声明:除引用的Github项目文件外,其他内容编写为原创。搬运请注明原作者。

看本教程之前,先查看上一篇教程,对115资源转302直链有一定的了解。有看不懂的名词,善用GoogleChatGPT

准备条件

阅读此篇教程,默认你已经

  • 已阅读上一篇教程
  • Docker/Docker-Compose的相关配置使用
  • 理解什么叫strm

原理

本教程不再使用网盘的源文件,而是使用Auto_Symlink生成的local类型的strm文件加入媒体库,并利用nginx提供的转发到redir115服务,访问115网盘获取对应直链进行302跳转给客户端,并且可以实现emby的web播放302地址。

容器配置

services:
  cloudnas:
    image: cloudnas/clouddrive2-unstable
    container_name: clouddrive2
    environment:
       - TZ=Asia/Shanghai
       - CLOUDDRIVE_HOME=/Config
    volumes:
      - ./cd2:/Config
      - /CloudNAS:/CloudNAS:shared
      - /Movies:/Movies
    devices:
      - /dev/fuse:/dev/fuse
    restart: unless-stopped
    pid: "host"
    privileged: true
    network_mode: bridge
    ports:
      - 19798:19798

  auto_symlink:
    image: shenxianmq/auto_symlink:latest
    container_name: auto_symlink
    restart: unless-stopped
    user: 0:0
    network_mode: bridge
    ports:
      - "8095:8095"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./auto_symlink:/app/config
      - /CloudNAS:/CloudNAS:rslave
      - /Movies:/Movies
    depends_on:
      - cloudnas

  emby:
    image: amilys/embyserver
    container_name: emby
    volumes:
      - ./emby:/config
      - /CloudNAS:/CloudNAS:rslave
      - /Movies:/Movies
    privileged: true
    network_mode: bridge
    ports:
      - 8096:8096
    restart: unless-stopped

      
  redir115:
    image: htnanako/redir115:nginx
    container_name: redir115
    restart: unless-stopped
    network_mode: host
    volumes:
      - ./redir115:/data
      - ./cache:/var/cache/nginx/emby
      - ./logs:/var/log/nginx
    environment:
      NGINX_PORT: 8092
      EMBY_HOST: http://emby.lan:8096
      EMBY_API_KEY: abcdefghijklmnopqrstuv0123456789
      ORIGINAL_PATH: /CloudNAS/115
      REDIR_PATH: /Movies
      REDIR_HOST: https://redir.abc.xyz
      REDIR_MODE: strm_local
      COOKIE: UID=;CID=;SEID=;

具体步骤

CloudDriver2

CloudDriver2(下称CD2)的配置与上一篇教程一致,安装后添加115网盘,并将115根目录挂载到容器的 /CloudNAS 目录,即宿主机的 /CloudNAS 目录,并注意添加 :shared 权限实现读写共享。

Auto_Symlink(下称AS)作用是读取CD2挂载的115网盘文件,生成local类型的strm文件,并同步元数据(如有)到本地,加快扫库读取速度,减少访问网盘的次数。

路径说明
  • /CloudNAS:/CloudNAS:rslave

    用于挂载CD2挂载到本地的115网盘到容器内,并添加 :rslave 权限实现读写从属。

  • /Movies:/Movies

    用于生成strm文件以及同步元数据到宿主机的 /Movies 目录下,供emby扫库读取。

配置说明

点击 添加同步 按钮
1
媒体目录填写 /CloudNAS 目录下需要同步的子目录,如整个 影视 目录,也可将每个类型的影视目录独立一个任务。
本地目录填写 /Movies 目录下想要同步到的目标目录,该目录需先手动创建。

2
同步状态 按钮打开。
元数据模式 选择本地模式
清除功能 务必全部关闭

3

实时监控 按需打开,删除功能务必关闭

软链接模式 选择 strm

strm模式 选择 local

挂载类型 选择 cd2

云端地址 填写 CD2的内网地址及端口

cd2根目录 填写 115目录的上一级目录,如/ClouNAS

将所有需要的同步目录配置完保存后,重启一下AS。然后在 常用工具 -> 手动同步 中启动任务等待strm文件生成及元数据同步完成。

Emby

Emby的配置,将宿主机的 /CloudNAS/Movies 目录均原样映射入容器后,需要使用 /Movies 目录作为媒体库目录,即 strm 文件所在目录,添加媒体库配置。

此时,在Emby扫完某一个库之后,可以打开任意一部电影或者剧集,查看对应的文件目录信息,如 /CloudNAS/影视/动漫/动画电影/铃芽之旅 (2022)/铃芽之旅 (2022) - 1080p H.264.mkv 此路径记录一下,等会要用。
你问我媒体库用的是 /Movies ,为什么显示的是 /CloudNAS?这就是 strm 文件的特性,Emby会直接显示 strm 文件内容的路径信息。

接下来看一下该文件在115网盘内的路径,应该是 /影视/动漫/动画电影/铃芽之旅 (2022)/铃芽之旅 (2022) - 1080p H.264.mkv ,记录一下,一会也要用。

Redir115

镜像地址 htnanako/redir115,该项目使用了bpking1/embyExternalUrl以及sjtuross/redir115提供的代码进行整合,同时提供redir115及nginx代理服务在同一个容器内。感谢原项目开发大佬的付出。

使用redir115的nginx标签镜像,此镜像同时用于代理Emby请求以及请求115直链。

环境变量配置
  • NGINX_PORT

    指定nginx监听端口,后续访问Emby服务均使用此端口,才可以实现直链播放,默认8092端口。

  • EMBY_HOST

    Emby服务器的地址,内网地址端口即可

  • EMBY_API_KEY

    Emby的ApiKey,从Emby的web中获取

  • ORIGINAL_PATH

    Emby中显示的媒体路径中,不属于115网盘内路径的部分。

    如上述例子的 /CloudNAS/影视/动漫/动画电影/铃芽之旅 (2022)/铃芽之旅 (2022) - 1080p H.264.mkv 中, /CloudNAS 即不属于115网盘内路径。

  • REDIR_PATH

    在Emby中的媒体路径中,去掉ORIGINNAL_PATH部分之后,如果并不是115网盘内实际的完整路径,需要添加的前缀部分。
    在上述例子中的 /影视/动漫/动画电影/铃芽之旅 (2022)/铃芽之旅 (2022) - 1080p H.264.mkv ,已经是115网盘内的完整路径了,那么此环境变量可不填写任何内容,或者删除此环境变量。

  • REDIR_HOST

    Redir115容器中的redir115服务,使用5302端口,使用你本地的反代服务器将其反代出去,并添加上ssl证书,填写反代后的https地址端口,如 https://redir.abc.xyz:5302

  • REDIR_MODE

    此参数支持 strm_local, strm_cloud, symlink,依照AS容器的配置进行填写。本教程使用的是 strm_local

  • COOKIE

    填写一个不会在其他地方使用的115网盘的Cookie,建议使用alist官方文档中、提供的扫码服务获取TV端的Cookie,格式应如 : UID=;CID=;SEID=;

使用

所有配置完成并启动容器后,访问Redir115容器中配置的Nginx端口,默认 8092 ,即可访问到Emby服务。可支持第三方客户端、Emby Web播放302直链地址。

番外

Emby Strm Assistant 插件

Strm Assistant 是一个Emby插件,放置到Emby配置目录下的 /config/plugins/,重启Emby即可在插件页看到。
4
其主要功能为提取媒体信息,即媒体的视频信息及音频信息等,并更新对应的nfo文件。如果你使用的的是amilys/emby并开启了第三方播放器按钮功能,在该插件跑完任务后才可以看到显示第三方播放器按钮。

多Emby配置

如果你不止一个Emby服务端需要进行获取直链播放,在安装完上述容器后,每新增一个Emby容器,需添加一个Nginx容器,用于Emby的一对一服务。

Nginx容器配置
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    network_mode: host
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/embyCache:/var/cache/nginx/emby
      - ./nginx/logs:/var/log/nginx
    restart: unless-stopped

配置文件仓库bpking1/embyExternalUrl

下载完该仓库的文件,使用其中的 emby2Alist/nginx 文件夹内的配置文件。

需要进行修改的文件:

  • conf.d/constant.js
    5

    • embyHost参数修改为新增的Emby地址
    • embyApiKey参数修改为新增的Emby的ApiKey
    • mediaMountPath参数去掉默认的 /mnt 仅保留 [""] 部分
  • conf.d/config/constant-pro.js
    6

    • mediaPathMapping为一个列表,其中的参数均为列表,仿照其中第一条参数进行填写。
      • 第一个参数为0
      • 如果你的文件是symlink类型,则第二个参数为0,如果文件为strm_local类型,则第二个参数为1,如果文件为strm_cloud类型,则第二个参数为2
      • 第三个参数填写上述redir115服务中的 ORIGINAL_PATH 同含义的路径
      • 第四个参数填写上述redir115服务的5302端口反代的https地址端口,如 https://redir.abc.xyz:5302 。但当 REDIR_PATH 有任何内容时,需要填写在该地址后的路径部分,如 https://redir.abc.xyz:5302/media 之类
      • 总的来说,填写格式为 [0, 1, "/CloudNAS/115", "https://redir.abc.xyz:5302"]
  • conf.d/includes/http.conf
    7

    • 修改两个listen后的端口号,为该nginx监听的端口,作用同redir115的NGINX_PORT

此nginx容器仅用于对应的Emby服务的代理访问。获取115直链的服务,可复用redir115容器的5302端口提供的服务即可。