bpking1 / embyExternalUrl

some emby/jellyfin scripts
MIT License
698 stars 126 forks source link

plex直链失败 #59

Closed dzhl closed 3 months ago

dzhl commented 9 months ago

使用了最新的plex方案,不过docker方面只用了其中的nignx服务,alist和plex都是单独安装的,plex是通过官方docker安装的。现在网页上通过8095端口可以访问到plex服务器,但实际测试下来,视频文件没有走直链,仍是plex服务器中转的。在网页端登录plex后台后,按照说明把公开访问的端口也设为8095,这时网页端通过8095端口仍是能找到plex服务器,但plex客户端就访问不到plex服务器,这是什么原因呢?

chen3861229 commented 9 months ago

能提供下nginx日志吗?出现这行日志输出才是在alist中拿到了视频直链 7014577b2321b88c2bef8196a47f122a 服务的安装和组合方式对功能没有影响,只有几个关键的配置点是必须的,可以检查一下 1.这条可能存在差异,在端口映射设备上去掉plex默认的32400转发,以防止plex自动连到默认端口上,之前的pr说明中我没配置也能用,不过原理还是需要保证不能绕过nginx的处理 image 2.端口转发设备开放nginx配置文件中自定义的端口,例如8095,这个你配置得没问题 3.plex客户端之前测试得比较少, ~~现在发现禁用32400默认端口后,需要打开客户端高级设置-允许非加密连接-始终,并且 客户端高级设置-手动连接,填写nginx端口,ip为空,不用填~~ 只需要打开客户端高级设置-允许非加密连接-始终

sjtuross commented 9 months ago

我这边偶尔一个片子可以,但大部分都是下面的出错信息

2023/12/26 00:02:34 [warn] 23#23: *325 js: itemInfoUri: http://192.168.1.202:32400/search?query=Painted.Skin.2008.1080p.BluRay.REMUX.AVC.DTS-HD.MA.PCM.7.1&X-Plex-Token=<redacted>
2023/12/26 00:02:34 [error] 23#23: *325 js: error: plex_api fetch mediaItemInfo failed, TypeError: cannot get property "0" of undefined
2023/12/26 00:02:57 [warn] 23#23: *346 js: itemInfoUri: http://192.168.1.202:32400/search?query=Painted.Skin.2008.1080p.BluRay.REMUX.AVC.DTS-HD.MA.PCM.7.1&X-Plex-Token=<redacted>
2023/12/26 00:02:57 [error] 23#23: *346 js: error: plex_api fetch mediaItemInfo failed, TypeError: cannot get property "0" of undefined
2023/12/26 00:04:09 [warn] 22#22: *454 js: itemInfoUri: http://192.168.1.202:32400/search?query=%E6%AC%A2%E8%BF%8E%E6%9D%A5%E5%88%B0%E7%8E%8B%E4%B9%8B%E5%9B%BD%20(2023).E08&X-Plex-Token=<redacted>
2023/12/26 00:04:09 [error] 22#22: *454 js: error: plex_api fetch mediaItemInfo failed, TypeError: cannot get property "0" of undefined
2023/12/26 00:04:25 [warn] 21#21: *499 js: itemInfoUri: http://192.168.1.202:32400/search?query=%E8%8E%B2%E8%8A%B1%E6%A5%BC%20(2023).E35&X-Plex-Token=<redacted>
2023/12/26 00:04:25 [error] 21#21: *499 js: error: plex_api fetch mediaItemInfo failed, TypeError: cannot get property "0" of undefined
chen3861229 commented 9 months ago

这个估计修复会比较慢了,受限于plex没有官方的API文档,所以目前的实现方式比较别扭(bug多),还是靠抓包试出来的,如果能找到和emby一样的直接获取媒体服务器的文件路径接口就好很多了。

dzhl commented 9 months ago

能提供下nginx日志吗?出现这行日志输出才是在alist中拿到了视频直链 7014577b2321b88c2bef8196a47f122a 服务的安装和组合方式对功能没有影响,只有几个关键的配置点是必须的,可以检查一下 1.这条可能存在差异,在端口映射设备上去掉plex默认的32400转发,以防止plex自动连到默认端口上,之前的pr说明中我没配置也能用,不过原理还是需要保证不能绕过nginx的处理 image 2.端口转发设备开放nginx配置文件中自定义的端口,例如8095,这个你配置得没问题 3.plex客户端之前测试得比较少,现在发现禁用32400默认端口后,需要打开客户端高级设置-允许非加密连接-始终,并且 客户端高级设置-手动连接,填写nginx端口,ip为空,不用填 image

