Releases: stackia/rtp2httpd
Releases · stackia/rtp2httpd
v3.8.2
v3.8.1
v3.8.0
这个版本存在一些严重 bug,将会稍后在后续版本修复,暂不建议更新
新功能
- 新增 HTTP 反代能力 (http2http)
- 用法见 https://github.com/stackia/rtp2httpd/blob/main/docs/url-formats.md#http-代理
- 主要用途是把 IPTV 内网的 HLS 源转发到局域网或者公网,方便观看
- 目前网页播放器暂时不支持播放 HLS 源,在下个版本将会做适配
r2h-token除了可以通过 URL 参数传递,现在也支持 通过 Cookie 或者 User Agent 来传递- RTSP 现在支持使用 STUN 进行 NAT 穿透
- 配置项见 https://github.com/stackia/rtp2httpd/blob/main/docs/configuration.md#rtsp-nat-穿透
- 使用场景:对于仅支持 UDP Transport 的 RTSP 服务器,当 rtp2httpd 位于 NAT 之后,通过 STUN 也许能够实现 NAT 穿越。
- 借鉴了 plsy1/rtsproxy
问题修复
- 经转换的
playlist.m3u,其中 EPG URL 优先使用压缩版本/epg.xml.gz(原先写死了/epg.xml导致一些客户端加载性能不佳) by @mjl371
文档
- 新增 性能测试报告,对比了 rtp2httpd / msd_lite / udpxy / tvgate 在常见和极限场景下的性能。
v3.7.0
新功能
- 新增配置项
udp-rcvbuf-size用于手动指定 UDP 接收缓冲区大小(默认 512KB)- 频繁遇到丢包花屏可以尝试增大这个选项
- 需要以 root 权限运行才有效(对于 Docker,需要指定
--cap-add=NET_ADMIN) - 在 OpenWrt LuCI UI 也新增了这个选项
UDP 接收缓冲区大小
- 新增 RTP 乱序包重排能力,改善一些网络环境下的乱序包花屏问题
- 开箱即用,无需任何配置
- 新增 FEC 前向纠错功能,在 URL 上指定
?fec=<端口>来启用- 有些运营商支持 FEC 前向纠错,用户观看一个频道时,同时接收两个组播流,一个组播流负责发送 RTP 包,另一个组播流负责发送 FEC 冗余包,当 RTP 流丢包时,可以利用 FEC 流进行恢复。
- FEC 流和 RTP 流使用相同的组播 IP,不同的端口。抓包出来的
ChannelFECPort就是 FEC 端口。 - 由于不同运营商的 FEC 纠错算法有差异,未必能支持所有 FEC 算法,如遇问题请提 issue 反馈(需提供抓包文件)
- URL 示例:
http://<ip>:<port>/rtp/239.253.64.120:5140?fcc=10.255.14.152:8027&fcc-type=huawei&fec=5142
- 一键安装脚本:使用 OpenWrt 自带的
uclient-fetch代替curl避免一些人没有安装curl导致脚本失败
问题修复
- 修复转换后的
playlist.m3u未在 EPG URL 带上r2h-token,导致 EPG 加载失败 by @mjl371 - Web 状态面板不再对每个客户端 URL 重复显示
r2h-token=xxxx,保持 UI 清爽
v3.6.2
- 网页播放器:频道 logo 图片加载使用 no-referrer policy,避免一些网站的防盗链设置导致图片加载失败
- 修复在非常罕见的情况下,RTSP 连接会卡在
RTSP 完成 TEARDOWN状态且一直不会释放 - 设置 UDP RCVBUF 时,尝试使用
SO_RCVBUFFORCE以突破一些固件的默认内核参数net.core.rmem_max限制,可以改善 4K 视频流偶尔花屏马赛克问题 - 修复对于一些特殊的 RTSP 上游,断开连接时出现
RTSP: Socket event handling failed报错
v3.6.1
v3.6.0
新功能
- 新增 r2h-start 参数用来指定 RTSP PLAY 起始时间 by @yydewf
- 优化对反向代理场景的支持,playlist.m3u 现在会总是使用用户实际请求的 host 作为地址前缀。反向代理的具体配置方式请参考 公网访问建议。
- 如果你原先使用
hostname配置项来解决反代地址问题,现在需要改成开启xff配置项并透传X-Forwarded-For / X-Forwarded-Host / X-Forwarded-Proto头(对于 lucky,勾选“万事大吉”选项即可)
- 如果你原先使用
- INFO 日志输出现在会记录客户端的访问 IP:
New client <ip>:<port> requested URL
问题修复
- 改进对 gzipped epg.xml 兼容性 by @taksssss
v3.5.2
v3.5.1
v3.5.0
新功能
- 优化程序的生命周期管理,确保工作进程因各种异常退出时,能够被主进程重启
- 支持配置热重载。rtp2httpd 主进程现在支持以下信号:
- SIGHUP: 重新加载配置文件、重新拉取 M3U/EPG(不会断开已经连接的客户端)
- SIGUSR1: 强制重启所有工作进程(会断开所有已经连接的客户端)
- 对于 OpenWrt,运行后会在
/var/run下写入 pid 文件,方便用户输入信号- 例如:可以通过
kill -HUP $(cat /var/run/rtp2httpd_*.pid)输入 SIGHUP 触发配置热重载
- 例如:可以通过
- 在状态面板新增“服务控制”,目前支持重载配置、重启工作进程、清空日志
问题修复
- 优化网页播放器性能,提升在一些低端设备上的 UI 响应性(例如 LG 电视 📺)
- OpenWrt LuCI 面板,r2h-token 不再使用密码样式输入框,避免触发一些浏览器的自动填充而用户不知情
v4 展望
此版本预计会是 v3 系列最后一个有新功能的版本,后续在 v3 上只会进行 bugfix,作者精力将会聚焦到 v4 开发。
v4 预计将会带来这些新功能:
- RTP / RTSP / HTTP / HLS 任意互转(WebSocket / WebRTC 考虑中)
- 给 OpenWrt 以外的更多平台带来原生插件(爱快、飞牛、Home Assistant 等)
- 增强对反向代理的支持,解决目前在反代后运行出现的各种问题
- 跨平台支持(macOS / Windows):考虑到一些人使用 macOS 作为旁路由,还有一些人自己搭建 Windows NAS
敬请期待。
| 如果这个项目对你有帮助,不妨请作者喝一杯咖啡 ☕️ |
|---|