本文为这段时间我在论坛上的一些讨论的总结,不一定对,但大概流程是清楚了,看完后希望对你有帮助。文中所用到的软件有: Wireshark(2.4),winscp,putty,potplayer,mxplayer(android),Notepad++。 路由器(lede)所需的软件有:
本文大体分两部分 一.直播地址获取 二.直播环境搭建 下面开始第一部分,直播源地址的获取。一般我们是通过抓包,不过抓包之前建议先搜索一下,或许有先行的前辈帮你抓好了,有现成的可以直接看第二部站。如果没有,我们就得自己抓包了。只要有lede路由器就可以抓包,在路由器上安装tcpdump可以让路由器成为一个抓包神器。想抓到IPTV的包,需要让IPTV的包能通过路由器。最简单的方法就是让路由的WAN口和接IPTV的lan口桥接,具体的做法为接接IPTV的lan口设为不关联,不关联就是桥接,如图: 这时开启你的机顶盒,应该可以正常的直播点播。好,先关掉机顶盒,然后用putty连上路由器,输入以下命令: tcpdump -i any -w /tmp/xxx.cap 这条命令的意思是说,抓所有的包并存到/tmp文件夹下,以XXX(替换成你喜欢的)命名。好了,机顶盒开机,等出现选择频道界面时在putty下按Ctrl+C。用winscp登陆到路由器,在/tmp文件夹下找到刚才的抓包文件。这时要请出另一个软件wireshark来了,用wireshark打开抓包文件,按Ctrl+F,选择字串符,分组字节流。输入get channellist回车。协议那里选http过滤一下,一般第一个post get channellist的应答就是了。 这时在应答这一条的line-based text data里点右键,选择显洁净分组字节。显示为那里选utf8 这是一个样本。 取得频道列表后就要整理了,这时要请出牛B工具notepad++了,它支持正规则表达式。正规则表达式是wolong_gl教我入门的,谢谢了。 如果你的频道列表是和这个一样的,可以试试这个表达式: 查找内容那里为: 替换为: #EXTINF:-1, \1\n rtp://\2\n 勾选匹配新行,全部替换吧。 好了,到此抓直播地址部分就结束了。如果你土豪或者路由器里支持端口镜像,抓包可以更容易些,可以不用tcpdump,可以直接用wireshark抓包。拓朴如下: 第二部分,直播环境搭建。 其实一开始已将直播所需要的软件装好了,现在只要配置好它就行了。这时我们需要将一开始的vlan设置还原回原来的,不要将IPTV和WAN桥接在一起了。这时需要创建一个虚拟WAN口用来IPTV网络的拔号,然后通过MWAN指定IPTV走这个端口出去。创建虚拟接口最好用syncdial,自动创建,如果通过手动创建的话,需要注意在etc/config/network里加上
这时建好的虚拟wan口应该拔通取得IP了,下面我们要配置好igmpproxy,让连接在路由器后面的机顶盒能够直播和点播,打开/etc/config/igmpproxy。里面的配置示例:
然后在/etc/config/network的lan下面增加
接下来配置防火墙/etc/config/firewall 在后面添加
保存好后重启igmpproxy,这时用有线连接路由器。用potplayer打开组播地址应该能正常收看电视了,机顶盒应该也能正常收看了。 好了,下面配置udpxy为wifi收看电视节目作准备,基实udpxy没啥好设置的,最多指定一个端口,其它不填也能看。 启动udpxy后要将地址转换一下,比如原来的组播地址为:rtp://239.252.219.46:5140 只是我自己的在电脑上用potplayer放HD节目会卡顿,在手机上用mxplayer播放HD节目则非常流畅,这个怎么指定流量从IPTV的那个虚拟接口出去没搞定,谁研究出来了麻烦回个贴告诉一下我。 |
|