介绍一下我写的 IPTV 组播转单播工具 rtp2httpd,支持 FCC 快速换台,RTSP 转 HTTP,自带播放器

2026-04-11 14:161阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

经常折腾 IPTV 的朋友应该知道,有本地 IPTV 组播源 + 组播转单播工具 + OpenWRT 路由器,在电脑、手机上搭配 APTV 等播放器,就可以看当地 IPTV 电视直播。而且因为走的是运营商 IPTV 网络,稳定性极高。

平时大家常用的组播转单播工具有 udpxy、msd_lite 等,这次我要介绍一下我编写的这个工具 rtp2httpd,一定是目前功能最强的。

项目地址 GitHub - stackia/rtp2httpd: Multicast RTP/RTSP to Unicast HTTP stream converter, optimized for China IPTV (欢迎点进查看完整介绍)

这个工具除了基本的组播转单播功能,还实现了:

  • FCC (快速频道切换):极快的换台速度,在我以前发在 V2EX 的一篇帖子有介绍过
  • RTSP 转 HTTP:可以把抓到的 IPTV RTSP 时移源转换成 HTTP 提供,获得更好的播放器兼容性
  • 外部 M3U 转换
  • 内置网页播放器

Web UI 实时状态监控

502245437-8838ee26-aa97-4d31-8031-afe8998a7fba1920×1347 188 KB

快速换台 + 时移回看

https://github.com/user-attachments/assets/a8c9c60f-ebc3-49a8-b374-f579f8e34d92

内置播放器

https://github.com/user-attachments/assets/d676b8c1-7017-48a1-814c-caab0054b361

25 条 1080p 组播流同时播放,CPU/内存占用极低

https://github.com/user-attachments/assets/fedc0c28-f9ac-4675-9b19-a8efdd062506

网友解答:
--【壹】--:

佬,私一下怎样抓取广电源


--【贰】--:

image1440×696 25.8 KB
大佬,我部署成功后用UDP是这样的啊,是我哪里的问题啊?是udp的网址问题吗


--【叁】--:

23:32:23 INFO Status tracking initialized

23:32:23 INFO Listening on 0.0.0.0 port 5140

23:32:23 INFO Listening on :: port 5140

23:32:23 INFO Zero-copy: Using regular send (default). Enable zerocopy-on-send for better performance on supported devices.

23:32:23 INFO Server initialization complete, ready to accept connections

23:32:24 INFO New client requested URL: /status (method: GET)

23:32:24 INFO New client requested URL: /status/sse (method: GET)

23:39:57 INFO New client requested URL: /status (method: GET)

23:39:58 INFO New client requested URL: /status/sse (method: GET)

23:40:12 INFO New client requested URL: /udp/224.1.100.90:11111 (method: GET)

23:40:12 DEBUG Parsed RTP URL: mcast=224.1.100.90:11111

23:40:12 DEBUG Created RTP service from URL: /udp/224.1.100.90:11111

23:40:12 INFO Multicast: Successfully joined group

23:40:12 DEBUG Multicast: Socket registered with epoll

23:40:12 DEBUG FCC State: INIT → MCAST_ACTIVE (Direct multicast)

23:40:13 ERROR Multicast: No data received for 1 seconds, closing connection

23:40:13 DEBUG RTSP: Cleanup called in state 0, skipping (already cleaning up or done)

23:40:13 DEBUG RTSP: Session cleanup complete

23:40:13 DEBUG Multicast socket closed

23:40:14 INFO New client requested URL: /udp/224.1.100.90:11111 (method: GET)

23:40:14 DEBUG Parsed RTP URL: mcast=224.1.100.90:11111

23:40:14 DEBUG Created RTP service from URL: /udp/224.1.100.90:11111

23:40:14 INFO Multicast: Successfully joined group

23:40:14 DEBUG Multicast: Socket registered with epoll

23:40:14 DEBUG FCC State: INIT → MCAST_ACTIVE (Direct multicast)

23:40:15 ERROR Multicast: No data received for 1 seconds, closing connection

23:40:15 DEBUG RTSP: Cleanup called in state 0, skipping (already cleaning up or done)

23:40:15 DEBUG RTSP: Session cleanup complete

23:40:15 DEBUG Multicast socket closed

23:40:25 INFO New client requested URL: /udp/224.1.100.90:11111 (method: GET)

23:40:25 DEBUG Parsed RTP URL: mcast=224.1.100.90:11111

23:40:25 DEBUG Created RTP service from URL: /udp/224.1.100.90:11111

23:40:25 INFO Multicast: Successfully joined group

23:40:25 DEBUG Multicast: Socket registered with epoll

23:40:25 DEBUG FCC State: INIT → MCAST_ACTIVE (Direct multicast)

