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

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

  •  
  •   jsq2627 · 2025 年 10 月 5 日 · 12345 次点击
    这是一个创建于 103 天前的主题,其中的信息可能已经有所发展或是发生改变。

    经常折腾 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

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

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

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

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

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

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

    群晖内核太老了,已经搞不上去了
    scegg
        52
    scegg  
       2025 年 10 月 11 日
    @jsq2627 2.6.0 版本花屏已经无法复现。
    hjj0529
        53
    hjj0529  
       2025 年 10 月 11 日
    支持,广西电信测试,好用。
    dantesv2
        54
    dantesv2  
       2025 年 10 月 12 日
    加了 fcc 服务器换台也比 msd_lite 慢很多,不知道什么问题.
    sp670
        55
    sp670  
       2025 年 10 月 13 日
    @hjj0529 能分享一下广西电信的 fcc 吗?机顶盒拆了好久了,懒得拿出来抓包了
    wakaba94
        56
    wakaba94  
       2025 年 10 月 13 日
    遇到了一个奇怪问题,PotPlayer 播放时会只有音频流没有视频流,查看 debug 和 info 日志都和正常频道没区别,然后切换频道再切回去就正常了。
    hjj0529
        57
    hjj0529  
       2025 年 10 月 13 日
    @sp670 测试了一下,广西电信用这个插件,效果不是很明显,跟直接播放组播或者单播差距不大,不知道是我播放器问题还是什么问题,看日志是能成功的。 fcc:113.15.79.82:8027
    hjj0529
        58
    hjj0529  
       2025 年 10 月 13 日
    @wakaba94 potplayer 我也遇到类似问题,但是应该不是这个插件导致,我用 msd-lite 插件也是如此,特别是北京卫视 4K ,我遇到这种问题比较多,似乎是没识别出视频格式和分辨率。
    Withal
        59
    Withal  
       2025 年 10 月 13 日
    @wakaba94 一样,只有 4K 频道碰到过,重载几次才有画面
    Withal
        60
    Withal  
       2025 年 10 月 13 日
    看到支持 docker 了,回去试一下
    sun82kg
        61
    sun82kg  
       2025 年 10 月 13 日
    有没有道友搞一个, 一键抓取 iptv 盒子里节目地址的列表的工具。
    steveny5997
        62
    steveny5997  
       2025 年 10 月 13 日
    北京联通好用,谢谢楼主
    hanguofu
        63
    hanguofu  
       2025 年 10 月 14 日 via Android
    谢谢分享~~~
    wakaba94
        64
    wakaba94  
       2025 年 10 月 14 日
    @hjj0529 很奇怪,我 udpxy 没问题,昨天重新升级一下这个插件和 PotPlayer 之后又不再复现,所以没搞懂到底哪个有问题。
    kongkongmaster
        65
    kongkongmaster  
       2025 年 10 月 14 日
    @sun82kg #61 同求,现在 IPTV 盒子抓包解析还是麻烦
    matoung
        66
    matoung  
       2025 年 10 月 14 日
    点赞 一直在用 udpxy ,抽空试下
    tvirus
        67
    tvirus  
       2025 年 10 月 15 日
    貌似不支持这样的格式 http://192.168.1.1:5140/rtsp/admin:[email protected]:554/live/stream1 ,
    会报错
    8:20:07 AM[ERROR]RTSP: Cannot resolve hostname admin: Unknown host
    8:20:07 AM[ERROR]RTSP: Failed to initiate connection
    jsq2627
        68
    jsq2627  
    OP
       2025 年 10 月 15 日
    @tvirus 谢谢反馈,我修复一下
    zhughe
        69
    zhughe  
       2025 年 10 月 15 日
    先插个眼🤓
    zhujaylon
        70
    zhujaylon  
       2025 年 10 月 16 日
    @steveny5997 可以分享一下北京联通的 fcc 地址吗 感谢
    matoung
        71
    matoung  
       2025 年 10 月 16 日
    陕西电信 FCC 亲测好用,体验提升明显,已经从 udpxy 切换到 rtp2http 了 感谢
    jsq2627
        72
    jsq2627  
    OP
       2025 年 10 月 17 日
    @tvirus 现已支持
    FeranyDev
        73
    FeranyDev  
       2025 年 10 月 18 日
    有考虑过把不同客户端对同一个服务合并到一起吗,现在还是会有两个 udp 链路
    [https://image-uploader.feranydev.com/api/users/daf6b544-b684-4d77-b381-ed9ecb2152d0/images/2025/10/18/20251018084504.png]
    jsq2627
        74
    jsq2627  
    OP
       2025 年 10 月 18 日
    @FeranyDev 虽然是两个连接,但底层组播在 linux 内核是只订阅一份并由内核复制的,并不会花掉两倍带宽,复制开销很小。
    FeranyDev
        75
    FeranyDev  
       2025 年 10 月 18 日
    @jsq2627 是这样呀,也行,就怕出现多个请求。因为两个客户端的播放进度不一样,这样看起来是缓存的原因了
    cbigame0205
        76
    cbigame0205  
       2025 年 10 月 19 日 via iPhone
    安装成功后服务这里找不到应用,软件包这里已安装显示是有的,固件版本 24.10 ,内核 6.6.93 的硬路由
    cbigame0205
        77
    cbigame0205  
       2025 年 10 月 19 日 via iPhone
    而且他不是一直不显示,我最早安装好是有的,后来版本更新了一下,我又一键安装了一下就消失了
    xxgzzzzzz
        78
    xxgzzzzzz  
       2025 年 10 月 19 日
    大哥 这个 webui 能打包进 Linux 二进制文件吗? 非 openwrt 想用来转发多路监控
    xxgzzzzzz
        80
    xxgzzzzzz  
       2025 年 10 月 19 日
    @jsq2627 这个二进制本身就带 webui 还是单独 npm 运行?
    liton
        81
    liton  
       2025 年 10 月 21 日
    webui 有可能加入一键抓取 iptv 盒子里节目地址的列表的工具吗
    ihipop
        82
    ihipop  
       2025 年 10 月 21 日
    不错 udpxy 确实稳定简单 但是 实在是太老了
    jsq2627
        83
    jsq2627  
    OP
       2025 年 10 月 21 日
    @xxgzzzzzz 前端项目是 npm 构建出来,gzip 打包进二进制里面的。前端项目能独立运行 https://github.com/stackia/rtp2httpd/tree/main/web-ui
    jessechoi
        84
    jessechoi  
       2025 年 10 月 21 日
    @cbigame0205 "而且他不是一直不显示,我最早安装好是有的,后来版本更新了一下,我又一键安装了一下就消失了"跟我遇到的一模一样,请问你解决了吗?
    dream7758522
        85
    dream7758522  
       2025 年 10 月 22 日 via Android
    想问一下升级的话咋升级?系统是 openwrt x86
    cbigame0205
        86
    cbigame0205  
       2025 年 10 月 22 日 via iPhone
    @jessechoi 没解决,刷新缓存,重启路由器,启动项里重启,手动安装都试过了,都不显示
    cbigame0205
        87
    cbigame0205  
       2025 年 10 月 22 日
    作者是不是能帮忙看看服务不显示的问题,我看 github 的 Issues 里也有人提过这个问题,本帖里也有其他人,应该是某个共性的问题。
    我的
    固件版本 ImmortalWrt 24.10-SNAPSHOT r33226+3-0dfdb7b25f / LuCI openwrt-24.10 branch 25.170.50544~8fa3810
    内核版本 6.6.93
    jsq2627
        88
    jsq2627  
    OP
       2025 年 10 月 22 日
    @cbigame0205 建议不要太纠结于没有 luci ui ,可以直接编辑 /etc/config/rtp2httpd ,用 /etc/init.d/rtp2httpd restart 来启动

    因为我手上没有 openwrt 24.10 的测试环境,所以暂时不好 debug
    cbigame0205
        89
    cbigame0205  
       2025 年 10 月 22 日
    @jsq2627 因为更新比较频繁的,编辑/etc/config/rtp2httpd 会让设置每次都重置吗
    另外一个主要是有 UI 我可以远程访问我父母家的路由器改设置,通过改文件就比较麻烦了
    还是感谢楼主
    jsq2627
        90
    jsq2627  
    OP
       2025 年 10 月 22 日
    @cbigame0205 不会被覆盖,opkg 在升级时会保留 /etc/config 下被修改的文件不被覆盖
    jsq2627
        91
    jsq2627  
    OP
       2025 年 10 月 22 日
    @cbigame0205 我后面有时间会去测试和适配 24.10 的,作为主流版本肯定不会不管
    cbigame0205
        92
    cbigame0205  
       2025 年 10 月 22 日
    好的,反正 star 项目了,后面再关注,感谢
    jessechoi
        93
    jessechoi  
       2025 年 10 月 22 日
    @jsq2627 我的是 istoreOS ,istore 里有 udpxy 、msd_lite 一键安装运行后很适合小白用户,希望以后 rtp2httpd 也能上架!
    jsq2627
        94
    jsq2627  
    OP
       2025 年 10 月 26 日
    @dream7758522 现在重新运行遍一键安装脚本就可以升级
    jsq2627
        95
    jsq2627  
    OP
       2025 年 10 月 26 日
    @yutian12345
    @yeh

    最新版已经去掉对 MSG_ZEROCOPY 的依赖,现在可以在老内核上运行了
    yutian12345
        96
    yutian12345  
       2025 年 10 月 27 日
    @jsq2627 牛逼,晚上回去试试看
    zjwww
        97
    zjwww  
       2025 年 10 月 27 日
    上海电信这边貌似 vlan85 限速 100m ,1080p 的源最多 8 开,再多就不行了,不知道有没有办法突破。
    jsq2627
        98
    jsq2627  
    OP
       2025 年 10 月 28 日 via iPhone
    @zjwww 100m 怎么听着感觉像被光猫 itv 口限制了。老光猫 itv 口都是百兆
    zjwww
        99
    zjwww  
       2025 年 10 月 28 日
    @jsq2627 应该不是,我是换了 7015tv3 的,2.5G 口以外的所有口应该都是 1000m, 接了两个 itv 设备,一个原配 itv 盒子( 100m 口),一个组转单设备(也是 100m ),两边同时放,算下来就最多 8 路,如果先开了一个 1080p 频道,另外一个设备就打不开 4k 频道了(1080 频道却可以),把一台设备上的 1080p 频道关了,另一台 4k 就可以打开,两边是两个独立的设备,所以我反复测试判断下来,应该是 vlan85 上被电信限制了总的下行 100m ,至少目前上海电信(虹口区)是这样。
    JoeSmith
        100
    JoeSmith  
       2025 年 10 月 29 日
    我来砸一下场子

    有网管交换机的话,完全不需要转单播,用 VLAN 全解决了。

    我家里情况比较复杂,光猫在弱电箱,弱电箱到客厅只有一条线,那么这条线既要给电视盒子用,也要给电视和其他客厅设备用,那咋办呢?我在弱电箱里接了一个交换机,客厅另一个交换机,光猫电视口接到弱电箱交换机上,弱电箱交换机和客厅交换机通过唯一的一根线相连。然后通过 VLAN 设置,在客厅交换机上把 IPTV 和 其他 网络分隔开来。

    具体配置就不赘述了,稍微有那么点烧脑,我的俩交换机还不是同一个牌子的,不过 vlan 的概念都一样。

    如果不需要跨交换机的话,那就更简单了。
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2718 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 12:50 · PVG 20:50 · LAX 04:50 · JFK 07:50
    ♥ Do have faith in what you're doing.