🛰️【分享】我用路由器把 IPTV 玩成视频网站:rtp2httpd 折腾记

「当你家里的 IPTV 频道加载还在转圈圈的时候,可能有个程序员已经在路由器上开了一个私有 CDN。」


🧩 前言:家里那根“神秘的网线”

某天我突发奇想:
既然家里 IPTV 盒子能看几十个频道,那这些频道到底从哪儿来的?能不能直接在我自己的设备上看?

于是我顺藤摸瓜,在 GitHub 上发现了一个神奇项目:
👉 stackia/rtp2httpd
一句话介绍它:把组播 RTP、UDP、RTSP 这些神秘流量变成人人能播的 HTTP 流。

听起来像是:

“帮你把 IPTV 的多播流变成可以在任何浏览器里打开的链接。”

这不就是我想要的东西嘛!


⚙️ 它到底能干啥?

官方一句话:

RTP/UDP/RTSP → HTTP 单播转发器,支持 FCC 快速换台。

我一句话:

路由器里的“小型流媒体服务器”,看直播、换台都快得离谱。

亮点功能:

  • 🚀 FCC 快速换台:换频道就像刷 B 站一样快(不黑屏、不卡顿)。
  • 💡 Web 状态页:实时看谁在看、看哪路、用多大带宽。
  • 🧠 零拷贝 + 多 worker:吃 CPU 少得离谱,OpenWrt 都能跑。
  • 🪄 RTSP 也能转:摄像头一键变 IPTV 频道。
  • 🧱 LuCI 插件:Web 管理、开关、查看状态,全图形界面。

换句话说,这玩意就是“穷人版中间件级 IPTV 网关”。


🧪 实测:路由器当“电视台服务器”

我拿一台刷入了Openwrt的小米路由器4试了下。
执行下面一行命令就装好:

1
curl -fsSL https://raw.githubusercontent.com/stackia/rtp2httpd/main/scripts/install-openwrt.sh | sh

启动后,在浏览器打开:

1
http://你的路由IP:9900/status

——可以看到频道、客户端、带宽、缓存延迟,全在眼前,简直小型“流量监控中心”。

用 VLC 或 IPTV 播放器打开:

1
http://路由IP:9900/udp/239.1.1.1:1234

啪的一下,频道直接出来。没有那种“转圈加载”仪式感。😆


⚡ FCC 快速换台的魔法

FCC(Fast Channel Change)是它的杀手锏。

原理是:

预缓存关键帧,切换频道时直接发一帧 + 快速接力后续流。

结果就是:

电视换频道像刷短视频一样——0.2 秒起播。

(我甚至怀疑它比我家官方 IPTV 盒子还快……)


🧱 如果你想更极客一点

rtp2httpd 支持各种参数,像:

1
2
3
--r2h-token=abcdef123456
--mcast-rejoin-interval=15
--max-worker=8

有鉴权、有重连、有多线程。
在 OpenWrt 里 /etc/config/rtp2httpd 配好启动项就完事。
LuCI 插件还能点点鼠标管理服务状态。


🧯 注意事项(别乱开公网)

  • 组播流带版权!别分享出去!
  • 如果真要远程访问,请加上 --r2h-token 鉴权。
  • 内核要 ≥ 4.14,才能用上它的零拷贝加速。

📈 实测性能:不夸张,真的稳

我实际跑了 25 路 1080p(8 Mbps)频道。
CPU 占用不到 25%,内存还富裕着。
感觉这玩意在路由器上简直是“外挂”。


💬 总结一句话:

“如果说 IPTV 是运营商的黑盒,那 rtp2httpd 就是把黑盒变成你的玩具。”

你能:

  • 把摄像头当频道插进 IPTV 列表;
  • 在局域网里开自己的“家庭电视台”;
  • 顺便练习下组播、NAT、零拷贝这些底层概念。

🧭 参考链接


👨‍💻 结语:
这年头折腾路由器不仅能提网速,还能让它变电视台。
想试试 FCC 的爽感?你只需要一台支持 OpenWrt 的机器和一点耐心。
试完你就知道什么叫“延迟一去不复返”😂