chen3861229 / embyExternalUrl

some emby/jellyfin scripts
MIT License
80 stars 12 forks source link

能获取到IPTV地址但是无法播放 #17

Open xiaomengzaici opened 3 months ago

xiaomengzaici commented 3 months ago

我这次全面更换成了大佬的代码,我发现无法使用iptv了 QQ截图20240401220339

chen3861229 commented 3 months ago

请问这个地址是局域网资源吗? 【http://[xxx]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/32/21226231/1.m3u8

xiaomengzaici commented 3 months ago

不是,这是iptv的地址,正常来说直接播报这个地址给客户端就能播放了,但是用了您的反代后不知道为什么无法播放

chen3861229 commented 3 months ago

我这边用手机网络(都支持ipv6)测试了下,此链接无法访问,没用反代的原始emby可以播放此直播吗? http://[2409:8087:7000:20::4]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226231/1.m3u8

xiaomengzaici commented 3 months ago

这是iptv不是网址,这个是个推流的地址,m3u8的需要视频软件播放,我实测下来即使不开反代,原始emby也能直接使用,而且不消耗vps流量

chen3861229 commented 3 months ago

我这边找了个直播源测试,已经修复好了,是前几天代码打日志报错了,更新下最新代码就可以了

xiaomengzaici commented 3 months ago

更新完后,所有反代失效

我的问题,整体替换就好了,刚才我局部替换的

chen3861229 commented 3 months ago

啊,不至于吧,是直播失败还是云盘的挂载内容播放失败?我这边测试没啥问题,方便提供下日志吗

xiaomengzaici commented 3 months ago

2024/04/02 15:55:33 [error] 595#595: 66 js exception: Error: unhandled promise rejection: TypeError: (intermediate value)["proxyUri"] is not a function, client: 我的ip, server: default, request: "GET /emby/Users/3b9d2c6249ab47a598064c12131e5241/Items?SortBy=Random&Limit=20&Recursive=true&IncludeItemTypes=Movie%2CSeries%2CMusicVideo%2CVideo&ImageTypes=Backdrop&ParentId=54772&EnableTotalRecordCount=false&ImageTypeLimit=1&EnableImageTypes=Backdrop&X-Emby-Client=Emby%20Theater&X-Emby-Device-Name=Tsukimu&X-Emby-Device-Id=Tsukimu&X-Emby-Client-Version=3.0.19-2.1&X-Emby-Token=71a791f370b642799d9cfeaf8917b713 HTTP/1.1", host: "我的域名" 2024/04/02 15:55:34 [notice] 595#595: 63 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000004, client: 我的ip, server: default, request: "POST /emby/Items/81718/PlaybackInfo?UserId=3b9d2c6249ab47a598064c12131e5241&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&MaxStreamingBitrate=120000000&DirectPlayProtocols=File%2CHttp%2CRtp%2CRtmp%2CRtsp%2CFtp&X-Emby-Client=Emby%20Theater&X-Emby-Device-Name=&X-Emby-Device-Id=Tsukimu&X-Emby-Client-Version=3.0.19-2.1&X-Emby-Token=71a791f370b642799d9cfeaf8917b713&reqformat=json HTTP/1.1", host: "我的域名" 2024/04/02 15:55:34 [error] 595#595: *63 js exception: Error: unhandled promise rejection: TypeError: (intermediate value)["proxyUri"] is not a function, client: 我的ip, server: default, request: "POST /emby/Items/81718/PlaybackInfo?UserId=3b9d2c6249ab47a598064c12131e5241&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&MaxStreamingBitrate=120000000&DirectPlayProtocols=File%2CHttp%2CRtp%2CRtmp%2CRtsp%2CFtp&X-Emby-Client=Emby%20Theater&X-Emby-Device-Name=Tsukimu&X-Emby-Device-Id=Tsukimu&X-Emby-Client-Version=3.0.19-2.1&X-Emby-Token=71a791f370b642799d9cfeaf8917b713&reqformat=json HTTP/1.1", host: "我的域名" 153.99.231.177 - - [02/Apr/2024:15:55:34 +0000] "POST /emby/Items/81718/PlaybackInfo?UserId=3b9d2c6249ab47a598064c12131e5241&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&MaxStreamingBitrate=120000000&DirectPlayProtocols=File%2CHttp%2CRtp%2CRtmp%2CRtsp%2CFtp&X-Emby-Client=Emby%20Theater&X-Emby-Device-Name=Tsukimu&X-Emby-Device-Id=Tsukimu&X-Emby-Client-Version=3.0.19-2.1&X-Emby-Token=71a791f370b642799d9cfeaf8917b713&reqformat=json HTTP/1.1" 500 572 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) EmbyTheater/3.0.19-2.1 Chrome/100.0.4896.160 Electron/18.3.15 Safari/537.36" "-"

