组播转单播最多的是udpxy,其次是msd,这两个我都有试过,最近又出了个rtp2httpd,项目地址:
https://github.com/stackia/rtp2httpd
今天来部署测试,所用设备openwrt,快速部署说明参见:
https://github.com/stackia/rtp2httpd/blob/main/docs/quick-start.md
一键部署
部署命令:
curl -fsSL https://raw.githubusercontent.com/stackia/rtp2httpd/main/scripts/install-openwrt.sh | sh
实操:
SSH连接openwrt:

粘贴部署命令运行:

输入1选择镜像加速,但是自动一键安装没有适配到我的设备:

然后再release下载ipk手动安装:

虽然安装成功,但是luci界面的服务没有配置菜单,因此也算安装失败。
因此考虑直接用docker安装方式。
Docker安装
安装说明见:
https://github.com/stackia/rtp2httpd/blob/main/docs/installation.md
部署命令:
docker run --network=host --rm \
-v /path/to/rtp2httpd.conf:/etc/rtp2httpd.conf:ro \
ghcr.io/stackia/rtp2httpd:latest
实操:
docker run -d \
--name rtp2httpd \
--network=host \
--restart=unless-stopped \
-v /etc/docker/rtp2http/rtp2httpd.conf:/etc/rtp2httpd.conf:ro \
ghcr.io/stackia/rtp2httpd:latest
容器正常运行,能访问到状态页,但是无法正常获取到组播流,即使修改配置文件还是不行。
二进制文件部署
以上貌似都失败了,最后考虑用二进制文件部署。下载地址:
https://github.com/stackia/rtp2httpd/releases
实操:
查看自己设备架构
uname -m
输出为aarch64:
root@QWRT:~# uname -m
aarch64
因此下载aarch64架构的二进制文件

下载后,上传到自己openwrt路由器,如我上传到/opt文件夹下:

修改配置文件,默认配置文件路径/etc/rtp2httpd.conf,详细参数配置说明:
https://github.com/stackia/rtp2httpd/blob/main/docs/configuration.md
这里需要修改上游网络接口配置参数:
# Interface configuration for upstream media streams
# Default interface for all upstream traffic (lowest priority, used when specific interface not set)
upstream-interface = pppoe-itv #修改为udpxy配置的接口名称
建议修改参数:r2h-token
# Authentication token for HTTP requests (default none)
# When set, all HTTP requests must include r2h-token query parameter with matching value
r2h-token = 2025 #如修改为自己的鉴权参数
设定此参数,后续组播转单播需要带上参数?r2h-token=2025才能正常使用。
运行二进制文件:
cd /opt
chmod +x rtp2httpd-3.5.0-beta.0-aarch64
./rtp2httpd-3.5.0-beta.0-aarch64
正常访问后台:

播放地址也需要携带?r2h-token,如:
http://192.168.2.1:5140/udp/225.0.4.74:7980?r2h-token=2025
网页播放器,路径/player,可以在配置文件添加列表,如

网页播放:

支持EPG展示。
结语
正如作者说的,rtp2httpd可以完美无缝替换udpxy,msd_lite,但是部署起来还是没那么容易,可能是我的设备原因,但是其支持FCC、支持鉴权访问、网页播放器等还是很不错的。
建议:优先openwrt一键部署,如果失败直接二进制文件运行即可。