Skip to content

广东电信 IPTV 组播转单播极限测试

2024-12-27

Loading...

24 年 12 月 28 日凌晨更新

下面的文章与最新的测试结果有出入:实测突破了 55 路和 1000M 的限制。可以等我更新这篇文章!!!(这句话存在就说明我还没更新)

这两天给家里弄好了 IPTV 的组播转单播,心血来潮,想看看极限能跑多少路 IPTV 直播

有关这次折腾 IPTV 的记录和讨论,我也发到了推特和 V2EX 上。

这篇博客不是教程,由于全国各地不同运营商对于 IPTV 有不同的网络策略,还是建议各位自行以「IPTV + OpenWrt + 组播」等关键字搜索符合当地运营商的教程。

组播转单播

  • IPTV 原始信号是以组播(Multicast)方式传输的
  • 通过 udpxy 将组播流转换成 HTTP 单播流(Unicast)
  • 这样转换后,内网中的设备就可以通过普通的 HTTP 协议访问这些视频流

这种转换的主要优点是:

  • 让不支持组播的设备(如手机、平板、智能电视等)也能观看 IPTV
  • 突破了原本 IPTV 信号只能在特定接口或设备上观看的限制
  • 实现了全屋任意设备都能收看 IPTV 的效果

如果家里还有人要看电视,还是推荐可以搞个这个方案,在 AppleTV 、手机、平台上就能直接看直播了,而且没有机顶盒那么多广告。

有点可惜现在才弄这套方案,前段时间奥运会期间,和老婆在家看比赛直播还是挺多的。

参考资料

🌐 网络条件

  • 东莞电信 1000M 下/50M 上(有公网 IPv4/IPv6)
  • 光猫 2.5G 网口 1 桥接,软路由拨号
  • 光猫 iTV 口 桥接: 封装类型 PPPoE 网线连软路由, OpenWrt 配置网口 UDPXY 转发组播

🔧 硬件配置

  • 光猫: 中兴 7015tv3 (2.5G WAN + 1G ITV)
  • 软路由: N5105 4 口 2.5G
  • Mac: M2 Max/96GB + 2.5G 网卡
  • PC: i7-8700K/1080 + 万兆网卡

除了上述设备,也使用到了 AppleTV、手机等设备进行测试。

📡 转发组播

我也是昨天看到 /t/102603 这个帖子下的留言,发现可以通过「电脑插光猫 ITV 口直接播放」来验证是否能进行组播转发。

经过测试,我家东莞电信、深圳联通两地的 IPTV ,都可以满足。

我之前被其他帖子误导了,以为要鉴权抓包太麻烦就没搞了。没想到居然这么简单(刚好我的网络条件满足)。

🎮 测试播放器

GridPlayer,基于 VLC 开发的多路播放器,支持硬解。

用 IINA 也试过,最多只能播放 15 个且很卡顿,后来搜到 GridPlayer 发现可以满足需求。

📊 测试结果

下面是测试过程的一些截图:

Mac 最多只能播放 25 路。

Mac 那边继续直播 25路,PC 额外播放 30 路,CPU 压力很大。

OpenWrt 监测 ITV 口带宽平均下来 500Mbps。

我订阅的电视源使用的都是 HD 1080P 25帧的资源,码率 7Mbps - 10Mbps 波动,大多时候是 8Mbps。

📺 IPTV 占用网络带宽测试

为了验证「家宽线路和 IPTV 线路是否共用带宽」,我又重新验证了下。

换了中兴 7013tv3 2.5G 光猫后,我家电信实际官网测速能稳定跑到 1300M 左右。刚刚重新测试了下。

好的,我来重新组织表格,将设备播放路数拆分为独立的列。

总路数PC 播放路数Mac 播放路数IPTV 总带宽占用家宽测速结果IPTV状态
30300300Mbps1300Mbps正常播放
503020450-460Mbps1300Mbps正常播放
553025490-500Mbps1300Mbps无法新增直播流,新增会导致原有直播随机断开一路

纠正:修正下 IPTV 的总带宽,一开始我把峰值带宽看成了实际带宽。实际上 55 路播放的时候,网口 3 分钟平均速率 490-500Mbps,峰值才大概 2 倍达到 1000Mbps。

  • Mac 跑到 25 路就到顶了(CPU 高负载+风扇难得跑了起来),系统不卡顿,但是播放器卡顿。
  • PC 能撑到 30 路(Mac 那边 25 路还在运行),可添加无限源但超过会卡顿,已达 CPU 和显卡瓶颈,系统卡顿,播放器可能崩溃。
  • 每路都是不同的电视台源,上面 55 路同时播放流畅不卡顿。跑满时,家庭局域网其他设备(AppleTV/手机) IPTV 客户端无法再播放,OpenWrt 监测 iTV 网口带宽平均速率 500Mbps。

后来看到 V 站有网友评论说 55 路可能是 UDPXY CPU 占用率限制,经过他提醒,我发现的确忽略了这个因素,于是重新又测试了下。

我的 OpenWrt 软路由器配置为 2 核 2G。当 55 个通道同时播放时,CPU使用率在 50% 到 70% 之间波动,每个 UDPXY 进程占用 1%到2% 的CPU。因此,初步可以排除CPU瓶颈。

后来为了检查是光猫 1G 网口的物理限制是否影响 IPTV 带宽上限,我又将 iTV 口重新绑定到光猫 2.5G 网口重新测试,原以为突破 1000M 的网口物理限制,但是实测下来,最高播放数量依旧限制了 55 路直播。

看样子 IPTV 的线路除了带宽,应该还有其他限制。

得出最后结论:

  • 家宽和 IPTV 带宽的确是隔离的,IPTV 线路不会影响家宽的带宽。
  • 目前东莞电信 1000M 家庭宽带,IPTV 带宽大概 500M,所有设备支持最多同时 55 路直播。