xiaomengzaici commented 3 months ago

啊,不至于吧,是直播失败还是云盘的挂载内容播放失败?我这边测试没啥问题,方便提供下日志吗

解决了,整体替换了就行了,局部替换有点小bug,但是iptv好像还是没法播放 image

chen3861229 commented 3 months ago

当前nginx有配https证书吗?

xiaomengzaici commented 3 months ago

当前nginx有配https证书吗?

没有配呢,目前整个网站是http访问的

chen3861229 commented 3 months ago

好吧,那不是https的问题,还有种可能是url编码的问题,把mount emby那里的链接和下边编码后的链接单独用支持直播的软件测试下

xiaomengzaici commented 3 months ago

好吧,那不是https的问题,还有种可能是url编码的问题,把mount emby那里的链接和下边编码后的链接单独用支持直播的软件测试下

好的,我来试试

chen3861229 commented 3 months ago

感觉不是很对劲啊,日志,目前新代码没对转发后的url编码这么彻底,我这边测试直播日志是这样的

2024/04/02 22:58:58 [warn] 115#115: 36221 js: cached PlaybackInfo path, will skip excess fetchEmbyFilePath 2024/04/02 22:58:58 [warn] 115#115: 36221 js: 0ms, mount emby file path: https://xxx.com:5278/zhongwenzimu/5PzEAi0h/index.m3u8 2024/04/02 22:58:58 [warn] 115#115: 36221 js: embyPathMapping: [[0,0,"/AList",""]] 2024/04/02 22:58:58 [warn] 115#115: 36221 js: mapped emby file path: https://xxx.com:5278/zhongwenzimu/5PzEAi0h/index.m3u8 2024/04/02 22:58:58 [warn] 115#115: *36221 js: redirect to: https://xxx.com:5278/zhongwenzimu/5PzEAi0h/index.m3u8

chen3861229 commented 3 months ago

怀疑和ipv6地址上的那这个中括号被编码转义了有关,[]

xiaomengzaici commented 3 months ago

怀疑和ipv6地址上的那这个中括号被编码转义了有关,[]

这个iptv我用的就是纯ip版本,没有域名。会不会是我的机子不支持ipv6的原因,我没给机子打开ipv6访问,只开了ipv4访问,但是传递过来的是地址,应该也能正常播放啊,我测试是走8096端口能直接播放而且不会走vps的流量,偏偏反代端口就无法播放,我之前用的代码倒是可以正常播放,但是没你的这么全面

chen3861229 commented 3 months ago

emby和nginx没开v6没关系, emby同时需要支持ipv6,播放时playbackinfo就会内部访问一次直播接口 这个v6地址是转发给客户端请求的,客户端同时需要支持ipv6。

是的,原始emby能正常的话地址应该没啥问题,我找的直播源ipv6是失效的,所以没充分测试。。。只能等明天我找个ipv6直播地址排查一下了,因为最近改的东西比较多,大概是缓存的那个路径编码影响到了

chen3861229 commented 3 months ago

已经修复,是前几天提交的多余编码方式导致 e1f462bc9411b3ad2e027d17c195c6d899d6c695

xiaomengzaici commented 3 months ago

~emby和nginx没开v6没关系,~ emby同时需要支持ipv6,播放时playbackinfo就会内部访问一次直播接口 这个v6地址是转发给客户端请求的,客户端同时需要支持ipv6。

是的,原始emby能正常的话地址应该没啥问题,我找的直播源ipv6是失效的,所以没充分测试。。。只能等明天我找个ipv6直播地址排查一下了,因为最近改的东西比较多,大概是缓存的那个路径编码影响到了