23:40:26 ERROR Multicast: No data received for 1 seconds, closing connection

23:40:26 DEBUG RTSP: Cleanup called in state 0, skipping (already cleaning up or done)

23:40:26 DEBUG RTSP: Session cleanup complete

23:40:26 DEBUG Multicast socket closed


--【肆】--:

佬哥还在用吗,稳定吗?想装在家里电视给老人看。家里两层两台电视,楼下用了运营商的电视盒子,楼上电视也想搞IPTV看


--【伍】--:

在用的,很稳定,需要开通iptv才能用组播源


--【陆】--:

吃上传流量哇,跨网就很难受,我现在就出现了移动联通跨网速度等同0了


--【柒】--:

就是你的 rtp2httpd http://ip:端口/playlist.m3u


--【捌】--:

前两天刚做了个影视软件内置IPTV今天就刷到佬了


--【玖】--:

感谢分享了


--【拾】--:

大佬,是否能转发“rtsp”协议的?
这个文件的路径是什么?我部署在飞牛的docker里,找不到文件配置
image848×363 48.1 KB
image790×630 22.1 KB


--【拾壹】--:

想向大佬咨询个问题 我在老家有iptv 新家 没有iptv 但是我老家和新家都用的openwrt 装了 zerotier 已经把两个局域网连接在一起了 这种情况下 使用这个 工具 能在新家看老家的iptv吗


--【拾贰】--: jsq2627:

可以临时把 iptv 所在防火墙区域入站设为接受,看是否能通

好的,我试试,谢谢回复


--【拾叁】--:

看起来是没有收到组播流。确认一下iptv网络是否成功接入。是否把“上游网络接口”配置项设为 iptv 接口?


--【拾肆】--:

防火墙也需要检查一下,可以临时把 iptv 所在防火墙区域入站设为接受,看是否能通


--【拾伍】--:

部署上了,感觉还挺快的,web都秒播级了。就是不敢开公网,上传量太大了,随便一个频道都是 8.97 Mbps左右。感觉公网看久了会被限速


--【拾陆】--:

可以。在老家把iptv网接入openwrt,用这个工具组播转单播,在新家直接访问转换出来的 http 单播地址就行


--【拾柒】--:

有一阵没折腾iptv了,看到这个帖子又想试试了


--【拾捌】--:

支持大佬!


--【拾玖】--:

是否可以贴一下日志,切到 DEBUG 级别

问题描述:

经常折腾 IPTV 的朋友应该知道,有本地 IPTV 组播源 + 组播转单播工具 + OpenWRT 路由器,在电脑、手机上搭配 APTV 等播放器,就可以看当地 IPTV 电视直播。而且因为走的是运营商 IPTV 网络,稳定性极高。

平时大家常用的组播转单播工具有 udpxy、msd_lite 等,这次我要介绍一下我编写的这个工具 rtp2httpd,一定是目前功能最强的。

项目地址 GitHub - stackia/rtp2httpd: Multicast RTP/RTSP to Unicast HTTP stream converter, optimized for China IPTV (欢迎点进查看完整介绍)

这个工具除了基本的组播转单播功能,还实现了:

  • FCC (快速频道切换):极快的换台速度,在我以前发在 V2EX 的一篇帖子有介绍过
  • RTSP 转 HTTP:可以把抓到的 IPTV RTSP 时移源转换成 HTTP 提供,获得更好的播放器兼容性
  • 外部 M3U 转换
  • 内置网页播放器

Web UI 实时状态监控

502245437-8838ee26-aa97-4d31-8031-afe8998a7fba1920×1347 188 KB

快速换台 + 时移回看

https://github.com/user-attachments/assets/a8c9c60f-ebc3-49a8-b374-f579f8e34d92

内置播放器

https://github.com/user-attachments/assets/d676b8c1-7017-48a1-814c-caab0054b361

25 条 1080p 组播流同时播放,CPU/内存占用极低

https://github.com/user-attachments/assets/fedc0c28-f9ac-4675-9b19-a8efdd062506

网友解答:
--【壹】--:

佬,私一下怎样抓取广电源


--【贰】--:

image1440×696 25.8 KB
大佬,我部署成功后用UDP是这样的啊,是我哪里的问题啊?是udp的网址问题吗


--【叁】--:

23:32:23 INFO Status tracking initialized

23:32:23 INFO Listening on 0.0.0.0 port 5140

23:32:23 INFO Listening on :: port 5140

23:32:23 INFO Zero-copy: Using regular send (default). Enable zerocopy-on-send for better performance on supported devices.

23:32:23 INFO Server initialization complete, ready to accept connections

23:32:24 INFO New client requested URL: /status (method: GET)

