官方服务微信:dat818 购买与出租对接

如何使用OpenWrt软路由实现IPTV回看功能,突破运营商限制

3万

主题

2

回帖

12万

积分

管理员

积分
120103
发表于 2024-12-24 05:48:13 | 显示全部楼层 |阅读模式
    上一篇文章写了如何在家庭网络中使用软路由()将运营商的IPTV组播转为局域网中的单播,从而可以在没有运营商盒子的情况下在任何终端(电视、平板等)上播放。您可以在手机上通过wif观看IPTV)。具体流程请看。

    但该办法在实施过程中存在几个问题

    运营商限制组播客户端的数量。就是几个客户端同时玩是没有问题的,但是如果超过限制就不行了。

    与第一个问题相比,第二个问题实际上有更明显的缺点。多播到单播不支持回溯。如果你没有时间实时观看一场经典比赛、重要新闻报道等,那么其实还是有必要稍后再看的。

    这个问题主要是因为有朋友留言询问如何配置播放。接下来我们看看如何实现IPTV播放。

    基本原理介绍IPTV融合的前提

    开始之前先回顾一下之前的单线复用或者双线复用的简单示意图如上图所示。

    将一根或两根电线从光纤调制解调器连接到路由器。如果是双线,则基于双线创建2个逻辑接口(iptv、wan口各1个),1个wan口,1个tv口。如果是单线,则使用vlan隔离,然后用同样的方法创建两个接口。

    在tv端口上,配置iptv认证信息(帐号或dhcp)

    在路由器上安装 udpxy 或 msd lite

    客户端通过抓包或者上网查找找到本地的组播地址源。

    在客户端安装DIYP或Kodi,通过路由器地址:UDPXY端口/rtp/组播地址格式构建m3u或txt格式的节目列表

    上图中,黄线部分在tv端口下面是单播,从tv端口上线时是组播。

    有了上面的了解,我们再来看看配置。

    IPTV播放准备

    首先,是单播地址,所以问题很简单。只要网络能通,首先查一下回溯的地址是多少?

    在前面搜索认证包的过程中,我也捕获到了节目列表。比如成都电信,这个请求/EPG/jsp/.js下,都是组播和播放单播地址,比如这样:

    其中包括直播的组播地址和回放的单播地址。你看这里很长。其实后面还有一些播放参数,比如时间等等。只需前往.smil即可。

    其实自己从这个地址抓包比较麻烦,可以网上找找。比如成都电信,可以参考老张的四川成都电信IPTV组播地址列表

    另外就是找到EPG节目列表。这很容易理解。用网络URL进行重播,我只支持重播。至于之前的时间段、看什么节目,则由EPG节目列表控制。这部分有很多公共的,当时你也可以自己构建。 git上有很多自建的解决方案。

    检查网络连接计划

   


    获得地址后,就取决于如何连接到网络。其实我们家的机顶盒是可以观看播放节目的,也就是说iptv线路除了正常的组播流量之外,还有播放流量。我们只要保证我的手机、电视等客户端能够访问到这个播放地址就可以了。

    之前我们讲v6的时候说过我们的互联网流量路径是这样的:

    客户端—>路由器lan口—>路由器wan口—>上级路由器lan口—>上级路由器wan口...->服务器

    比如我要访问微信,我从客户端出去到家里路由器的lan口,再从wan口出去到运营商路由器,再到骨干网,最后到微信服务器。我们在客户端指定了默认路由,也在家庭路由器上指定了默认路由,这样流量就可以一步步出去了。

    例如,这是路由器上的地址:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;"><code style="overflow-x: auto;padding: 16px;color: #abb2bf;background: #282c34;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;border-radius: 0px;font-size: 12px;-webkit-overflow-scrolling: touch;"><span leaf="">root@openwrt:~</span><span style="color: #5c6370;font-style: italic;line-height: 26px;"><span leaf=""># ip -4 a </span></span><span leaf=""><br  /></span><span leaf="">1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000</span><span leaf=""><br  /></span><span leaf="">    inet 127.0.0.1/8 scope host lo</span><span leaf=""><br  /></span><span leaf="">       valid_lft forever preferred_lft forever</span><span leaf=""><br  /></span><span leaf="">2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000</span><span leaf=""><br  /></span><span leaf="">    inet 192.168.1.101/24 brd 192.168.1.255 scope global eth0</span><span leaf=""><br  /></span><span leaf="">       valid_lft forever preferred_lft forever</span><span leaf=""><br  /></span><span leaf="">4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000</span><span leaf=""><br  /></span><span leaf="">    inet 10.149.252.160/19 brd 10.149.255.255 scope global eth2</span><span leaf=""><br  /></span><span leaf="">       valid_lft forever preferred_lft forever</span><span leaf=""><br  /></span><span leaf="">5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000</span><span leaf=""><br  /></span><span leaf="">    inet 192.168.5.1/24 brd 192.168.5.255 scope global br-lan</span><span leaf=""><br  /></span><span leaf="">       valid_lft forever preferred_lft forever</span><span leaf=""><br  /></span></code></pre></p>
    这里eth0是WAN口,br-lan是路由器的LAN口。

    客户端路由情况

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;"><code style="overflow-x: auto;padding: 16px;color: #abb2bf;background: #282c34;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;border-radius: 0px;font-size: 12px;-webkit-overflow-scrolling: touch;"><span leaf="">default via 192.168.5.1 dev ens18 proto dhcp src 192.168.5.198 metric 100 </span><span leaf=""><br  /></span></code></pre></p>
    路由器上的路由状态

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;"><code style="overflow-x: auto;padding: 16px;color: #abb2bf;background: #282c34;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;border-radius: 0px;font-size: 12px;-webkit-overflow-scrolling: touch;"><span leaf="">default via 192.168.1.1 dev eth0 proto static </span><span leaf=""><br  /></span></code></pre></p>
    路由器的lan口接收客户端的数据包,设置通过防火墙,然后通过wan口转发。这样路由器就可以访问互联网了。

    类比到这里,那就简单了。我回头看的地址不在互联网的骨干网上,或者是在骨干网上,但是某级路由没有对我们开放,所以我们必须手动指定路由。这里的方法是在 上手动指定路由。路由的下一跳是TV端口的网关(因为机顶盒可以查到地址,所以TV端口也能到达)

    然后将TV端口的防火墙区域分配给WAN端口。这样就可以通过lan到wan端口转发了。

    ”

    其实防火墙区域可以指向LAN口,在lan区域正常转发。

    配置步骤

    有了以上基础,配置就简单了

    配置

    1.路由配置:网络--&gt;路由

   


    这里的路由,根据要查看的地址范围添加。如果有多个地址,请添加几个。您还可以像这里一样添加一大段地址。

    2.防火墙配置网络—&gt;接口—&gt;电视端口,编辑—&gt;防火墙设置

    将TV口的防火墙区域指向WAN口本地播放器配置

    路由器配置完成后,您可以在播放器上进行配置。这里需要选择一个支持播放的播放器,这里选择DIYP。配置主要有两个地方,一是节目列表,二是EGP电子节目列表。 DIYP需要是txt格式的节目列表,格式如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'>    <pre data-tool="mdnice编辑器" style="margin-top: 10px;margin-bottom: 10px;"><code style="overflow-x: auto;padding: 16px;color: #abb2bf;background: #282c34;display: -webkit-box;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;border-radius: 0px;font-size: 12px;-webkit-overflow-scrolling: touch;"><span leaf="">所有频道,</span><span style="color: #5c6370;font-style: italic;line-height: 26px;"><span leaf="">#genre#,</span></span><span leaf=""><br  /></span><span leaf="">CCTV-1高清,rtsp://182.139.235.40/PLTV/88888895/224/3221228504/658582939.smil</span><span leaf=""><br  /></span><span leaf="">CCTV-2高清,rtsp://182.139.235.40/PLTV/88888896/224/3221227983/10000100000000060000000003751359_0.smil</span><span leaf=""><br  /></span><span leaf="">CCTV-3高清,rtsp://182.139.235.40/PLTV/88888895/224/3221228508/666944883.smil</span><span leaf=""><br  /></span><span leaf="">...</span><span leaf=""><br  /></span></code></pre></p>
    这里成都电信可以直接复制老张的通讯录。准备好地址后,将其托管在路由器上。

    DIYP设置—&gt;界面设置—&gt;程序地址:

    同样的方法设置EGP的电子接口:

    DIYP设置—&gt;界面设置—&gt;EPG界面

    epg接口是老张直接使用的,但是你也可以选择其他接口。当然,你也可以根据自己的情况选择自己搭建。

    效果展示

    配置完成后,就可以顺利查看、查看信息了。这里我看了21点40分的7点新闻联播。

    总结

    重播地址用于将组播改进为单播,实现IPTV的融合。支持直播的同时,还可以同时观看回放。该方案还跳过了运营商组播客户端数量的限制,真正可以摆脱运营商的机顶盒,在任何设备上观看IPTV。

    这也是一位朋友留言提出的问题。我查了资料,纠结了几天。在帮助朋友解决问题的同时,我也改进了自己的集成方案。

    关于播放器的问题,困扰了我很久。我首先在电脑上尝试过。我用的是VLC播放器,无法播放rtsp格式。我一直以为是网络的原因。后来问论坛老大,发现VLC不支持,所以我只需在手机上切换到DIYP即可。

    另外,关于互联网的开放。添加路线是最简单的。事实上,您还可以创建一个 MWAN 并使用 iptv 作为单独的上游 WAN 端口。过程中我也尝试过,确实有效。不过iptv的认证信息还是需要自己根据本地情况自行构建。

    以上就是改进后的IPTV一体化解决方案。在这个过程中,我借鉴了很多专家的经验。不过过程中的图解和配置细节都是我自己在实际环境中仔细研究的。希望看到这篇文章的朋友不仅能够配置,而且也知道为什么要这样配置。
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2025, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2025-6-9 11:34 , Processed in 0.072968 second(s), 17 queries .