大佬,你好,经过我进一步测试,发现下面几个问题, 1.plex后台设置好跟nginx相同的端口后,windows客户端(开启始终运行非加密连接后)能找到plex服务器,有时确实是能找到直链路径,播放不经过plex服务器,但同一个视频有时又就不行,会提示“该服务器没有足够性能用于转化视频”,日志里看不到直链路径。 image

2.大佬最后一张关于高级设置的截图是在哪个客户端上截取的,我在iso端plex app的设置里“高级设-服务器连接”页面,需要输入IP(只能是IP,并且必须输入)和端口,我输入正确的Plex服务器ip和端口,也是提示“提供的详细信息无法建立到服务器的连接”。目前在改了plex默认端口后,plex 的iso客户端还是连接不上plex服务器 image image 3.使用infuse连接plex,播放会提示“http 500错误”,日志里不显示媒体路径 image

4.plex的客户端app是不是只能连接plex服务器,不能像网页端或windows端一样管理plex服务器,如媒体库等。这个跟项目不管,纯粹请教。

关于emby直链,我是用的strm文件,发现strm并不是真正走直链,所以我准备采用大佬的方案,也发现有几个小问题和疑问,

1.我使用的是strm文件,文件内有视频alist地址,我看脚本里有个变量“allowRemoteStrmRedirect ”,我设为true后,确实能真正直链播放,但是设为false后,视频就不能播放,日志里就提示找不到文件了,那请问我如果使用strm文件,应该如何设置呢?js里注释是说“建议strm文件内部只填路径”,这是什么意思呢?我尝试strm内容不包含域名,指保留跟alist结构一样的路径,也是可以实现直链播放的,但如果不包含完整的URL,那么emby进行刮削,是不是就会出错,找不到文件呢?如果能优雅的使用strm文件,那么这个方案在plex中是不是也可以实现呢?目前plex能通过strm刮削但不能播放

2如果alist只能用https访问,那应该如果设置呢?我是关闭ssl后才能视频播放,开启ssl后就失败。

3.使用这套直链方案后,点击播放到开始播放需要很长时间,而如果只是用官方的strm,或者说走官方的8096端口,不经过nginx中转,那点击播放到开始播放时间就很短,不知大佬有遇到这样情况吗?

chen3861229 commented 9 months ago

1.这个是处理plex获取挂载路径方式有bug导致的,和plex的提示语没有关联,这个bug不太好修,估计得等很长一段时间了,没找到好的思路, 如果急的话可以用作者/releases/tag/v0.0.6的查数据库方式,比较治本。 2.我只有官方安卓客户端,而且测试得比较简单,这个的解决方案我之后看看。 只需要打开客户端高级设置-允许非加密连接-始终 3.这个和1是同个问题,没搜索到plex的媒体挂载路径,等待一起修复。 4.在官方安卓客户端上找了一圈,确实没法管理,只能播放。

4-1.strm走直链,下边第一种情况已做处理默认支持,不用管allowRemoteStrmRedirect参数的设置,此参数只用于处理情况2那些带协议头的网络链接,防止泄露直链中的明文密码(毕竟用户可以随意输入),所以这边默认也是没开启。 有多种填写方式,一个strm文件内部只能有一行路径或者链接,具体可以参考emby官方文档,我这里只测试了两种情况,例如: 1: 从alist的根路径开始填写,注意不要包含embyMountPath这个参数的路径,特殊字符不用转义,代码内部已做处理。 image

~~2: 直接填写直链,这种风险很大,不建议使用,重定向后的远程链接将被部分浏览器跨域限制,无法修复,emby的客户端直接获取到并请求地址~~ image

emby刮削strm是根据这个文件本身的路径以及文件名来识别的,和strm内容无关,空文件也能刮削出来,只在播放时将内部链接传给客户端自己请求(官方不支持此方式,基于此项目实现的),plex我看网上说是不支持strm文件的,而且plex我用得不多,所以不清楚,之后有时间我测试下。