23:32:24 INFO New client requested URL: /status/sse (method: GET)

23:39:57 INFO New client requested URL: /status (method: GET)

23:39:58 INFO New client requested URL: /status/sse (method: GET)

23:40:12 INFO New client requested URL: /udp/224.1.100.90:11111 (method: GET)

23:40:12 DEBUG Parsed RTP URL: mcast=224.1.100.90:11111

23:40:12 DEBUG Created RTP service from URL: /udp/224.1.100.90:11111

23:40:12 INFO Multicast: Successfully joined group

23:40:12 DEBUG Multicast: Socket registered with epoll

23:40:12 DEBUG FCC State: INIT → MCAST_ACTIVE (Direct multicast)

23:40:13 ERROR Multicast: No data received for 1 seconds, closing connection

23:40:13 DEBUG RTSP: Cleanup called in state 0, skipping (already cleaning up or done)

23:40:13 DEBUG RTSP: Session cleanup complete

23:40:13 DEBUG Multicast socket closed

23:40:14 INFO New client requested URL: /udp/224.1.100.90:11111 (method: GET)

23:40:14 DEBUG Parsed RTP URL: mcast=224.1.100.90:11111

23:40:14 DEBUG Created RTP service from URL: /udp/224.1.100.90:11111

23:40:14 INFO Multicast: Successfully joined group

23:40:14 DEBUG Multicast: Socket registered with epoll

23:40:14 DEBUG FCC State: INIT → MCAST_ACTIVE (Direct multicast)

23:40:15 ERROR Multicast: No data received for 1 seconds, closing connection

23:40:15 DEBUG RTSP: Cleanup called in state 0, skipping (already cleaning up or done)

23:40:15 DEBUG RTSP: Session cleanup complete

23:40:15 DEBUG Multicast socket closed

23:40:25 INFO New client requested URL: /udp/224.1.100.90:11111 (method: GET)

23:40:25 DEBUG Parsed RTP URL: mcast=224.1.100.90:11111

23:40:25 DEBUG Created RTP service from URL: /udp/224.1.100.90:11111

23:40:25 INFO Multicast: Successfully joined group

23:40:25 DEBUG Multicast: Socket registered with epoll

23:40:25 DEBUG FCC State: INIT → MCAST_ACTIVE (Direct multicast)

23:40:26 ERROR Multicast: No data received for 1 seconds, closing connection

23:40:26 DEBUG RTSP: Cleanup called in state 0, skipping (already cleaning up or done)

23:40:26 DEBUG RTSP: Session cleanup complete

23:40:26 DEBUG Multicast socket closed


--【肆】--:

佬哥还在用吗,稳定吗?想装在家里电视给老人看。家里两层两台电视,楼下用了运营商的电视盒子,楼上电视也想搞IPTV看


--【伍】--:

在用的,很稳定,需要开通iptv才能用组播源


--【陆】--:

吃上传流量哇,跨网就很难受,我现在就出现了移动联通跨网速度等同0了


--【柒】--:

就是你的 rtp2httpd http://ip:端口/playlist.m3u


--【捌】--:

前两天刚做了个影视软件内置IPTV今天就刷到佬了


--【玖】--:

感谢分享了


--【拾】--:

大佬,是否能转发“rtsp”协议的?
这个文件的路径是什么?我部署在飞牛的docker里,找不到文件配置
image848×363 48.1 KB
image790×630 22.1 KB


--【拾壹】--:

想向大佬咨询个问题 我在老家有iptv 新家 没有iptv 但是我老家和新家都用的openwrt 装了 zerotier 已经把两个局域网连接在一起了 这种情况下 使用这个 工具 能在新家看老家的iptv吗


--【拾贰】--: jsq2627:

可以临时把 iptv 所在防火墙区域入站设为接受,看是否能通

好的,我试试,谢谢回复


--【拾叁】--:

看起来是没有收到组播流。确认一下iptv网络是否成功接入。是否把“上游网络接口”配置项设为 iptv 接口?


--【拾肆】--:

防火墙也需要检查一下,可以临时把 iptv 所在防火墙区域入站设为接受,看是否能通


--【拾伍】--:

部署上了,感觉还挺快的,web都秒播级了。就是不敢开公网,上传量太大了,随便一个频道都是 8.97 Mbps左右。感觉公网看久了会被限速


--【拾陆】--:

可以。在老家把iptv网接入openwrt,用这个工具组播转单播,在新家直接访问转换出来的 http 单播地址就行


--【拾柒】--:

有一阵没折腾iptv了,看到这个帖子又想试试了


--【拾捌】--:

支持大佬!


--【拾玖】--:

是否可以贴一下日志,切到 DEBUG 级别