Skip to content

v2.0.0

Choose a tag to compare

@stackia stackia released this 30 Sep 18:54
· 373 commits to main since this release

v2.0.0 是一个里程碑版本,带来了全面的架构重构和重大功能更新。本版本相比 v1.1.1 实现了质的飞跃,新增 RTSP 协议支持、引入现代化的测试框架、大幅优化性能,并显著增强了代码质量和可维护性。

AI 在本项目编写中起了至关重要的作用。

🎯 重大新功能

🌟 RTSP 流支持(核心特性)

v2.0.0 的最大亮点是完整实现了 RTSP/RTP 协议栈,使 rtp2httpd 成为一个真正的多协议流媒体网关:

  • 完整的 RTSP 客户端实现:支持 DESCRIBE、SETUP、PLAY、TEARDOWN 等标准 RTSP 方法
  • 双传输模式支持
    • RTP over UDP(标准模式)
    • RTP over TCP(适用于受限网络环境)
  • 智能会话管理:自动处理 RTSP 会话生命周期,包括超时重连和资源清理
  • 时区兼容性:新增完整的时区处理模块,支持 IPTV 时移回看功能
  • 应用场景
    • 将 IPTV RTSP 时移源转换为 HTTP 流进行回看
    • 将家庭网络摄像机的 RTSP 流转换为 HTTP 流,方便在 IPTV 播放器中观看
    • 统一各类流媒体源到 HTTP 协议

⚡ 性能优化与现代化

  • 优化编译标志:新增 -O3 优化选项支持,显著提升运行效率
  • 缓冲区管理:引入 buffer_config.h 统一管理各类缓冲区配置
  • 内存优化:重构数据结构,减少内存占用和碎片
  • 网络优化
    • 启用 TCP_NODELAY,降低延迟
    • 优化组播绑定逻辑,提升稳定性

🧪 测试与质量保障

建立了完整的自动化测试体系,大幅提升代码质量。

📦 架构重构

模块化设计

将原有的单体代码重构为清晰的模块化架构:

模块 文件 功能描述
HTTP 处理 http.c/h HTTP 协议处理、请求解析、响应生成(1150+ 行全新代码)
RTSP 客户端 rtsp.c/h RTSP 协议实现、会话管理(1057+ 行全新代码)
流管理 stream.c/h 统一的流抽象层、多协议支持(377+ 行全新代码)
FCC 快速换台 fcc.c/h FCC 协议实现、NAT 穿透(637+ 行全新代码)
组播支持 multicast.c/h 组播订阅、接口绑定(110+ 行全新代码)
RTP 处理 rtp.c/h RTP 包解析、验证(99+ 行全新代码)
时区处理 timezone.c/h 时区转换、时移支持(448+ 行全新代码)
配置管理 configuration.c/h 配置解析、参数验证(重构 286 行)

代码质量提升

  • 代码规范:严格遵循 C99 标准,启用全面的编译警告
  • 错误处理:完善的错误处理和资源清理机制
  • 调试支持:增强的日志系统,支持多级别详细输出
  • 文档完善
    • 更新 README 文档(+389 行)
    • 新增 TESTING.md 测试文档
    • 完善命令行参数文档

🚀 OpenWrt 支持增强

LuCI 界面改进

  • 配置选项扩展:支持所有新增配置参数
  • 国际化支持:完善中英文语言包
  • ACL 权限优化:细化权限控制
  • 启动脚本增强:支持配置文件加载

打包优化

  • 依赖更新:优化依赖关系
  • 多架构支持:完善各架构编译配置
  • CI/CD 自动化:自动构建 IPK 包

🔄 兼容性说明

向后兼容

  • ✅ 完全兼容原有 RTP/UDP 转发功能
  • ✅ 保持 UDPxy URL 格式兼容
  • ✅ 命令行参数向下兼容

新增特性

  • ✨ RTSP 流支持(全新功能)
  • ✨ 配置文件支持(可选)

升级建议

  1. 直接升级:v1.1.1 用户可直接升级,无需修改配置
  2. 功能探索:尝试新的 RTSP 流转发功能

🐛 问题修复

  • 修复 RTP 包验证逻辑,增强稳定性
  • 改进组播接口绑定,解决多网卡环境下的问题
  • 优化内存管理,修复潜在内存泄漏
  • 完善错误处理,提升异常情况下的鲁棒性