北京移动IPTV组播转单播

在任何设备都可以看 IPTV,包括手机和电脑。
1. 前置工作
1.1 测试 IPTV 信号
- 先测试光猫是否有 IPTV 信号
- https://www.v2ex.com/t/1112871
- 北京移动测试,插入光猫接口,结论 vlan1010:有线组播可以播放
- 北京移动联通频道列表
1.2 单线复用

- 单线复用教程:https://www.right.com.cn/forum/thread-8342082-1-1.html
- 绑定上网业务(含有 INTERNET 的名称)和 IPTV 业务(含有 Other 的名称)到网口 1,这一步是实现单线复用,也就是光猫的网口 1 到路由器 WAN 口一根网线同时传输上网 +IPTV 两种信号。
- 测试单线复用
- 北京联通的 rtp://239.3.1.241:8000 或者北京移动的rtp://228.1.1.115:8000
- 如果可以播放出画面,那接下来再看看能不能上网,如果还可以上网,那光猫这个接口就属于可以单线复用
1.3 IPTV 组播和单播
- 单播 (Unicast) 就像是网上购物后收快递:你想买一件特定商品,下单后,商家会把这个包裹专门打包,通过快递员,一对一地送到你家。你的邻居就算也买了同样的东西,商家也需要为他另外打包一个包裹,再派一个快递员送过去。你收你的,他收他的,互不干扰。
- 主要用于视频点播 (VOD)、时移电视 (Time-shifting) 和回看 (Playback)。
- 当你打开电视盒子,选择一部电影《流浪地球》开始观看时,你的电视盒子就向 IPTV 服务器发出了一个 “ 单播 “ 请求。服务器随即为你创建一个专属的数据流,从头开始播放,并只发送给你。你可以随意快进、暂停、后退,因为这条数据流是为你量身定制的。
- 组播 (Multicast) 就像是看电视直播:电视台在晚上 7 点播放新闻联播。它只发射一个信号,所有把电视频道调到这个台的观众,都能接收到完全相同的内容。电视台不需要为每一个观众都单独发射一次信号,大大节省了资源。想看的人就 “ 加入 “(调台),不想看的人就 “ 离开 “(换台)。
- 组播是一种 “ 一对多 “(one-to-many) 的通信模式。服务器只发送一份数据包到一个特定的 “ 组播地址 “,网络中所有对这个 “ 组 “ 感兴趣的客户端都可以加入该组,并接收这份数据。数据包在网络传输路径的分叉点上才会被复制和分发。
- 主要用于电视频道直播 (Live TV)。
2. 配置
光猫桥接模式,路由器宽带拨号,刷了 ImmortalWrt 系统,目前电脑连接光猫的 iptv 口可以看组播,怎么设置电脑连接路由器的 lan 口也可以看组播。光猫 ip 地址 192.168.1.1,路由器地址 192.168.6.1
- 你的路由器(OpenWrt)目前只处理了上网的流量,对于 IPTV 的组播流量,它默认会当成普通的外网流量给 “ 挡 “ 在门外,不会主动转发到你的局域网(LAN)里。
- 要解决这个问题,我们需要让路由器 “ 认识 “IPTV 流量,并 “ 代理 “ 你局域网里电脑的请求,去向光猫获取组播视频流,然后再转发给你的电脑。
- 获取 IPTV 的 VLAN ID。
- 新增网络接口 eth1.1010
- 网桥设备 lan 开启 IGMP 嗅探

2.1 新增网络接口
1 | cat /etc/config/network |

2.2 配置防火墙
我们需要告诉防火墙,允许 iptv 区域的流量和 lan 区域的流量进行通信。

- 进入
网络->防火墙。 - 你会看到刚才新建的
iptv区域。点击它旁边的编辑。 - 常规设置:
入站数据,出站数据,转发都设置为接受 (accept)。- 勾选
IP动态伪装 (Masquerading)。 - 在
允许转发到目标区域中,确保WAN(或者你的pppoe-wan所在区域)被勾选。 - 在
允许从源区域转发中,确保LAN被勾选。
- 回到防火墙主页面,我们还需要添加两条重要的通信规则。
- 规则一:允许 IGMP 流量
- 在
通信规则标签下,点击添加。 - 名称:
Allow-IGMP-From-IPTV。 - 源区域:选择
iptv。 - 目标区域:选择
设备(输入)。 - 协议:选择
IGMP。 - 动作:选择
接受 (accept)。 - 点击
保存。
- 在
- 规则二:允许 IPTV 组播流进入 LAN
- 再次点击
添加。 - 名称:
Allow-Multicast-To-LAN。 - 源区域:选择
iptv。 - 目标区域:选择
lan。 - 协议:选择
UDP(因为视频流通常是 UDP)。 - 动作:选择
接受 (accept)。 - 点击
保存。
- 再次点击
- 规则一:允许 IGMP 流量

2.3 配置 Igmpproxy
1 | root@ImmortalWrt:~# cat /etc/config/igmpproxy |
1 | # 查看 IPTV 网络 |
2.4 配置 Udpxy

| 已启用 | ✅ 勾选 | 启用 udpxy 服务 |
| 刷新 | ✅ 勾选 | 网络变动时自动重启 udpxy |
| 详细日志记录 | ⬜ 可选 | 开启会增加日志量,排错时才用 |
| 客户端统计信息 | ✅ 勾选 | 在 /status 页面显示连接统计 |
| HTTP 监听接口 | br-lan(或 lan) | 这是 udpxy 提供 HTTP 流的接口,供局域网客户端访问 |
| 端口 | 4022 | 默认即可,除非你有冲突 |
| 多播订阅源网络 | 不填或默认 | 一般留空 |
| 组播订阅源接口 | 选你的 IPTV 上行接口,比如 eth1.1010 或 wan.iptv | 对应你 igmpproxy “ 上游 “ 那个接口(即光猫出来的 VLAN) |
| 客户端数量上限 | 20(根据路由器性能酌情) | 一般 10-30 比较合理 |
| 日志文件 | /var/log/udpxy | 系统默认即可 |
| 入口缓冲区大小 | 4096(默认) | 不需要改 |
| 缓冲区消息数 / 时间限制 | 默认值 | 可保持 1 和 -1 |
1 | # udpxy 启动命令 |
实测:udpxy 成功后可以关闭 igmpproxy

2.5 新工具 rtp2httpd
配置后可以直接网页看,更方便。上游接口选择 eth1.1010
1 | /etc/init.d/rtp2httpd status |

3. 资源
3.1 IPTV
3.2 播放软件
- mac: vlc
- window: vlc
- ios: ntplayer
- 电视: DIYP