4-2.这个bug在其他地方看到了,有时间我修复一下,暂时先不用ssl吧。 4-3.这个我感知不是很明显,不过确实慢了1秒吧,如果确实很慢到几秒的话我抽时间看能不能优化一下吧。

dzhl commented 9 months ago

1.这个是处理plex获取挂载路径方式有bug导致的,和plex的提示语没有关联,这个bug不太好修,估计得等很长一段时间了,没找到好的思路,如果急的话可以用作者/releases/tag/v0.0.6的查数据库方式,比较治本。 2.我只有官方安卓客户端,而且测试得比较简单,这个的解决方案我之后看看。 3.这个和1是同个问题,没搜索到plex的媒体挂载路径,等待一起修复。 4.在官方安卓客户端上找了一圈,确实没法管理,只能播放。

4-1.strm走直链,下边第一种情况已做处理默认支持,不用管allowRemoteStrmRedirect参数的设置,此参数只用于处理情况2那些带协议头的网络链接,防止泄露直链中的明文密码(毕竟用户可以随意输入),所以这边默认也是没开启。 有多种填写方式,一个strm文件内部只能有一行路径或者链接,具体可以参考emby官方文档,我这里只测试了两种情况,例如: 1: 从alist的根路径开始填写,注意不要包含embyMountPath这个参数的路径,特殊字符不用转义,代码内部已做处理。 image

2: 直接填写直链,这种风险很大,不建议使用,请勿填写明文密码或者token之类的,会被emby的客户端直接获取到并请求地址 image

emby刮削strm是根据这个文件本身的路径以及文件名来识别的,和strm内容无关,空文件也能刮削出来,只在播放时将内部链接传给客户端自己请求(官方不支持此方式,基于此项目实现的),plex我看网上说是不支持strm文件的,而且plex我用得不多,所以不清楚,之后有时间我测试下。

4-2.这个bug在其他地方看到了,有时间我修复一下,暂时先不用ssl吧。 4-3.这个我感知不是很明显,不过确实慢了1秒吧,如果确实很慢到几秒的话我抽时间看能不能优化一下吧。

非常感谢作者的耐心答复,没见过这么热心的,赞。

dzhl commented 9 months ago

置,此参数只用于处理情况2那些带协议头的网络链接,防止泄露直链中的明文密码(毕竟用户可以随意输入),所以这边默认也是没开启。 有多种填写方式,一个strm文件内部只能有一行路径或者链接,具体可以参考emby官方文档,我这里只测试了两种情况,例如: 1: 从alist的根路径开始填写,注意不要包含embyMountPath这个参数的路径,特殊字符不用转义,代码内部已做处理

请问后来为什么没有采用0.0.6方案呢?是由什么其他问题吗?另外我在emby里是采用阿里云盘当作媒体库,如果不走nignx,直接播放,从点击到开始播放最多2秒反应时间,但是如果走nginx,反应时间就要10多秒了,感觉还是很明显了,不过在播放阶段,拖动没有什么区别

chen3861229 commented 9 months ago

因为0.0.6方案是作者实现的,我不太懂其他平台的编译,所以参照作者emby的方式实验性做了一下,不是很完善。 10多秒确实很慢了,你的nginx和emby还有alist是在同一局域网吗?nginx会去这两个查询信息,耗时累计起来的。

bpking1 commented 9 months ago

emby在扫库的时候不会刮削strm文件的元数据,只有在视频第一次播放的时候才会获取,这需要几秒钟的时间。走nginx直链很慢可能是这个原因导致的

On Fri, Dec 29, 2023, 20:14 chen3861229 @.***> wrote:

因为0.0.6方案是作者实现的,我不太懂其他平台的编译,所以参照作者emby的方式实验性做了一下,不是很完善。 10多秒确实很慢了,你的nginx和emby还有alist是在同一局域网吗?nginx会去这两个查询信息,耗时累计起来的。

— Reply to this email directly, view it on GitHub https://github.com/bpking1/embyExternalUrl/issues/59#issuecomment-1872006790, or unsubscribe https://github.com/notifications/unsubscribe-auth/A4WIOCSDNQU5RZJXSYX6GZDYL2XYPAVCNFSM6AAAAABBASSM42VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZSGAYDMNZZGA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

