我最近翻出了吃灰多年的IPTV机顶盒。在这个短视频时代,很少有人看传统的电视节目了,电视可以不看,但不能没有,所以我决定还是把它装上。但是一看到那个遥控器,我的强迫症就犯了:长得丑不说,看个电视还要用两个遥控器,实在是不方便。那么有没有办法直接在电视机上看IPTV直播呢?经过一天的折腾,我终于搞定了直接在电视机上播放IPTV电视节目,而且家庭局域网内所有的电脑、手机、平板也都能收看。整个过程记录如下,照着做就行。

从抓包到全屋可看的完整流程

先弄懂:IPTV 是怎么工作的

在进入正题之前,先了解一下IPTV是怎么工作的。运营商的IPTV和普通宽带上网是两条"互不相干"的通道,即使它们共用同一根入户光纤和同一个光猫。理解这一点,是后面所有操作的前提。

我家的主路由是一台J4125处理器的软路由,直装的x86_64的OpenWRT系统,这个机器有4个网口,硬件名分别为eth0、eth1、eth2、eth3。eth0为WAN口,连接到光猫的Internet网口,通过PPPoE拨号接入互联网;eth2为LAN口,连接到主交换机;eth1和eth3暂时空置。光猫上有一个IPTV网口,专门承载IPTV业务,机顶盒插这个口,用内置的PPPoE账号拨号,接入运营商的IPTV网络。

改造前后的网络拓扑对比

机顶盒起的作用有两个:一是拨号接入IPTV网络,二是将接收到的电视节目流媒体数据包解码成HDMI信号传输给电视机播放。现代的电视机都内置了智能系统,本身就具备网络连接和视频解码的功能。所以我的思路就是:用OpenWRT路由器代替机顶盒进行PPPoE拨号接入,再把IPTV组播视频流转换成单播流,在电视机上用Kodi这样的播放器直接播放。这样就能彻底抛弃"机顶盒"这个硬件角色。

这里简单解释一下什么是"组播"、什么是"单播"。IPTV的"直播"本质是IP组播(Multicast):一个组播组(比如 239.x.x.x:port)里,运营商机房不停往外推节目流,机顶盒想看哪个台,就发一条IGMP Join请求加入那个组,加入之后就能持续接收这个组的数据流。组播流量在局域网中会被泛洪到所有设备,WiFi下体验极差,经常卡顿或者干脆收不到。而单播(Unicast)则是点对点的HTTP流,任何设备都能稳定播放。所以中间需要一个"组播转单播"的转换器。

rtp2httpd 组播转单播原理

传统的方案是用udpxy来做这个转换。不过这次我没有用udpxy,而是选择了功能更强大的rtp2httpd——它除了组播转单播,还内置了一个网页版播放器,浏览器打开就能直接看电视,而且播放列表格式跟udpxy完全兼容(都是 /udp/组播地址:端口 的形式),之前为udpxy生成的m3u列表可以一字不改直接使用。区别放到第五节细说。

以下教程基于两个前提:光猫IPTV口无VLAN(直接透传)、机顶盒认证是PAP明文(密码抓包直接可见)。有的运营商会在光猫IPTV口给流量打上VLAN标签,桥接/拨号前要先剥离VLAN,具体可以自行了解OpenWRT中VLAN的设置方法;如果机顶盒认证不是明文,抓包数据中就提取不出密码,需要通过其他途径获取机顶盒的PPPoE账号密码。

一、准备抓包

1.1 接线

机顶盒插eth2,光猫IPTV口插eth3。

1.2 把 eth2 和 eth3 做成一个二层桥接 br-iptv

打开浏览器访问路由器的管理页面,登录后:

菜单:网络 → 接口,点"添加新接口"按钮。

名称填iptv,"在以下设备上创建接口"下面勾选eth2和eth3,协议选"不配置协议"。

点"保存并应用"。会自动创建br-iptv桥,并让eth2、eth3都归它管。

注意,"不配置协议"是关键:别给它配IP,也别把它加进LAN/WAN区域。这个桥的唯一作用就是让光猫和机顶盒的流量透明穿过,供你抓包,设了IP反而会干扰机顶盒的PPPoE。

二、抓包

这一步必须用命令行(LuCI没有抓包界面),SSH登录路由器,执行下面这条指令:

tcpdump -i br-iptv -nn -s 0 -w /tmp/iptv.pcap

给机顶盒通电开机,开机之后机顶盒会自动进行PPPoE拨号,然后在机顶盒上依次切几个台(每个台停几秒),触发IGMP加入和组播流。切完台,回终端按Ctrl+C停止抓包。

注意播放节目的时间不要太长,因为抓包会把视频流也抓下来,时间长了抓包文件会很大。

三、读出密码和组播地址

在电脑上用Wireshark打开抓包文件iptv.pcap。它自带抓包分析,能看到明文密码。

3.1 获取 PAP 密码

在Wireshark顶部过滤框输入 ppp.password,下方列表会直接列出携带密码的PAP报文。点开一个,在协议树里展开 PPP → PAP → Password,明文密码就在那里;用户名同理(ppp.peer_id 或 ppp.user_id)。

3.2 获取组播频道地址

