问题描述
近期飞牛影视上线了电视直播功能,我在考虑飞牛的 rtp2httpd 适配飞牛影视的问题。
实际上是使用了rtp2httpd 中 RTP 转 HTTP 的功能,然后在飞牛配置直播源链接为:
#EXTM3U x-tvg-url="https://tv.mxdyeah.top/epgphp/t.xml.gz"
#EXTINF:-1 tvg-id="CCTV1" tvg-name="CCTV1" tvg-logo="https://upload.112114.xyz/logo/CCTV1.png" group-title="央视",CCTV-1
http://10.0.0.253:5140/rtp/239.253.64.120:5140?fcc=10.255.75.73:15970
#EXTINF:-1 tvg-id="CCTV2" tvg-name="CCTV2" tvg-logo="https://upload.112114.xyz/logo/CCTV2.png" group-title="央视",CCTV-2
http://10.0.0.253:5140/rtp/239.253.64.195:5140?fcc=10.255.75.73:15970
这样配置后,在局域网内确实可以在飞牛影视中看转换后的视频流了,如图:
但是这也仅限于局域网内,当使用飞牛 fnconect 访问飞牛影视时,他请求的视频流地址还是:http://10.0.0.253:5140,这就不对了
于是我换了个思路,从 fnconect 中抓取 rtp2httpd 的应用地址,我配置上去后,发现因为 rtp2httpd 的域名为:https://rtp2httpd-player.xxx.5ddd.com,而飞牛影视的域名为:https://xxx.5ddd.com/v,因为 cookie 作用域的问题,无法带到 https://rtp2httpd-player.xxx.5ddd.com 中,导致请求为未认证请求,无法请求成功。
解决方案
我从飞牛应用的开发者文档,获取到思路,就是把 rtp2httpd 应用的地址也变为: https://xxx.5ddd.com 同样的 fnconect 域名
有三种方式:
-
rtp2httpd 增加支持监听 sock,这样既监听 5140 端口,也支持 sock 文件监听,飞牛就可以通过 sock 文件的模式将应用暴露在飞牛 fnconect 的主域名,在飞牛开发文档里这个名词叫做【统一网关注册】,也就是可以通过这样访问应用: https://xxx.5ddd.com/app/{appname},飞牛影视认证的 cookie 就会带上,就不会造成鉴权问题。
-
我在飞牛应用中,编写一个前置的 go 程序,代理 rtp2httpd 程序的请求,而该 go 程序使用多监听模式,并将其请求的结果都转发到 rtp2httpd 中,但是这样就形成了一个多层代理,go 应用代理 -> rtp2httpd 程序 -> 代理 IPTV 组播流,中间又有可能出现一些兼容性问题。
-
联系飞牛官方,让其支持开放 nginx 反向代理功能,这样通过 nginx 来反向代理,就没有问题了,但是我感觉飞牛官方不会开放这个权限,因为之前 nginx 权限就是因为滥用而封起来的😂
这里是与各位讨论方案,如若 @stackia 支持我在 rtp2httpd 增加监听 sock 的支持,那我这几天可以写一下,然后提 PR,否则就只能考虑另外两种方案。如果是应用内再做一层 go 程序代理,那么这个代理应该仅限于使用在飞牛影视,其他正常行为推荐还是走端口模式,端口模式还是会保留
问题描述
近期飞牛影视上线了电视直播功能,我在考虑飞牛的
rtp2httpd适配飞牛影视的问题。实际上是使用了
rtp2httpd中RTP转HTTP的功能,然后在飞牛配置直播源链接为:这样配置后,在局域网内确实可以在飞牛影视中看转换后的视频流了,如图:
但是这也仅限于局域网内,当使用飞牛
fnconect访问飞牛影视时,他请求的视频流地址还是:http://10.0.0.253:5140,这就不对了于是我换了个思路,从
fnconect中抓取rtp2httpd的应用地址,我配置上去后,发现因为rtp2httpd的域名为:https://rtp2httpd-player.xxx.5ddd.com,而飞牛影视的域名为:https://xxx.5ddd.com/v,因为cookie作用域的问题,无法带到 https://rtp2httpd-player.xxx.5ddd.com 中,导致请求为未认证请求,无法请求成功。解决方案
我从飞牛应用的开发者文档,获取到思路,就是把
rtp2httpd应用的地址也变为: https://xxx.5ddd.com 同样的fnconect域名有三种方式:
rtp2httpd增加支持监听sock,这样既监听 5140 端口,也支持sock文件监听,飞牛就可以通过sock文件的模式将应用暴露在飞牛fnconect的主域名,在飞牛开发文档里这个名词叫做【统一网关注册】,也就是可以通过这样访问应用: https://xxx.5ddd.com/app/{appname},飞牛影视认证的cookie就会带上,就不会造成鉴权问题。我在飞牛应用中,编写一个前置的
go程序,代理rtp2httpd程序的请求,而该go程序使用多监听模式,并将其请求的结果都转发到rtp2httpd中,但是这样就形成了一个多层代理,go应用代理 ->rtp2httpd程序 -> 代理IPTV组播流,中间又有可能出现一些兼容性问题。联系飞牛官方,让其支持开放
nginx反向代理功能,这样通过nginx来反向代理,就没有问题了,但是我感觉飞牛官方不会开放这个权限,因为之前nginx权限就是因为滥用而封起来的😂这里是与各位讨论方案,如若 @stackia 支持我在
rtp2httpd增加监听sock的支持,那我这几天可以写一下,然后提PR,否则就只能考虑另外两种方案。如果是应用内再做一层go程序代理,那么这个代理应该仅限于使用在飞牛影视,其他正常行为推荐还是走端口模式,端口模式还是会保留