bpking1 / embyExternalUrl

some emby/jellyfin scripts
MIT License
675 stars 121 forks source link

alist+115+plex 局域网直链问题 #329

Closed LemonPG closed 2 weeks ago

LemonPG commented 1 month ago

使用alist+115+plex,使用安卓plex客户端在互联网可以直链。局域网不走nginx,看了以前的issues提到plex安卓官方客户端高级设置里设置nginx的端口,尝试设置了nginx的外网端口,测试还是不行。设置是有问题吗?

// 这里默认 plex 的地址是宿主机,要注意 iptables 给容器放行端口
const plexHost = "http://127.0.0.1:32400";

// rclone 的挂载目录, 例如将od, gd挂载到/mnt目录下: /mnt/onedrive /mnt/gd ,那么这里就填写 /mnt
// 通常配置一个远程挂载根路径就够了,默认非此路径开头文件将转给原始 plex 处理,不用重复填写至 disableRedirectRule
const mediaMountPath = ["/mnt"];

// rclone/CD2 挂载的 alist 文件配置,根据实际情况修改下面的设置
// 访问宿主机上 5244 端口的 alist 地址, 要注意 iptables 给容器放行端口
const alistAddr = "http://ip:37600";

// alist token, 在 alist 后台查看
const alistToken = "alist-token";

// alist 是否启用了 sign
const alistSignEnable = true;

// alist 中设置的直链过期时间,以小时为单位
const alistSignExpireTime = 2;

// alist 公网地址,用于需要 alist server 代理流量的情况,按需填写
const alistPublicAddr = "http://ip:端口";
chen3861229 commented 1 month ago

绕过官方客户端的强制局域网发现,可以尝试下以下几种

1.https://github.com/bpking1/embyExternalUrl/issues/59#issuecomment-2036672011

2.我自用的是 emby,不过 plex 原理应该也是一样的,都是客户端通过局域网 UDP 广播所有 ip 地址的指定端口来发现服务端,这个端口一般不同于媒体服务默认连接的那个端口,所以基于这个特性,emby 用的容器版,并且只开放了 emby 自身的一个端口出来,8096,plex 的话是 302400,所以切断了客户端到服务端的局域网发现功能

LemonPG commented 4 weeks ago

谢谢,我讲下我自己遇到的问题。 1、部署的系统是linux 2、因为我用ios系统,所以用了https,在局域网中直链,不使用443、80端口。 3、把plex的端口,在防火墙中禁用(就是不让局域网访问)。

遇到的问题一:遇到了局域网访问的问题,公网IP在局域网内是无法访问的(原因未知)。所以通过套cf的cdn解决,在规则中端口指向nginx的反代端口。 image

遇到的问题二(已解决):plex客户端访问的域名端口不对。在网络plex中设置两个地方,分别是填域名,和443端口。(设置端口显示网络外部不可用,不需要理会) image image

遇到的问题三(未解决):现在是能实现直链了,但通过plex客户端、infuse播放的效果不是很好。每次点开始播放就要等待好久,拖动也是好久才反应过来。请问作者有没有什么思路定位问题或解决?

chen3861229 commented 3 weeks ago

问题一: 这个应该用域名可以解决,局域网也是用域名访问,路由器那边会自动 DNS 解析为真实的局域网 IP 访问

问题三: 这个整体上是受限于 115 高峰期原本的接口响应较慢导致的,非高峰期 200-400 毫秒,高峰期可能会达到 6-10 秒,经过调试 115 的转码直链接口得出此结论,相当于间接导致了 alist 响应慢的问题,而 115 播放限制 UA 且详情页的 UA 和 播放器的 UA 部分时候会不相等,所以即使开启脚本中的二级直链缓存进行预热,部分情况也解决不了,简单的问题定位可以在error.log业务日志中搜索cost``ms之类的关键字看下,真正响应的链接关键字redirect to,各 API 接口接受到的客户端上报的 User-Agent 关键字UA

1.Infuse 这边拖动进度条的话频繁请求 302 这个无法彻底解决,因为根本问题出在 Infuse 的多线程的视频加载 > 了 115 那边的同任务最大两个线程限制上面,不过脚本中还是做了一些能想象到的优化,可以尝试一下,https://github.com/bpking1/embyExternalUrl/issues/308