dzhl commented 9 months ago

因为0.0.6方案是作者实现的,我不太懂其他平台的编译,所以参照作者emby的方式实验性做了一下,不是很完善。 10多秒确实很慢了,你的nginx和emby还有alist是在同一局域网吗?nginx会去这两个查询信息,耗时累计 我是

因为0.0.6方案是作者实现的,我不太懂其他平台的编译,所以参照作者emby的方式实验性做了一下,不是很完善。 10多秒确实很慢了,你的nginx和emby还有alist是在同一局域网吗?nginx会去这两个查询信息,耗时累计起来的。

我是在安装openwrt x86的小主机上通过docker安装的plex和nginx,alist是openwrt中自带的插件实现的。我测试下来,日志里显示“mount file 视频路径”后,视频就很快可以播放了,所以感觉像是查询emby时花费的时间比较长,因为这时似乎还没有去查询alist。0.0.6方案中的amd执行文件在openwrt中跑不了,应该是编辑平台不同导致的,我就不测0.0.6方案了。

dzhl commented 9 months ago

emby在扫库的时候不会刮削strm文件的元数据,只有在视频第一次播放的时候才会获取,这需要几秒钟的时间。走nginx直链很慢可能是这个原因导致的 On Fri, Dec 29, 2023, 20:14 chen3861229 @.> wrote: 因为0.0.6方案是作者实现的,我不太懂其他平台的编译,所以参照作者emby的方式实验性做了一下,不是很完善。 10多秒确实很慢了,你的nginx和emby还有alist是在同一局域网吗?nginx会去这两个查询信息,耗时累计起来的。 — Reply to this email directly, view it on GitHub <#59 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/A4WIOCSDNQU5RZJXSYX6GZDYL2XYPAVCNFSM6AAAAABBASSM42VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZSGAYDMNZZGA . You are receiving this because you are subscribed to this thread.Message ID: @.>

如果是第一次读取时才刮削导致慢,是不是不通过nignx中转时首次播放也会慢一些呢?或者通过nginx中转但非首次播放就应快了呢?困惑

bpking1 commented 9 months ago

是的,如果不是这样,那就不是我说的那个问题

chen3861229 commented 8 months ago

对plex下载媒体文件的直链处理优化了一下搜索,精确度有了很大提升,不过处理方式依旧比较别扭。。。测试下来如果是从Web详情页点击播放是精准匹配的

dzhl commented 8 months ago

对plex下载媒体文件的直链处理优化了一下搜索,精确度有了很大提升,不过处理方式依旧比较别扭。。。测试下来如果是从Web详情页点击播放是精准匹配的

好的,我试试,另外我测试了提供的0.0.6方案,目前在手机的app和infuse上是正常的,但在apple tv就不稳定,又是会中转。

dzhl commented 8 months ago

是的,如果不是这样,那就不是我说的那个问题

作者,你好,我在测试0.0.6方案,通过plex2alist-linux-amd64去直接读取plex数据库,目前在手机和infuse和网页端正常,在apple tv 四代上不稳定,有时会中转。但这对我来说已经很不错了,不过这个plex2alist-linux-amd64不能再openwrt系统上运行,请问能编译一版在openwrt上运行的版本吗?我的云小鸡空间太小,放不下plex的刮削库,所以打算放在路由上。如果方便提供代码的话,我自己编译也行。

dzhl commented 8 months ago

对plex下载媒体文件的直链处理优化了一下搜索,精确度有了很大提升,不过处理方式依旧比较别扭。。。测试下来如果是从Web详情页点击播放是精准匹配的 代码是否还没有提交呢,还是几个月前的代码

chen3861229 commented 8 months ago

暂时先手动替换下新代码吧,等合并后才能更新到。 https://github.com/chen3861229/embyExternalUrl/tree/dev/plex2Alist

dzhl commented 8 months ago

暂时先手动替换下新代码吧,等合并后才能更新到。 https://github.com/chen3861229/embyExternalUrl/tree/dev/plex2Alist

