3个不稳定版本

0.13.0 2024年7月16日
0.12.4 2024年4月8日
0.12.0 2024年2月8日

#1153网络编程

28 每月下载量

MPL-2.0 许可证

120KB
2.5K SLoC

rtspsrc2

Rust重写的rtspsrc,目的是修复rtspsrc的根本性架构问题。rtspsrc存在一些主要问题

  1. 元素状态与RTSP状态相连,这导致无法修复的闪烁和问题,尤其是在共享RTSP媒体中
  2. 命令循环存在根本性的错误和漏洞,可能导致RTSP命令(如SET_PARAMETERGET_PARAMETER)丢失
  3. 上述两个问题的组合会导致由于服务器状态等外部因素或搜索时进行状态更改时出现无法修复的死锁
  4. 从网络解析不受信任的RTSP消息使用C语言和GstRTSPMessage API。
  5. 从网络解析不受信任的SDP使用C语言和GstSDPMessage API

实现的功能

  • RTSP 1.0支持
  • 底层传输:TCP,UDP,UDP多播
  • RTCP SR和RTCP RR
  • 基于RTCP的A/V同步
  • 底层传输选择和优先级(NEW!)
    • 还支持每个SETUP的不同底层传输

缺少的功能

按优先级顺序大致排列

  • 凭据支持
  • TLS/TCP支持
  • NAT打洞
  • 允许忽略特定的流(SDP媒体)
    • 当前所有可用的源垫都必须连接
  • SRTP支持
  • HTTP隧道
  • 代理支持
  • GET_PARAMETER / SET_PARAMETER
  • 在使用UDP传输时,将TCP连接作为可选
    • 如果UDP未超时,则进行TCP重新连接
  • 解析更多SDP属性
    • extmap
    • key-mgmt
    • rid
    • rtcp-fb
    • source-filter
    • ssrc
  • 时钟同步支持,例如RFC7273
  • 与VOD的PAUSE支持
  • 与VOD的搜索支持
  • ONVIF回通道支持
  • ONVIF特技模式支持
  • RTSP 2支持(目前没有服务器存在)

缺失配置属性

这些是尚未在 rtspsrc2 中实现的某些杂项 rtspsrc 属性

  • 延迟
  • do-rtx
  • do-rtcp
  • iface
  • user-agent

维护和未来清理

  • 测试市场 RTSP 摄像头
    • 目前,只有 live555 和 gst-rtsp-server 已经过测试
  • 添加 tokio-console 和 tokio 追踪支持

依赖项

~19–29MB
~524K SLoC