RTSP 多播和 UDP 摄像机流:为什么发现有效但媒体无法到达

如何诊断 RTSP 摄像机流,其中 ONVIF 发现、控制流量或多播设置有效,但 RTP 媒体永远不会到达。

RTSP, 组播, UDP, RTP, 防火墙

摄像机网络通常混合使用单播 RTSP、组播 RTP、ONVIF 发现、VLAN、PoE 交换机、防火墙和 NVR。症状可能令人困惑:发现摄像机,RTSP URL 有效,“DESCRIBE”返回 SDP,但媒体数据包从未到达。

这是一个经典的协议边界。发现不是媒体。 RTSP 控制不是 RTP 传送。多播可达性与单播可达性不同。

ONVIF 发现是一种不同的 UDP 会话

ONVIF 发现通常在发现地址和端口上使用 UDP 多播。如果发现成功,则证明至少有一条多播式控制路径可用于发现。它并不证明 RTP 多播组被允许、加入、路由或转发。

常见错误:

  • 假设 ONVIF 发现证明 RTP 媒体路径
  • 从与 NVR 不同的 VLAN 进行测试
  • 允许 TCP 554 但阻止 UDP 媒体端口
  • 在交换机上阻止多播组流量
  • 忘记 IGMP 监听或查询器行为
  • 测试直接摄像机 URL,而 NVR 使用不同的路径

该报告应命名流量类型:发现、RTSP 控制、RTP 媒体或 RTCP 反馈。

多播需要组成员身份

对于组播RTP,接收者必须加入组播组。交换机和路由器可能需要 IGMP 行为才能正确转发流量。如果多播被禁用、过滤或配置错误,RTSP 控制可能仍然有效,但媒体永远不会到达。

有用的证据:

  • SDP 声明多播地址或单播传输
  • SETUP 传输标头确认请求的模式
  • 接收器接口和 VLAN
  • 组播组地址
  • RTP数据包是否到达捕获点
  • 是否出现RTCP
  • 单播模式是否表现不同

如果单播 RTP 工作而多播不工作,则问题可能是网络多播配置,而不是 H.264。

TCP 控制工作时可以阻止 UDP 媒体

防火墙通常允许 TCP 554 或 8554,但阻止 UDP 端口。 NAT 还可以破坏 UDP 媒体。这创建了一个通用模式:

  • TCP连接成功
  • 描述成功
  • SETUP 成功
  • PLAY成功
  • 没有 RTP 到达

切换到 TCP 交错是一个有用的比较。如果 TCP 交错工作,则 RTSP 服务器和编解码器可能可以正常工作。 UDP 媒体路径需要注意。

捕捉什么

对于多播和 UDP 情况,捕获:

  • RTSP 请求和响应标头
  • SDP媒体地址和轨道信息
  • 来自“SETUP”的传输标头
  • 客户端和服务器端口
  • 组播组
  • RTP 数据包到达或缺失
  • RTCP 数据包到达或缺失
  • TCP 交错上的相同测试

此证据可帮助网络团队修复路由、防火墙或多播转发,而不是要求摄像机供应商更改编解码器设置。

RTSP Inspector 适合什么地方

RTSP Inspector 是为协议证据而构建的,而不是视觉猜测。在多播和 UDP 情况下,其值显示流停止的位置:

  • 发现有效,但 RTSP 失败
  • RTSP 有效,但 RTP 从未到达
  • UDP 失败,但 TCP 交错工作
  • 已声明多播组,但没有数据包到达客户端
  • RTP 已到达,但编解码器准备失败

这些都是不同的失败。播放器窗口无法可靠地区分它们。协议报告可以。