您的意思是服务端也需要支持ipv6吗?可是服务端的ipv6地址是我自己输入进去的,点击播放的时候正常是服务端推送直播地址给客户端,客户端得知后就可以开始播放,大佬我给你提供一个ipv6地址吧CCTV-1的:http://[2409:8087:7000:20::4]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226231/1.m3u8

xiaomengzaici commented 3 months ago

已经修复,是前几天提交的多余编码方式导致 e1f462b

改动有点大,我明天试一下看看有没有问题

xiaomengzaici commented 1 month ago

现在有个bug外挂字幕没有

chen3861229 commented 1 month ago

调用第三方播放器外挂字幕没法在 302 的 URL 上传递,播放器的入参支持情况也不统一,只能用官方形式的客户端了,可以加载外挂字幕,文档里有少量相关的描述,或者使用另外那两个添加外部播放器按钮的脚本,不过前提也是对应的播放器支持传递 http 形式的字幕链接

xiaomengzaici commented 1 month ago

外挂字幕是我这边的问题,我发现问题已经修复好了。还是之前的iptv问题,我替换了代码,发现还是无法正常播放iptv,虽然获取了原始链接,您可以在插件库下载一下iptv这个插件调试,也有可能是我这边的问题 2024/05/11 18:47:10 [warn] 21965#21965: 2425 js: 18ms, fetchEmbyFilePath async function cost 2024/05/11 18:47:10 [warn] 21965#21965: 2425 js: notLocal: false 2024/05/11 18:47:10 [warn] 21965#21965: 2425 js: mount emby file path: http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8 2024/05/11 18:47:10 [warn] 21965#21965: 2425 js: hit proxy, not mountPath first: ["/home"] 2024/05/11 18:47:10 [warn] 21965#21965: *2425 js: use original link

xiaomengzaici commented 1 month ago

我还发现一个问题就是百度网盘直链无法读取外挂字幕,阿里云什么都可以,用的emby官方客户端

chen3861229 commented 1 month ago

1.多谢提供日志很清晰,是我判断的问题,已经修复了 c5354c68476698a3bc481909f9f2cadf4c0de335

2.外挂字幕文件没走直链的,还是原始 emby 自己读取本地目录获取的,尝试看下直接到挂载后的路径上手动读取文件呢?或者直接 emby 详情页下边外挂字幕上右键,看下 emby 自己能不能读取到

xiaomengzaici commented 3 weeks ago

2024/06/05 20:14:01 [warn] 7746#7746: 657 js: === redirect2Pan: /emby/videos/255081/stream.undefined, the NJS VM is destroyed === 153.99.231.177 - - [05/Jun/2024:20:14:01 +0000] "GET /emby/videos/255081/stream.undefined?UserId=3b9d2c6249ab47a598064c12131e5241&IsPlayback=true&AutoOpenLiveStream=true&MaxStreamingBitrate=120000000&DirectPlayProtocols=File,Http,Rtp,Rtmp,Rtsp,Ftp&X-Emby-Client=Emby%20Theater&X-Emby-Device-Name=Tsukimu&X-Emby-Device-Id=Tsukimu&X-Emby-Client-Version=3.0.20-3.0&X-Emby-Token=71a791f370b642799d9cfeaf8917b713&reqformat=json&MediaSourceId=5454df166ee34a6688ef9a9826921c44&PlaySessionId=c15d23fad3aa47dab89e60845b994c77&Static=true HTTP/1.1" 302 138 "-" "libmpv" "-" 2024/06/05 20:14:01 [warn] 7746#7746: 658 js: redirect2Pan, UA: libmpv 2024/06/05 20:14:01 [warn] 7746#7746: 658 js: hit cache routeL1Dict: http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8 2024/06/05 20:14:01 [warn] 7746#7746: 658 js: redirect to: http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8 2024/06/05 20:14:01 [warn] 7746#7746: *658 js: === redirect2Pan: /emby/videos/255081/stream.undefined, the NJS VM is destroyed === 更新代码后,直链播放成功,感谢。 新问题:ios端fileball无法通过反代端口访问资源

chen3861229 commented 3 weeks ago

新问题:ios端fileball无法通过反代端口访问资源

所有都不行吗?还是只有 IPv6 的直播不行? fileball 前段时间朋友协助简单测试过了,普通的媒体资源貌似是可以正常直链的