你好,我这边测试了下,打开网页端,日志里确实看到获取到了多媒体直链地址,可能是我的网络速度受限(家里宽带临时端了,手机流量用超了,受限中),网页一直处于等待中。但是在手机端打开plex,nginx日志中会提示授权失败,估计是plextoken的问题,我是从电脑端chrome中获取的plextoken,这个token对手机端不适用

chen3861229 commented 8 months ago

啊?其实plex2alist配置里没有plextoken的配置吧,用的是客户端自己请求ngixn(plex)携带的token,所以应该只用保证客户端是正常登录过的状态就行了,可以试下退出登录重登。手机端plex的兼容情况这次更改没做测试,有时间我测试一下。

dzhl commented 8 months ago

啊?其实plex2alist配置里没有plextoken的配置吧,用的是客户端自己请求ngixn(plex)携带的token,所以应该只用保证客户端是正常登录过的状态就行了,可以试下退出登录重登。手机端plex的兼容情况这次更改没做测试,有时间我测试一下。 我在关于常量的js文件里有plextoken这样的常量需要设置。

chen3861229 commented 8 months ago

额,这个是我抽取变量过头了,这个不用设置也不应该改的,如果直链不了应该有其他原因

dzhl commented 8 months ago

额,这个是我抽取变量过头了,这个不用设置也不应该改的,如果直链不了应该有其他原因

冒昧问一句,作者的0.0.6版程序源码能提供吗?我测试下来网页和手机端都可以用,就是apple tv有时不行。但是作者提供的执行文件不能在openwrt系统上运行,所以我想重新编译下。我的linux小鸡空间太小,容纳不了刮削的资料库,我打算在我的openwrt上去运行,空间大,或者可以docker部署也行

chen3861229 commented 8 months ago

这个得问作者了,我也不是很清楚。

chen3861229 commented 8 months ago

是的,如果不是这样,那就不是我说的那个问题

大佬,目前alist 的115 api 已支持返回302链接,访问115 cdn 的UA需和获取直链时的UA一致,plex2alist程序能否在向 alist api 请求时 向 headers 添加UA?

同步了emby2alist对115的处理,不用添加UA,代码里做了判断,如果是115链接,将直接拼接返回alist的链接,由客户端自己获取,就不存在UA问题了,测试结果和emby是一样的

chen3861229 commented 8 months ago

如果ios客户端强制禁止非https连接的话,那也只能给nginx配域名和证书了,conf示例里相关注释,暂时没ios测试环境

chen3861229 commented 8 months ago

好吧,我看错了😂plex限制太多,兼容起来确实比较难

dzhl commented 8 months ago

额,这个是我抽取变量过头了,这个不用设置也不应该改的,如果直链不了应该有其他原因

冒昧问一句,作者的0.0.6版程序源码能提供吗?我测试下来网页和手机端都可以用,就是apple tv有时不行。但是作者提供的执行文件不能在openwrt系统上运行,所以我想重新编译下。我的linux小鸡空间太小,容纳不了刮削的资料库,我打算在我的openwrt上去运行,空间大,或者可以docker部署也行

兄弟,我在ios plex app中遇到了和你问题2一样的错误,手动填写ip和nginx 监听port 后提示401错误,在安卓plex app设置-高级-允许非安全连接开启后可以正常访问,但ios app 高级设置中没有这一选项,我研究了一阵子没有找到解决方案,请问你后来解决 开启SSL,苹果端就能自动找到服务端了

dzhl commented 8 months ago

如果是的话你是在nginx为局域网ip添加的自签名证书吗

我是在VPS上搭建做的测试,不是局域网。我想在局域网上使用0.0.6,可惜不支持

x1ao4 commented 6 months ago

Plex 很多客户端是需要 https 的,但是现在默认的配置文件是 http,我测试用 http 域名远程可以直链,但是有些客户端连不上,需要配置 https,由于默认的配置文件没有开 https,我是小白也不懂,自己尝试启用 https,然后就无法获取直链了,希望作者把默认的配置文件改成同时支持 http 和 https 的,要不然不好搞。

chen3861229 commented 6 months ago

dev分支已做https测试和文档说明,只测了安卓客户端

dzhl commented 6 months ago

dev分支已做https测试和文档说明,只测了安卓客户端

只看到main分支,dev分支在哪里看呢?

