一、我的需求
坐标江苏小城,原来手机用的99的套餐,可以免费带一个副卡,现在升级了电信129的5G融合套餐,送了一个iTV(一个月10元),但是副卡收费10元,哎,算来算去都没有运营商精明啊。
家里很少看电视,基本上就是看看春晚,然后平时老人在家没事看看,所以就把广电的机顶盒停掉了,换了一个N1的盒子刷了CoreELEC系统,既可以通过m3u8文件看网络电视,也可以看本地的多媒体,很方便,完全满足了自己的需求。并且我通过折腾把N1盒子和电视(海信55寸)设置成用一个遥控器,一起开关机,比广电或者电信的盒子方便多了。大家可以看我这篇文章N1盒子使用T1遥控和电视一起开关机以及按键设置。后来我升级了,把T1的遥控扔了,换成了一个2.4G+红外的一体遥控器,比T1的遥控更方便了。
原来我看电视用的网络的直播源,清晰度也可以,稳定性也还好,但是想想总归没有电信自己服务器来的 稳定清晰,所以趁着送的iTV的机会,我就把电信的直播源全部抓取下来了。抓取技术,我这里就不说了,网上教程很多。我用的是买了一个镜像交换机,大概四五十块,最终抓取了直播的地址。抓取到的地址是“igmp://239.XXX.XXX.XXX:XXXX”这种格式的。
在我的网络环境下,有了地址之后,在VLC和Potplayer里面,要把“igmp”换成“rtp”才能播放。即“rtp://239.XXX.XXX.XXX:XXXX”。
为了更好地让大家理解我的需求,放一个我的网络拓扑图。
二、我的设备
- 光猫。我的光猫是中兴的,问安装师父要了超级管理员的账号和密码,登进去查看了一下,网络和IPTV都是桥接方式,即在路由器上要输入账号和密码。其实这里IPTV是桥接还是路由模式区别不大,你抓取到的直播源地址,是公共的组播地址。所以,如果你抓取到了地址,把光猫的IPTV端口直连到路由器或者笔记本电脑上,在VLC里面是可以直接播放“rtp://239.XXX.XXX.XXX:XXXX”的。举例说下,假如你的IPTV是拨号的,IPTV端口直接连到笔记本电脑的网口,IP是自动分配的情况下,在VLC里面是可以直接播放“rtp://239.XXX.XXX.XXX:XXXX”的,即使IPTV是DHCP模式,按道理也是可以播放的。因为直播源地址是公共的,只要你能通过IPTV这个通道,按道理就是可以能播放的。当然我这里仅限江苏某城,每个地方情况不太一样。所以一般情况下,进行宽带和IPTV融合,是不需要设置光猫的。
- K2p路由器。刷的是老毛子Padavan,固件版本3.4.3.9-099_8-12-1。
- N1盒子。刷的CoreELEC系统。
三、我的设置
1.路由器设置
第一步:在外部网络(wan)-外网设置,拉到最下面
第二步:在内部网络(Lan)-IPTV
在这里设置UDP代理和UPnP代理,UDP代理就是为了把组播的“igmp”转为自己内网的IP,比如你的组播地址是“rtp://239.18.1.8:8000”,通过UDP代理,就可以把地址变为http://192.168.7.1:7000/udp/239.18.1.8:8000,这个地址添加到VLC就可以播放。UPnP代理主要是提供dlna服务,局域网中的设备可以很方便的找到他,所以可以把你的播放列表放在xupnpd中,局域网中的设备就可以很方便的播放IPTV了。在上图的第三步中,端口设置成大于1024的端口即可。我这里设置了自己的“7000”和“7077”两个端口。
2.加入的脚本
第一步,进入到K2p的系统管理-控制台
可在上图的第3步骤中,输入“switch vlan dump”来查看一下自己的VLAN情况。
1. vid portmap eg-tag eg-con stag ivl fid
2. 1 11----1 uu----u 0 0 1 -
3. 2 ----11- ----ut- 0 0 1 -
4. 9 ---1-1- ---u-t- 0 0 1 -
第二步,分别键入两条命令:
switch vlan set7 0001010 0 0 ---u-t-
switch reg w 0x2304 0x00280003
第一条命令里的“7”就是我在路由器里设置的VID,这里根据你自己的设置情况修改即可,这里的portmap即“0001010”这串数字,从左往右分别是:LAN4、LAN3、LAN2、LAN1、WAN、CPU、未知。这条命令就是要把LAN1端口与CPU关联起来,与其他端口解除关联。
第二条命令里的“0x2304”是LAN1端口的物理地址,根据自己选择端口推算一下,“0x2404”对应LAN2、“0x2504”对应LAN3、“0x2604”对应LAN4。后面的“0x00280003”,即第一条命令中的portmap“0001010”,只需要修改其中的“28”,即可。这是一个16进制数值,对应的就是二进制“0001010”,进行二进制和十六进制转换的时候,记住要把“0001010”这个二进制数值从右到左输入,才能得到“28”。
第三步:把上面的两条命令加入到路由器的自定义脚本中
到此为止,所有的设置都已经好了。在这里感谢恩山footlog以及恩山luoluomeng的大力帮助,没有他们的帖子和热心支持,作为一个小白的我不可能搞定。
3.脚本的探讨
在上面的两条脚本中:
switch vlan set7 0001010 0 0 ---u-t-
switch reg w 0x2304 0x00280003
作为小白的我,只能说大概知道干什么的,但是对于里面的机制原理是一点都不清楚,为什么这么设置后我的LAN1口就可以把数据发送到光猫的IPTV端口了呢,背后的原理是什么。对于第二条命令,完全是照猫画虎,如果有大神能够向我这等小白解释一下就最好了,以后也可以自己折腾了。