背景
最近眼瞅著就要過年了嘛,過年一家人總是要看春晚的。但我家的光貓,上網口跟iptv口是兩條口,一旦把電視接到iptv口就看不了bilibili了。。。所以我家幾乎從來都沒接過iptv。。。
但過年總是要看春晚的,所以前兩年我家就是在各大視頻網站或cntv上看春晚。但除夕夜網絡總是不太好。
所以就想著,能不能把光貓的iptv口也用上,讓電視不用換網線,就既可以看b站,又可以看電視呢?(當然,不用網絡直播源,不清晰又卡。。。)
獲取電視機頂盒信息
把一直沒用的機頂盒翻出來,直連接在光貓的iptv口上,將機頂盒連接電視,開機。
點擊遙控器的設置鍵,要求輸入密碼。別慌,電信的是通用的10000 。別的品牌的百度一下也有。
然后我們調到設備信息的頁簽,記下IP地址、子網掩碼、網關、主備DNS、有線MAC,無線MAC也可以記一下,不過好像沒用。
然后就可以關機,把機頂盒繼續收在柜子里啦。
同時接入網絡口和iptv口
主流方案:單路復用
現在主流的方案就是修改光貓配置,將網絡流量和iptv流量不綁定出端口,從而實現一條網線單路復用,同時傳輸網絡流量和iptv。
我的方案:雙wan口
雖然電信用一條光纖單路復用同時傳輸網絡流量和iptv到家,但網線的帶寬還是要遠遠小于光纖的。而且我家的網口只是千兆口,讓我從光貓里出來繼續單路復用,總感覺會影響網速。
那有沒有不用單路復用的方案呢?當然是有的啦。我家的工控機軟路由有6個網口呢。
所以我從原先的聚合lan口中,拆了一個網口,作為iptv的接入wan口。
在iKuai中配上wan2,選擇基于物理網卡的混合模式,這樣可以設置多個登錄方式,從而讓我們直連光貓。
- 配置靜態ip,192.168.1.x,網關寫光貓的ip就行。這樣家里的設備就可以在不同網段中,直連光貓了。此條線路命名為vwan_model。
- 配置動態ip。這里要填寫上面我們記錄的機頂盒mac地址,因為iptv都是綁定設備的,其他mac地址分配不到ip。(當然,蒙對了說不定也行)至于這邊貌似也可以填寫同網段下的靜態ip,但我覺得還是偽裝mac來自動dhcp獲取ip會更保險一些。此條線路命名為vwan_iptv。
偽裝截取組播流
這時候,雖然我們的軟路由通過偽裝mac,同時接入了網絡流和iptv流,但iptv使用的是組播協議,如果不運行組播協議的話那還是看不到電視。
所以我們在iKuai中打開IGMP代理,選擇IGMPv3協議版本,上聯端口選擇我們剛才設置動態IP的線路vwan_iptv,下聯端口選擇lan1線路,這樣家里的所有設備就都可以通過組播代理,獲取到組播流了。
組播流轉單播流
到上一步,我們獲取到的依然是組播流,但是大多數家庭設備并不支持組播流,所以我們還需要把組播流轉為單播流,才能無障礙的在任意設備觀看iptv。
這里我們在iKuai路由器系統中設置UDPXY,信號源接口選擇我們代理的線路vwan_iptv,服務端口(也就是給內網設備觀看iptv服務使用的端口)隨便寫一個吧 。
獲取iptv節目地址(組播訂閱地址)
其實在上一步做完時,我們就已經可以看iptv了。但是,我們的串流地址寫啥呢?
這其實是因為組播建立了連接之后,還需要訂閱一個源,才會有數據傳來。但我們不知道這個訂閱地址是啥呀。。。
主流方案:機頂盒抓包
一般的主流方案就是,既然沒有訂閱地址,那直接對機頂盒抓包就行了。一般他們需要一個雙端口網卡,我雖然有交換機,也可以進行抓包,但終究還是煩了點,所以只是當后備方案預備著。
我的方案:找現成的iptv源
那既然是抓包,就肯定有人抓過并共享了,而且iptv講究穩定性,訂閱地址肯定不會經常更換,所以我只需要找到人們共享出來的iptv源就行啦。
但嘗試了幾個失敗后才發現,原來iptv并不是我想象中的全國一個巨大的組播樹。而是借鑒了CDN的思路,先把組播流緩存到各個地級緩存服務器,再從該服務器向周邊人群建立組播樹。
所以我找了一個南京電信的iptv組播源 https://github.com/shawze/IPTV ,把里面的ip和端口改成我自己路由器的ip和設置的udpxy服務端口,得到m3u文件,比如:
#EXTINF:-1, CCTV1
http://x.x.x.x:y/udp/239.49.8.19:9614
親測好用。
播放器
pc:vlc等
把上面的m3u節目單,即iptv源,拖進vlc的播放列表,再隨便選擇一個節目(頻道):
安卓:vlc等
我用的小米8,也可以安裝vlc哈。親測很好用。而且發現可以多個不同的節目同時看,一個節目差不多要流量1.多MB,我在pc和手機上看不同的節目,總流量速度就是2.28MB/s。
iphone:nplayer
TV:Kodi
我用的是海信的電視,自己裝了螞蟻市場,里面直接就有Kodi,安裝。
進入Kodi后,點擊設置,選擇Interface -> Skin,將font改為Arial based,不然中文顯示的都是亂碼。
如果需要將界面都給改成中文,可以進入插件,選擇look and feel -> language,安裝簡體中文,選擇確認切換語言,即可。
接下來,我們安裝iptv客戶端。
依然是進入插件頁,選擇PVR客戶端,安裝PVR IPTV Simple Client插件。然后進入插件配置,將m3u位置改為本地,然后選擇nfs。。。
導入后,即可正常觀看iptv啦。