chen3861229 commented 6 months ago

https://github.com/chen3861229/embyExternalUrl/tree/dev

x1ao4 commented 6 months ago

受限于plex没有官方的API文档

第三方 Python PlexAPI 库说明书 https://python-plexapi.readthedocs.io/en/latest/introduction.html

HTTP requests API 说明书 https://www.plexopedia.com/plex-media-server/api/

chen3861229 commented 6 months ago

多谢提供文档链接,这边通过nginx缓存partId暂时解决了,如果在文档中找到新的解决方案我再试试

dzhl commented 6 months ago

https://github.com/chen3861229/embyExternalUrl/tree/dev 测试过了,在web端,确实可以走直链,但是在手机端和TV端,没有成功。

chen3861229 commented 6 months ago

官方客户端如果默认设置的话需要套证书才行

https://github.com/chen3861229/embyExternalUrl/blob/dev/plex2Alist%2FREADME.md

x1ao4 commented 6 months ago

官方客户端如果默认设置的话需要套证书才行

https://github.com/chen3861229/embyExternalUrl/blob/dev/plex2Alist%2FREADME.md

但是提供的模版还是 http 的,虽然里面有以注释形式出现的 https 相关设置,看到你提供的 https 示例了,但是还是看不懂,尝试自己添加证书,证书是添加成功了,直链也可以获取,但是全都无法播放(客户端)。

chen3861229 commented 6 months ago

请问是115网盘吗?之前的获取方式有问题,dev已经做了更改。如果不是的话提供下打码的日志方便排查点儿,或者有关键词吗?类似与客户端提示"服务器不足以转码"之类的

xiaomengzaici commented 6 months ago

我有emby版本,但是也是无法播放,我可以提供

chen3861229 commented 6 months ago

我有emby版本,但是也是无法播放,我可以提供

emby的直链播放应该是比较完善了,我这边日常就在用,建议排查下配置原因

xiaomengzaici commented 6 months ago

我有emby版本,但是也是无法播放,我可以提供

emby的直链播放应该是比较完善了,我这边日常就在用,建议排查下配置原因

已经解决,直链没问题,就是115需要透传ua,然后你告诉了我答案,我已经解决完毕

dzhl commented 6 months ago

官方客户端如果默认设置的话需要套证书才行

https://github.com/chen3861229/embyExternalUrl/blob/dev/plex2Alist%2FREADME.md

大佬,你好,我测试了3.31号最新版,使用的是plex服务,采用了strm文件,不论室strm文件里是alist的完整路径,还是/开头的相对路径,nignx日志里都能正确看到返回直链地址,并且chrom浏览器也能正常播放,很赞!然而我在使用iphone里的plex官方客户端播放是,都立刻提示“无法创建会话”,nginx日志无反应。更奇怪的是,我是把alist、docker版的plex和nginx都部署在路由器上的,当手机连接家里wifi的情况时,vidhub(plex第三方客户端)会直接提示“不支持的文件或损坏”(nignx日志也是正确返回直链地址),但是当手机断开wifi时,就可以正常播放文件,不论strm中式完整的路径还是/相对路径。不知andorid端的plex客户端有没这样的问题呢?

x1ao4 commented 6 months ago

使用的是plex服务,采用了strm文件,不论室strm文件里是alist的完整路径,还是/开头的相对路径,nignx日志里都能正确看到返回直链地址,并且chrom浏览器也能正常播放

你现在用 strm 入库 plex,网页版可以直链播放?客户端无法播放是吗。客户端无法播放有一个可能是 Plex 自身就不支持 strm,Plex 早期有一段时间是支持 strm 的,后来不支持了,现在虽然 strm 可以入库,但是 Plex 并不支持播放 strm 文件。不知道是否和这个有关。

chen3861229 commented 6 months ago

都立刻提示“无法创建会话”,nginx日志无反应

1.这个感觉是plex擅自连接了它自己的中转服务器,["https://192-168-31-200.{uuid}.plex.direct:32400/library/metadata/180"]这样的链接导致绕过了nginx的处理,确认plex服务端有【设置-网络-自定义服务器访问 URL】,为nginx的监听端口吗?这样大部分情况会强制使用此地址。

