V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jsq2627
V2EX  ›  宽带症候群

介绍一下我写的 IPTV 组播转单播工具 rtp2httpd-modern

  •  
  •   jsq2627 · 7 天前 · 3075 次点击

    经常折腾 IPTV 的朋友应该知道,有本地 IPTV 组播源 + 组播转单播工具 + OpenWRT 路由器,在电脑、手机上搭配 APTV 等播放器,就可以看当地 IPTV 电视直播。而且因为走的是运营商 IPTV 网络,稳定性极高。互联网上公开能找到的直播源,平时勉强还算稳定,遇到春晚、阅兵这种大型活动基本都歇菜了。

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

    项目地址 https://github.com/stackia/rtp2httpd (欢迎点进查看完整介绍)

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

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

    两个演示视频:

    快速换台 + 时移回看

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

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

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

    Web UI 实时状态监控

    Image

    顺便附上我本地(海南电信 IPTV )的抓源脚本和 m3u8: https://github.com/stackia/hainan-telecom-iptv-updater

    53 条回复    2025-10-11 17:52:53 +08:00
    freebsdjlu
        1
    freebsdjlu  
       7 天前
    组播必须开通 iptv 服务才可以么
    v1
        2
    v1  
       7 天前   ❤️ 1
    @freebsdjlu 看运营商和省份,比如上海移动的,你只要是移动宽带,用别人抓包出来的组播地址也可以用
    Damn
        3
    Damn  
       7 天前 via iPhone
    澄迈的道友
    Ccf
        4
    Ccf  
       7 天前
    济南联通有懒人版么
    datou
        5
    datou  
       7 天前
    我电信的机顶盒还要 pppoe 一下
    Kale
        6
    Kale  
       6 天前
    @Ccf #4 蹲一个
    Kale
        7
    Kale  
       6 天前
    谢谢 OP ,请问之前开通过 IPTV ,但是一直用不了,因为电视机那里没留网线口,用这个可以吗?路由器是软路由 openwrt
    jsq2627
        8
    jsq2627  
    OP
       6 天前 via iPhone
    @Kale 可以,这也是大多数人折腾 iptv 内网融合的原因。重点是搞清楚本地运营商认证方式,在 openwrt 上接通 iptv 网络,设置好路由策略,具体搜索 iptv 内网融合
    ajyz
        9
    ajyz  
       6 天前
    看着很强大,先支持一下
    zli
        10
    zli  
       6 天前
    请问一下 OP ,

    25 条 1080p 组播流同时播放演示视频里

    用的是哪款播放器?
    jsq2627
        11
    jsq2627  
    OP
       6 天前
    @zli mac 端的 APTV https://aptv.wegic.app
    zli
        12
    zli  
       6 天前
    @jsq2627 多谢~
    piero66
        13
    piero66  
       6 天前
    star 了
    109653VIP
        14
    109653VIP  
       6 天前
    有没有单文件的编译
    Archeb
        15
    Archeb  
       6 天前
    感谢开源!虽然广东电信这边支持 RTSP 单播,但是有这么一个现代化的项目肯定能造福很多 IPTV 用户
    Rinndy
        16
    Rinndy  
       6 天前 via iPhone
    不知道为什么播放 1 分钟左右就断开重连,正常吗
    iloveyou1985
        17
    iloveyou1985  
       6 天前 via iPhone
    我是 x86 的 ikuai 软路由,可以用吗?
    foxk
        18
    foxk  
       6 天前
    Nice ,必须 Star
    lvxudong
        19
    lvxudong  
       5 天前
    好东西
    jsq2627
        20
    jsq2627  
    OP
       5 天前
    ikuai 我了解比较少。可以尝试自己编译,图省事的话可以尝试 docker 方案
    x86 openwrt 肯定是可以的,我自己就是 x86 openwrt 软路由
    jsq2627
        21
    jsq2627  
    OP
       5 天前
    jsq2627
        22
    jsq2627  
    OP
       5 天前
    @Rinndy 不正常,可以开启 debug log ,把日志发到 github issues 我来看看。
    jsq2627
        23
    jsq2627  
    OP
       5 天前
    @109653VIP 这个是传统 c 项目,编译好的单文件没什么可移植性,所以不提供
    heiher
        24
    heiher  
       5 天前 via Android
    scegg
        25
    scegg  
       5 天前
    开始播放一分钟左右,会重新缓冲一次,后续观察了 3 分钟不会再有缓冲问题。
    再换个频道还是一样一分钟后重新缓冲一次。
    qiankunyu
        26
    qiankunyu  
       4 天前 via Android
    弄完了电视和手机都没问题,电脑 potplayer 报错
    jsq2627
        27
    jsq2627  
    OP
       4 天前
    @Rinndy @scegg 今天更新了 v2.2.0 版本,试一试问题是否存在。还有问题的话可以发一下 log (改成 debug 级别) 到 github issues
    scegg
        28
    scegg  
       4 天前
    @jsq2627 测试 V2.2.0 ,并在同一个环境( openwrt )下测试了 udpxy 。深圳电信 IPTV 。
    延迟低的频道:会在打开几秒后重新缓冲一次,之后一切正常。
    延迟高( 1000ms+)的频道:播放中会明显出现解码错误导致色块,帧内容前后重叠等(对于字幕区域特别明显)。
    udpxy 测试同样的频道没有类似的问题,可能实现的机制有所不同?
    yutian12345
        29
    yutian12345  
       4 天前 via Android
    直接转就可以快速换台吗
    YGBlvcAK
        30
    YGBlvcAK  
       4 天前
    非常感谢大佬的分享,不会编译,求个 x86 的二进制包,同时求个北京联通和移动的 FCC 地址?
    yutian12345
        31
    yutian12345  
       3 天前
    同样沒有 luci 显示,而且修改完配置用命令重启也没用
    能弄个旧版本兼容不
    yutian12345
        32
    yutian12345  
       3 天前
    搜了一下提示 MSG_ZEROCOPY support is required
    应该是内核太老,没法搞了
    FakerLeung
        33
    FakerLeung  
       3 天前
    家里有 IPtv ,怎么抓包出来?因为我爸希望在外出旅游时也想看?能说下怎么用吗
    qiankunyu
        34
    qiankunyu  
       3 天前 via Android
    有大佬抓一下江苏电信最新的 fcc 地址吗
    jsq2627
        35
    jsq2627  
    OP
       3 天前
    @yutian12345 最低内核要求 4.14 ,应该是太老了。项目强依赖内核的 MSG_ZEROCOPY 特性,没法继续向下兼容了
    y1y1
        36
    y1y1  
       3 天前
    原来 FCC 是这个意思,挺不错的工具
    y1y1
        37
    y1y1  
       3 天前
    @Ccf
    @Kale

    山东联通直接看单播,自己 github 搜一下吧
    jsq2627
        38
    jsq2627  
    OP
       3 天前
    @heiher 谢谢建议,已经集成,现在在最新 release 提供了静态编译版本
    jsq2627
        39
    jsq2627  
    OP
       3 天前
    @109653VIP 单文件现在已在 release 页面提供
    CHNTDCS
        41
    CHNTDCS  
       3 天前
    真不错,晚上有空了替换了 udpxy 试试看效果。
    YGBlvcAK
        42
    YGBlvcAK  
       3 天前
    @jsq2627 非常感谢,可以用,没问题👍,现在就差个 FCC 了😂
    wolonggl
        43
    wolonggl  
       3 天前
    建议增加一个播放日志记录功能
    siriussilen
        44
    siriussilen  
       2 天前
    Nice Work
    m1s4k1
        45
    m1s4k1  
       2 天前
    对比 udpxy 有哪些优势呢, 有替换的意愿
    jsq2627
        46
    jsq2627  
    OP
       2 天前
    @m1s4k1 性能改进,FCC/RTSP 支持,现代化 Web UI
    wolonggl
        47
    wolonggl  
       2 天前
    我这边测试播放电信 iptv 组播,出现频繁锻炼,udpxy 和 msd_lite 正常
    日志:
    18:39:28[ERROR]Multicast: No data received for 1 seconds, closing connection
    18:41:34[ERROR]Multicast: No data received for 1 seconds, closing connection
    18:41:53[ERROR]Multicast: No data received for 1 seconds, closing connection
    18:42:13[ERROR]Multicast: No data received for 1 seconds, closing connection
    18:42:37[ERROR]Multicast: No data received for 1 seconds, closing connection
    q197
        48
    q197  
       1 天前 via Android
    太强了。我不太懂这类软件的技术,想请教一下:我以前用树莓派部署 udpxy 转发 iptv 为 http ,发现其实性能消耗很大,同时开 4 个台树莓派 CPU 就跑满了。不知道是为什么?这个组播转 http 需要视频编码或者封装吗?不知道楼主开发的软件性能上和 udpxy 相比提升怎样,树莓派能不能多带几路甚至开几十几百个不卡
    jsq2627
        49
    jsq2627  
    OP
       1 天前
    @q197 udpxy 使用的是 fork + select + 阻塞 IO 这一套古典网络编程模式,多几路连接对 CPU / 内存的开销都比较高。
    我开发的这个程序使用 multi worker + epoll + 非阻塞 IO 这套现代网络编程模式,理论上性能和占用会比 udpxy 好很多。

    组播转 http 不涉及视频解码,只涉及解 RTP 封装,但是需要的计算量很少,本身不应该占用太多 CPU 。

    树莓派的性能应该是优于许多 ARM 路由器的,我觉得带十几路应该没问题(我自己没有树莓派,纯推测)
    jsq2627
        50
    jsq2627  
    OP
       1 天前
    @scegg 尝试一下最新版,应该解决了花屏问题
    yeh
        51
    yeh  
       1 天前
    MSG_ZEROCOPY support is required

    群晖内核太老了,已经搞不上去了
    scegg
        52
    scegg  
       18 小时 17 分钟前
    @jsq2627 2.6.0 版本花屏已经无法复现。
    hjj0529
        53
    hjj0529  
       18 小时 5 分钟前
    支持,广西电信测试,好用。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2638 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:58 · PVG 11:58 · LAX 20:58 · JFK 23:58
    ♥ Do have faith in what you're doing.