rtp2httpd 是一个多媒体流转发服务器。本项目是 oskar456/rtp2httpd 的完全重构版本,在原项目基础上加入了许多新功能,专为中国大陆 IPTV 环境设计。
rtp2httpd 支持将组播 RTP/UDP 流、RTSP 流转换为 HTTP 单播流,并实现了运营商级的 FCC(Fast Channel Change)快速换台协议,可以作为 udpxy 和 msd_lite 的无缝替代,为 IPTV 用户提供接近原生机顶盒的观看体验。
核心功能特性
多协议支持
- 组播 RTP/UDP 转单播 HTTP:将组播 RTP/UDP 流转换为标准 HTTP 流
- UDPxy 兼容性:完全兼容 UDPxy URL 格式
- RTSP 转 HTTP 视频流:完整支持 RTSP/RTP 协议栈,包括 TCP 和 UDP 传输模式
- 可以实现 IPTV RTSP 时移源的回看
- M3U 播放列表集成:支持 M3U/M3U8 格式,自动识别并转换节目地址,提供标准化的播放列表
- 支持外部 M3U URL
- 智能识别 RTP/RTSP URL 并转换为 HTTP 代理格式
- 自动处理 catchup-source 时移回看地址
- 通过
/playlist.m3u访问转换后的播放列表
- 频道快照:支持通过 HTTP 请求快速获取频道的快照图片,降低播放端解码压力
FCC 快速换台技术
- 支持运营商 FCC 协议:搭配运营商 FCC 服务器,实现毫秒级换台响应,媲美原生 IPTV 机顶盒
- 快速解码:FCC 保证了换台时迅速提供 IDR 帧,可供播放器立即解码
实时状态监控
- Web 状态页面:通过浏览器访问
/status查看实时运行状态 - 客户端连接统计:显示每个连接的 IP、状态、带宽使用、传输数据量
- 系统日志查看:实时查看服务器日志,支持动态调整日志级别
- 远程管理功能:通过 Web 界面强制断开客户端连接
内置播放器
- 浏览器直接使用:内置基于 Web 的现代化播放器界面,可以在浏览器直接打开播放
- 快速起播:搭配 FCC 可实现快速起播、快速换台
- 支持时移和回看:支持 EPG 电子节目单,支持时移和回看(有 RTSP 回看源时)
- 零资源占用:纯 Web 前端实现,对 rtp2httpd 运行几乎没有资源占用(无解码转码开销)
高性能优化
- 非阻塞 IO 模型:使用 epoll 事件驱动,高效处理大量并发连接
- 多核优化:支持多 worker 进程,充分利用多核 CPU 提高最大吞吐量
- 零拷贝技术:支持 Linux 内核 MSG_ZEROCOPY 特性,避免数据在用户态和内核态之间的拷贝
- 智能批量发送:自动积攒小包后批量发送,减少系统调用开销 90%,同时兼顾低延时
- Buffer Pool 管理:预分配缓冲池,避免频繁内存分配,多客户端根据负载动态共享
- 高并发支持:单个 worker 可支持 100+ 并发流媒体客户端
- 纯 C 编写:使用纯 C 语言编写,零依赖,小巧简洁
- 程序大小仅 376KB,并内置了 Web 播放器所有前端资源