介绍一下我写的 IPTV 组播转单播工具 rtp2httpd-modern - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jsq2627
V2EX    宽带症候群

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

  •  
  •   jsq2627 5 天前 2665 次点击

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

    平时大家常用的组播转单播工具有 udpxy 、msd_lite 等,这次我要介绍一下我编写的这个工具 tp2httpd-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

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

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

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

    山东联通直接看单播,自己 github 搜一下吧
    jsq2627
        38
    jsq2627  
    OP
       1 天前
    @heiher 谢谢建议,已经集成,现在在最新 release 提供了静态编译版本
    jsq2627
        39
    jsq2627  
    OP
       1 天前
    @109653VIP 单文件现在已在 release 页面提供
    CHNTDCS
        41
    CHNTDCS  
       22 小时 46 分钟前
    真不错,晚上有空了替换了 udpxy 试试看效果。
    YGBlvcAK
        42
    YGBlvcAK  
       21 小时 15 分钟前
    @jsq2627 非常感谢,可以用,没问题,现在就差个 FCC 了
    wolonggl
        43
    wolonggl  
       21 小时 2 分钟前
    建议增加一个播放日志记录功能
    siriussilen
        44
    siriussilen  
       17 小时 3 分钟前
    Nice Work
    m1s4k1
        45
    m1s4k1  
       16 小时 13 分钟前
    对比 udpxy 有哪些优势呢, 有替换的意愿/div>
    jsq2627
        46
    jsq2627  
    OP
       15 小时 4 分钟前
    @m1s4k1 性能改进,FCC/RTSP 支持,现代化 Web UI
    wolonggl
        47
    wolonggl  
       9 小时 39 分钟前
    我这边测试播放电信 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
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1175 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 23:34 PVG 07:34 LAX 16:34 JFK 19:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86