外观
rtp2httpd 部署与配置
约 643 字大约 2 分钟
2026-08-26
概述
rtp2httpd 是一款 IPTV 流媒体转发服务器,将组播 RTP 流转换为 HTTP 单播,供全屋设备播放。本文记录在 Debian 13 上部署 rtp2httpd 的完整流程:配置组播接收网卡、获取二进制(三种方式任选)、以 systemd 托管启动,并验证流是否正常。
Github:https://github.com/stackia/rtp2httpd
一、前置条件
系统为 Debian 13(其他 Debian/Ubuntu 同理)
组播网卡
ens224已由 ESXi 添加(vIPTV vSwitch),确认存在:ip link show ens224
二、网卡配置
编辑 SSH 配置文件:
nano /etc/netplan/99-custom.yaml写入配置参数:
network: version: 2 ethernets: ens192: dhcp4: false dhcp6: false addresses: - 10.0.0.8/24 gateway4: 10.0.0.1 nameservers: addresses: - 10.0.0.2 ens224: dhcp4: false dhcp6: false addresses: - 172.16.1.1/24保存并应用:
chmod 600 /etc/netplan/99-custom.yaml netplan apply验证:
ip -br addr show ens224 # 应显示 172.16.1.1/24
重要
ens224 必须有 IPv4 地址(实测:无 IP 时 join 失败),私有段任意(光猫推流不看源 IP 网段);不加网关。
三、获取 rtp2httpd
方式 A(推荐):官方 release 静态二进制
最简单,无需任何依赖,自动获取最新版。
VER=$(curl -s https://api.github.com/repos/stackia/rtp2httpd/releases/latest | grep -oP '"tag_name": *"\K[^"]+')
curl -L -o /usr/local/bin/rtp2httpd \
"https://github.com/stackia/rtp2httpd/releases/download/${VER}/rtp2httpd-${VER#v}-x86_64"
chmod +x /usr/local/bin/rtp2httpd笔记
官方 release 的 rtp2httpd-<版本>-x86_64 是完全静态编译(ldd 显示 not a dynamic executable)——任何 Linux 直接跑,不需要 musl/编译,版本自动跟随最新(asset 命名规则 = tag 去掉 v 前缀 + -x86_64)。无 .deb 包,x86_64 静态二进制即 Debian 可用形态。
方式 B:从官方镜像提取
需要有 docker 的机器,如 Ubuntu。
docker pull ghcr.io/stackia/rtp2httpd:latest
docker create --name r2h-tmp ghcr.io/stackia/rtp2httpd:latest
docker cp r2h-tmp:/usr/local/bin/rtp2httpd ./rtp2httpd
docker rm r2h-tmp
scp rtp2httpd root@10.0.0.8:/usr/local/bin/rtp2httpd方式 C:源码编译
iptv 上直接编,不需要 docker。
apt update && apt install -y git cmake gcc make
git clone https://github.com/stackia/rtp2httpd.git /tmp/rtp2httpd-src
cd /tmp/rtp2httpd-src
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
install -m755 build/rtp2httpd /usr/local/bin/rtp2httpd四、启动服务
- 配置文件:
nano /etc/systemd/system/rtp2httpd.service写入配置参数:
[Unit] Description=RTP to HTTP IPTV Service After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/usr/local/bin/rtp2httpd \ --noconfig \ --verbose 2 \ --listen 0.0.0.0:5140 \ --maxclients 20 \ --upstream-interface-multicast ens224 Restart=always [Install] WantedBy=multi-user.target加载并启动服务:
systemctl daemon-reload systemctl enable --now rtp2httpd检查服务状态:
systemctl status rtp2httpd --no-pager
重要
关键参数:--upstream-interface-multicast ens224(从光猫网卡发 IGMP join)——漏了它就收不到流(503)。
五、验证
# 服务状态检查
curl http://127.0.0.1:5140/status
# 正常:返回状态页
# RTP 流检测
curl -o /dev/null -w "%{http_code} %{size_download}\n" \
http://127.0.0.1:5140/rtp/239.49.8.19:9614
# 正常:HTTP 200,size_download 持续增长(约 1 MB/s+)
# 全屋播放地址
http://10.0.0.8:5140/rtp/239.49.8.19:9614