笨办法是用命令行工具tshark把整份pcap里的组播地址、端口以及频道名称提取出来。不过一百多个频道手工整理实在太麻烦,现在AI这么强大,完全可以让AI帮我们写一个Python脚本来完成这个任务,顺便生成最终的m3u文件供播放器使用。

最终生成的m3u文件长这个样子:

#EXTM3U
#EXTINF:-1,CCTV-1
http://192.168.1.1:4022/udp/239.0.1.2:1234
#EXTINF:-1,CCTV-2
http://192.168.1.1:4022/udp/239.0.1.3:1234
#EXTINF:-1,CCTV-3
http://192.168.1.1:4022/udp/239.0.1.4:1234

这里的地址格式就是udpxy风格:http://路由器IP:4022/udp/组播地址:端口。记住这个格式,后面第五节配置rtp2httpd的时候会用到——端口保持4022,这份列表到最后一行都不用改。

四、软路由代拨号

4.1 建立 PPPoE 接口

进入路由器管理后台,把抓包用的桥停掉,再把eth3单独建一个PPPoE接口:

网络 → 接口,找到iptv (br-iptv),直接点"删除"删掉整个桥。

点"添加新接口":名称IPTV_WAN,设备选eth3,协议选PPPoE,填上抓包得到的账号和密码。

展开"高级设置":把"默认网关/使用默认路由"取消勾选(不让IPTV接口抢你的上网默认路由,这一步很重要,否则你的上网流量会跑到IPTV专线里去)。

防火墙设置里面把IPTV_WAN加入wan区域,保存并应用。

然后进入网络 → 防火墙 → 通信转发,将LAN到IPTV_WAN的转发设置为允许。

4.2 验证拨号成功

回到 网络 → 接口,找到IPTV_WAN,点"连接"。不出意外的话,几秒钟之后接口状态会变成"已连接",并且拿到了10开头的IPv4地址,就说明认证通过、已连接上IPTV网络。

这时候就可以拔掉机顶盒,让它正式下岗了(建议先留着别收起来,出问题好回退)。

五、配置 rtp2httpd

拨号已经通了,但组播不会自己"流"到局域网里来,需要一个组播转单播的网关。传统教程一般到这一步是装udpxy,我最后没有选它,而是装了rtp2httpd,理由有三:

一是内置网页播放器。udpxy只负责转流,想看电视还得在各设备上装播放器;rtp2httpd自带一个响应式网页播放器,手机、平板、电脑浏览器打开 http://192.168.1.1:4022/player 就能直接看,电视盒子连软件都不用装。家里长辈想看电视,发个网址过去就行,这是udpxy给不了的体验。

二是播放列表格式与udpxy完全兼容。它保留了 /udp/组播地址:端口 的地址风格,我们第三步生成的m3u列表一行都不用改。如果以后想从udpxy换过来,也是无缝迁移。

三是功能更丰富。它还支持RTSP转HTTP、EPG节目单代理、快速换台(FCC)等进阶功能,状态页也能直观看到每个客户端在看什么台、占了多少带宽,比udpxy那个简陋的文本状态页好用得多。

5.1 设置 rtp2httpd

OpenWRT软件包里直接搜索rtp2httpd安装(iStore软件源里也有),装好后进入 服务 → rtp2httpd,填这几个关键项:

启用:勾选。

端口:4022(和m3u列表里的端口保持一致)。

上游接口:填 pppoe-IPTV_WAN(告诉它组播流从这个IPTV专线接口进来,这是最关键的一项,填错了收不到组播)。

保存并应用。

5.2 验证

电脑浏览器访问这个地址:http://192.168.1.1:4022/status

如果能看到状态页(服务运行时间、活跃连接、带宽等统计信息),说明rtp2httpd工作正常。

这时候电脑上用PotPlayer或者其他支持IPTV的播放器打开之前生成的m3u文件,应该就能正常播放电视节目了。也可以直接在浏览器打开 http://192.168.1.1:4022/player,用内置的网页播放器选台观看,手机平板同样适用。

六、Kodi 配置播放

Android TV上的Kodi用PVR IPTV Simple Client插件读取m3u,然后在"电视 → 频道"里看直播:

Kodi 设置 → 插件 → 我的插件 → 全部 → PVR客户端 → IPTV Simple Client → 安装。

进插件设置 → M3U播放列表路径,设置好m3u文件的路径(把m3u放到U盘或NAS上,也可以直接填 http://192.168.1.1:4022/playlist.m3u 这样的在线地址),点确定保存设置后重启Kodi。

返回Kodi主页面,进入 电视 → 频道,应该能看到m3u里的全部频道,点开就能播放了,换台速度和原生机顶盒几乎没有区别。

写在最后

到这里,改造就全部完成了:一台软路由同时接管了互联网拨号和IPTV专线拨号,机顶盒彻底退休,全屋的电视、手机、平板、电脑打开浏览器或者播放器就能看直播。整套方案没花一分钱,只是把本来就有的设备用到了极致。如果你家也是光猫桥接加软路由的组合,不妨试试。

创建于 2026-11-05 20:02:57.494440, 最后更新于 2026-11-06 17:12:35.976890, 所属分类: 计算机 , 42 次浏览。

0 条评论 最新

暂无评论。
验证码