2.这个情况感觉还是plex局域网发现导致默认连上了32400端口,绕开了nginx,暂时不太清楚如何解决,有时间我用vpn连接局域网测试一下 image

dzhl commented 6 months ago

strm 入库 plex,网页版可以直链播放

是的,strm 入库 plex,网页版可以直链播放,官方ISO客户端不可以,第三方客户端可以(我iso连接wifi 时不行)

dzhl commented 6 months ago

都立刻提示“无法创建会话”,nginx日志无反应

1.这个感觉是plex擅自连接了它自己的中转服务器,["https://192-168-31-200.{uuid}.plex.direct:32400/library/metadata/180"]这样的链接导致绕过了nginx的处理,确认plex服务端有【设置-网络-自定义服务器访问 URL】,为nginx的监听端口吗?这样大部分情况会强制使用此地址。

2.这个情况感觉还是plex局域网发现导致默认连上了32400端口,绕开了nginx,暂时不太清楚如何解决,有时间我用vpn连接局域网测试一下 image 我是按照这些设置的,但有时确实发现自定义服务访问URL被自动改成192开头的IP

chen3861229 commented 6 months ago

我这边测试有时候也是plex擅自中转了(路由器已经禁用了32400端口映射),得研究下怎么解决这种,不过估计会比较难。。

dzhl commented 6 months ago

我这边测试有时候也是plex擅自中转了(路由器已经禁用了32400端口映射),得研究下怎么解决这种,不过估计会比较难。。

我感觉当客户端跟plex server在同一个网络内,就不是走域名和指定端口了,而是直接通过ip和32400找到server端的,看下图中首选网络接口,我的docker版plex服务器里只有“任何”和一个内网接口,也就是只能走内网接口。下图中还有个局域网网络,看解释,我理解是只有这个位置输入了iP,其他ip就会被视为外部IP,但实际测试下来,这里输入的ip端似乎无效。 image

chen3861229 commented 6 months ago

vpn局域网模拟测试了下,无解,plex这点强制性太高,在服务启动时候时候就会把局域网和公网ip还有自定义服务器访问 URL上传到plex.tv,同时也上传了geoip服务器的地理位置信息。。。 全局刷新页面可以看到 https://clients.plex.tv/api/v2/resources 这个接口调用,局域网的优先级是最高的,只要联通,详情页就不会请求当前访问的域名或ip了,本来我的环境是docker plex host网络,宿主机局域网段是192.168.xxx, 改为了bridge网络,甚至映射了32400到22400, 结果还是发现plex自己请求172.xxx的docker桥接网段且用了22400,因为群晖的docker有些残废,无法测试container网络模式。 解决方案 1.想办法将plex服务和其他局域网设备严格网络隔离,局域网找不到就会走自定义url了,隔离方式可以试试docker的container指定nginx的容器名称,或者添加防火墙规则,限制只有nginx可以访问plex。 2.最简单的还是建议非局域网使用吧。

dzhl1201 commented 5 months ago

vpn局域网模拟测试了下,无解,plex这点强制性太高,在服务启动时候时候就会把局域网和公网ip还有自定义服务器访问 URL上传到plex.tv,同时也上传了geoip服务器的地理位置信息。。。 全局刷新页面可以看到 https://clients.plex.tv/api/v2/resources 这个接口调用,局域网的优先级是最高的,只要联通,详情页就不会请求当前访问的域名或ip了,本来我的环境是docker plex host网络,宿主机局域网段是192.168.xxx, 改为了bridge网络,甚至映射了32400到22400, 结果还是发现plex自己请求172.xxx的docker桥接网段且用了22400,因为群晖的docker有些残废,无法测试container网络模式。 解决方案 1.想办法将plex服务和其他局域网设备严格网络隔离,局域网找不到就会走自定义url了,隔离方式可以试试docker的container指定nginx的容器名称,或者添加防火墙规则,限制只有nginx可以访问plex。 2.最简单的还是建议非局域网使用吧。

我在开启open clash的fake ip模式后,web端就无法播放,开发工具里显示访问172.xxx失败,就是获取strm里的内容出错,如果换成其他代理工具或者使用openclash的redir ip模式,web端可以正常访问。不知道这个情况对解决局域网访问是否有帮助。