最近搞了一套NAS,搭建了在家里的影音库EMBY,发现可以支持播放电视节目,正好家里的IPTV机顶盒坏了,于是就折腾了一下 UDPXY 来实现单播任意设备观看IPTV。
秉承在多年IDC行业工作的经验,网络架构尽可能简单,不要使用各种二层Bridge。因此本篇文章会使用 ROSv7 新特性 Docker来实现目标。
准备材料:
- Mikrotik RouterOSv7 (开启Container)
- udpxy 的包
- 上海电信节目单
开始操作:
桥接 VLAN85
我这边是用 RouterOS进行拨号的,在IPTV光猫中把VLAN85继承给LAN口1

在ROS上配置 VLAN85

配置Docker,veth

将 veth 加入到 Bridge 中


配置 IP 在 Bridge上

新建Docker

开启 IGMP Proxy
在 Routing -> IGMP Proxy 下新建两个 Interface


运行 Docker 后,查看 udpxy 的status

下载上海电信的 M3U 替换成单播地址
格式如下:
http://单播地址:4022/udp/组播地址
举例说明:
#EXTINF: -1 tvg-id="cctv-1" tvg-name="CCTV-1(综合)" group-title="央视频道", CCTV-综合「高清」
rtp://239.45.3.145:5140
转换成
#EXTINF: -1 tvg-id="cctv-1" tvg-name="CCTV-1(综合)" group-title="央视频道", CCTV-综合「高清」
http://192.168.201.2:4022/udp/239.45.3.145:5140
这个时候就可以用内网中任意一台设备观看上海电信 IPTV 了