IPTV融合进普通网络

Openwrt 星雨 3939℃ 0评论

IPTV融合进普通网络一般步骤

本文为这段时间我在论坛上的一些讨论的总结,不一定对,但大概流程是清楚了,看完后希望对你有帮助。文中所用到的软件有:
Wireshark2.4),winscpputtypotplayermxplayer(android)Notepad++
路由器(lede)所需的软件有:
  1. opkg update
    opkg install kmod-macvlan kmod-8021q kmod-bridge igmpproxy udpxy tcpdump luci-app-udpxy
本文大体分两部分
一.直播地址获取
二.直播环境搭建
下面开始第一部分,直播源地址的获取。一般我们是通过抓包,不过抓包之前建议先搜索一下,或许有先行的前辈帮你抓好了,有现成的可以直接看第二部站。如果没有,我们就得自己抓包了。只要有lede路由器就可以抓包,在路由器上安装tcpdump可以让路由器成为一个抓包神器。想抓到IPTV的包,需要让IPTV的包能通过路由器。最简单的方法就是让路由的WAN口和接IPTVlan口桥接,具体的做法为接接IPTVlan口设为不关联,不关联就是桥接,如图:
这时开启你的机顶盒,应该可以正常的直播点播。好,先关掉机顶盒,然后用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教我入门的,谢谢了。
如果你的频道列表是和这个一样的,可以试试这个表达式:
查找内容那里为:
<script>.+?ChannelName=\”(.+?)\” ,ChannelURL=\”.+?://(.+?)\”.+?</script>
替换为:
#EXTINF:-1, \1\n rtp://\2\n
勾选匹配新行,全部替换吧。
好了,到此抓直播地址部分就结束了。如果你土豪或者路由器里支持端口镜像,抓包可以更容易些,可以不用tcpdump,可以直接用wireshark抓包。拓朴如下:

 

 

第二部分,直播环境搭建。
其实一开始已将直播所需要的软件装好了,现在只要配置好它就行了。这时我们需要将一开始的vlan设置还原回原来的,不要将IPTVWAN桥接在一起了。这时需要创建一个虚拟WAN口用来IPTV网络的拔号,然后通过MWAN指定IPTV走这个端口出去。创建虚拟接口最好用syncdial,自动创建,如果通过手动创建的话,需要注意在etc/config/network里加上
  1. config device 'macvlandev_macvlan1'
             optionname 'macvlan1'
             optionifname 'eth0.2'  \调整成自己的wan口
             optiontype 'macvlan'
    config interface 'vwan1'
             optionproto 'pppoe'
             optionmetric '41'
             optionipv6 'auto'
             optionifname 'macvlan1'
             optionbridge 'false'
             optionusername **********999@itv'
             optionpassword '******'

     

这时建好的虚拟wan口应该拔通取得IP了,下面我们要配置好igmpproxy,让连接在路由器后面的机顶盒能够直播和点播,打开/etc/config/igmpproxy。里面的配置示例:
  1. config igmpproxy
           option quickleave 1
    config phyint
           option network vwan1   \这个为虚拟wan口,取得IPTV网络地址的接口,在这里指定组播从这个接口出去
           option direction upstream
           list altnet 115.153.239.0/24  \这个为组播服务器地址,不是组播地址,用0.0.0.0/0也行
    config phyint
           option network lan
           option direction downstream
然后在/etc/config/network的lan下面增加
  1. option igmp_snooping ‘1’
接下来配置防火墙/etc/config/firewall
在后面添加

 

  1. config rule
            option src      wan
            option proto    igmp
            option target   ACCEPT
    config rule
            option src      wan
            option proto    udp
            option dest     lan
            option dest_ip  224.0.0.0/4
            option target   ACCEPT
    config rule
            option src      wan
            option proto    udp
            option dest_ip  224.0.0.0/4
            option target   ACCEPT

     

 

保存好后重启igmpproxy,这时用有线连接路由器。用potplayer打开组播地址应该能正常收看电视了,机顶盒应该也能正常收看了。
好了,下面配置udpxywifi收看电视节目作准备,基实udpxy没啥好设置的,最多指定一个端口,其它不填也能看。
启动udpxy后要将地址转换一下,比如原来的组播地址为:rtp://239.252.219.46:5140
现在变成了http://192.168.1.1:8888/rtp/239.252.219.46:5140
只是我自己的在电脑上用potplayerHD节目会卡顿,在手机上用mxplayer播放HD节目则非常流畅

转载请注明:星雨小站 » IPTV融合进普通网络

如果你觉得这篇文章对你有帮助,请支持我继续更新网站!捐赠本站
喜欢 (1)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址