介绍一下我写的 IPTV 组播转单播工具 rtp2httpd,支持 FCC 快速换台,RTSP 转 HTTP,自带播放器
- 内容介绍
- 文章标签
- 相关推荐
经常折腾 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 级别

