分享

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

 混鱼摸水 2017-09-23


本文为这段时间我在论坛上的一些讨论的总结,不一定对,但大概流程是清楚了,看完后希望对你有帮助。文中所用到的软件有:
Wireshark2.4),winscpputtypotplayermxplayer(android)Notepad++
路由器(lede)所需的软件有:
  1. opkg update
  2. opkg install kmod-macvlan kmod-8021q kmod-bridge igmpproxy udpxy tcpdump luci-app-udpxy

本文大体分两部分
一.直播地址获取
二.直播环境搭建
下面开始第一部分,直播源地址的获取。一般我们是通过抓包,不过抓包之前建议先搜索一下,或许有先行的前辈帮你抓好了,有现成的可以直接看第二部站。如果没有,我们就得自己抓包了。只要有lede路由器就可以抓包,在路由器上安装tcpdump可以让路由器成为一个抓包神器。想抓到IPTV的包,需要让IPTV的包能通过路由器。最简单的方法就是让路由的WAN口和接IPTVlan口桥接,具体的做法为接接IPTVlan口设为不关联,不关联就是桥接,如图:
sshot-4.png
绘图2.png
这时开启你的机顶盒,应该可以正常的直播点播。好,先关掉机顶盒,然后用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的应答就是了。
sshot-1.png
这时在应答这一条的line-based text data里点右键,选择显洁净分组字节。显示为那里选utf8
sshot-2.png
这是一个样本。
取得频道列表后就要整理了,这时要请出牛B工具notepad++了,它支持正规则表达式。正规则表达式是wolong_gl教我入门的,谢谢了。
如果你的频道列表是和这个一样的,可以试试这个表达式:
sshot-5.png
查找内容那里为:
替换为:
#EXTINF:-1, \1\n rtp://\2\n
勾选匹配新行,全部替换吧。
好了,到此抓直播地址部分就结束了。如果你土豪或者路由器里支持端口镜像,抓包可以更容易些,可以不用tcpdump,可以直接用wireshark抓包。拓朴如下:


绘图1.png

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

  5. config interface 'vwan1'
  6.          optionproto 'pppoe'
  7.          optionmetric '41'
  8.          optionipv6 'auto'
  9.          optionifname 'macvlan1'
  10.          optionbridge 'false'
  11.          optionusername **********999@itv'
  12.          optionpassword '******'

这时建好的虚拟wan口应该拔通取得IP了,下面我们要配置好igmpproxy,让连接在路由器后面的机顶盒能够直播和点播,打开/etc/config/igmpproxy。里面的配置示例:
  1. config igmpproxy
  2.        option quickleave 1

  3. config phyint
  4.        option network vwan1   \这个为虚拟wan口,取得IPTV网络地址的接口,在这里指定组播从这个接口出去
  5.        option direction upstream
  6.        list altnet 115.153.239.0/24  \这个为组播服务器地址,不是组播地址,用0.0.0.0/0也行

  7. config phyint
  8.        option network lan
  9.        option direction downstream
然后在/etc/config/network的lan下面增加

  1. option igmp_snooping ‘1’
接下来配置防火墙/etc/config/firewall

在后面添加

  1. config rule
  2.         option src      wan
  3.         option proto    igmp
  4.         option target   ACCEPT
  5. config rule
  6.         option src      wan
  7.         option proto    udp
  8.         option dest     lan
  9.         option dest_ip  224.0.0.0/4
  10.         option target   ACCEPT
  11. config rule
  12.         option src      wan
  13.         option proto    udp
  14.         option dest_ip  224.0.0.0/4
  15.         option target   ACCEPT



保存好后重启igmpproxy,这时用有线连接路由器。用potplayer打开组播地址应该能正常收看电视了,机顶盒应该也能正常收看了。
好了,下面配置udpxywifi收看电视节目作准备,基实udpxy没啥好设置的,最多指定一个端口,其它不填也能看。
sshot-6.png
启动udpxy后要将地址转换一下,比如原来的组播地址为:rtp://239.252.219.46:5140
只是我自己的在电脑上用potplayerHD节目会卡顿,在手机上用mxplayer播放HD节目则非常流畅,这个怎么指定流量从IPTV的那个虚拟接口出去没搞定,谁研究出来了麻烦回个贴告诉一下我。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多