Plex添加网盘挂载路径并使用302直链播放
本文由 简悦 SimpRead 转码, 原文地址 invites.fun
前篇帖子《emby2alist 教程:emby 添加网盘挂载路径并使用 302 直链播放》的、适用于 plex 的缩减版。
其实 emby2alist 和 plex2alist 大致一样的,需要修改的核心差不多的。
下面尽量简单一点,防止一些朋友有意 / 无意吐槽教程太过复杂。
教程开始
(本贴在 QNAP 威联通 NAS 上测试)
- 已经部署了 plex media server(下文简称 pms),无论是 docker 方式还是 “套件” 方式部署。记录端口为 32400。
- 已经部署了 alist,并按照 alist 官方文档添加了 115 网盘、阿里网盘等支持 302 重定向的网盘之一。下文以 115 网盘为例,并在 alist 中的挂载路径为
/115,如下图:

并在后台管理 -> 设置 -> 其他,获取 alist 令牌,备用。 - 使用 clouddrive2 来挂载网盘到 NAS 某路径下。
- 在 cd2 中再重新添加一边 115 网盘。(alist 里添加 115 网盘时, Qrcode 源选不常用的设备,如 Tv;cd2 里添加 115 网盘时,用扫码即可,这样防止两者相互挤掉)。然后挂载到 NAS 本地路径上(如
/share/xxx/cd2),此时你的媒体文件路径可能是/share/xxx/cd2/115/网盘媒体文件.mkv - 似乎 cd2 可以添加 alist webdav,跳过 cd2 对 115 的挂载。但未测试,自行探索。
- 在 cd2 中再重新添加一边 115 网盘。(alist 里添加 115 网盘时, Qrcode 源选不常用的设备,如 Tv;cd2 里添加 115 网盘时,用扫码即可,这样防止两者相互挤掉)。然后挂载到 NAS 本地路径上(如
plex2alist 的使用
去仓库 bpking1/embyExternalUrl 下载 plex2Alist 文件夹源码,关注plex2Alist文件夹结构:
~/plex2Alist
├── docker
│ ├── docker-compose.yml
│ └── nginx-plex.syno.json
├── nginx
│ ├── conf.d
│ │ ├── api
│ │ ├── common
│ │ ├── constant.js
│ │ ├── exampleConfig
│ │ ├── includes
│ │ ├── plex.conf
│ │ └── plex.js
│ └── nginx.conf
└── README.md
(这里可灵活处理文件组织结构)拷贝xxx/plex2Alist/docker/docker-compose.yml到xxx/plex2Alist/compose.yaml,删掉 docker 文件夹,变成这样的结构:
emby2Alist
.
├── compose.yml
├── nginx
│ ├── conf.d
│ │ ├── api
│ │ ├── cert
│ │ ├── common
│ │ ├── constant.js # 待修改
│ │ ├── exampleConfig
│ │ ├── includes
│ │ ├── plex.conf # 默认即可,需要非反代下https访问才修改
│ │ └── plex.js
│ ├── log # 该目录仅在容器建立后生成
│ │ ├── access.log
│ │ └── error.log # 可查看劫持日志
│ └── nginx.conf
└── README.md
其中 compose.yaml 简化为(在不支持相对路径写法的容器环境中,需要将相对路径写成绝对路径):
version: "3.5"
services:
plex2alist:
image: nginx:latest
container_name: plex2alist
# 更改为默认host网络,纠正流量标识,直接占用宿主机端口,docker层会禁用端口映射
network_mode: host
# 如果需要使用bridge(桥接)网络,请取消ports(端口映射)注释,并注释network_mode
# 端口映射规则为,宿主机端口:容器内部端口
# ports:
# - 8095:8095
environment:
- TZ=Asia/Shanghai
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/log:/var/log/nginx
restart: always
networks: {}
我打包了一份 commit 为 b4dc0fe 的源码,大家可以直接下载,然后根据下面步骤修改使用。链接:https://zmgg.lanzout.com/ixxfQ1z42kad。
修改nginx/conf.d/constant.js

-
plexMountPath,图里写的/share/SSD1T/03cd2,表示在 pms 里/share/SSD1T/03cd2开头的媒体资源被访问时发送的请求会被劫持并修改。由于我的 pms(docker 方式部署)中,进行了如下映射,所以填/share/SSD1T/03cd2,这里应该填 pms 实际能看到的 cd2 挂载的路径(即容器中的 cd2 路径):volumes: - …… - /share/SSD1T/03cd2:/share/SSD1T/03cd2:rslave -
alistSignEnable是填 true 还是 false,根据 alist 添加网盘时是否启用签名来定:

-
其他自行修改。
添加 https 端口
由于 plex 的一些客户端对 https 协议连接有过度倾向,所以建议配上 https,目前至少可行的两个选择:
- 【推荐】使用反代来用域名绑定 8095 端口,实现通过
https://plex.xxx.com来访问 pms。 - 在
xxx/plex2Alist/nginx/conf.d/cert文件夹下放置证书文件(根据 xxx/plex2Alist/nginx/conf.d/includes/https.conf 中的代码所示),并在xxx/plex2Alist/nginx/conf.d/plex.conf中取消注释include /etc/nginx/conf.d/includes/https.conf;(即去除前面的 #)。
假设你是反代绑定了域名https://plex.xxx.com,你需要先通过 https://127.0.0.1:32400 或 https://192.168.xxx.xxx:32400 修改 pms 的设置->网络->自定义服务器访问 URL,将该域名添加到首部:
https://plex.xxx.com:443,https://ipv6.xxx.com:32400,http://192.168.xxx.xxx:32400
可以只填
https://plex.xxx.com:443(建议写上后面的 443),保证所有客户端连接 pms 时,都是通过该域名进行连接的。我填了其他的,是因为一些客户端支持自己选择线路。
做完上述步骤,需要浏览器打开https://plex.xxx.com完成一次 pms 验证(类似 pms 认领之类的)。
创建并启动容器
完成上述修改后,创建容器就行了。
启动容器后,有强迫症的可以在终端下输入netstat -lntp |grep 809,查看是否有 8095 端口服务。
测试
容器正常启动后,使用 plex 播放器客户端,连接 pms(如果你之前连接过,建议退出登录重新连接,避免玄学缓存问题)。
进入后台设置,创建一个媒体库,文件夹添加 cd2 挂载到本地的网盘里的路径,如/share/SSD1T/03cd2/115/电影。这里最好找一个影视数量少的网盘路径做个测试,防止 plex2alist 配置的有问题,而影视又过多,进行大量的刮削,导致 NAS 非常卡。
等慢慢刮削完后,点击播放视频,查看日志tail -f /plex2Aist容器路径/nginx/log/error.log,若出现如下信息,则表示直链播放成功:

教程结束。
问题
-
由于 plex 似乎不支持 strm 文件,所以刮削时,pms 必然会下载网盘中视频的一部分以读取元信息(分辨率、码率、音频、字幕等),导致网盘大量入库有点慢。
-
不支持转码。因为相当于是外网设备直接和网盘的媒体文件之间进行串流,所以不支持转码。如果你的库里全装的是来自网盘里的 4K 原盘、4K Remux,那么外网播放似乎有点奢侈。因为一个原盘可能近 50 甚至 100GiB,外网看完一部这样的影视,得消耗多少流量?
-
能否流畅播放,取决于外网设备的对网盘文件的下载速度,因此开网盘会员 + 高下载带宽可能获得更好体验。我看的片少,不知道最高码率多大。如果你的好基友(or npy?)家是千兆带宽,你为爱发电买了网盘会员,他应该能流畅看大部分电影了。
-
很多用 plex 的朋友似乎有减少 pms 对网盘读取频率的特殊技巧,我不是很会,求各位大佬指点。
参考:
Comments