关于 RTSP over HTTP 隧道的困惑

Posted

技术标签:

【中文标题】关于 RTSP over HTTP 隧道的困惑【英文标题】:Confusion regarding RTSP over HTTP tunneling 【发布时间】:2012-12-22 05:06:18 【问题描述】:

我对此感到困惑,但没有得到任何答案。

我正在使用RTSP 通过HTTP 隧道传输视频文件,然后当我看到wire-shark 以查看数据包源和目标以及协议时,我看到了UDP 协议,尽管我使用的是RTSP HTTP 隧道。

谁能告诉我为什么我看不到TCP 协议而不是UDP 协议用于从源发送到目的地的数据包?

【问题讨论】:

【参考方案1】:

RTSP 设置 RTP 流以流式传输视频和音频。它们可能是通过 UDP 而不是通过现有 TCP 连接的隧道发送的。

仅仅因为 RTSP 通过 HTTP 进行隧道传输,并不能保证 RTP 流将被配置为使用相同的套接字。请求传输由客户端决定,但您可以将服务器更改为仅支持交错传输。看到这个答案https://***.com/a/3536969/759140

【讨论】:

先生,我在 live 555 的测试目录中使用 2 个 live555 程序“testMpeg2transportstreamer”,在 live 555 的代理服务器目录中使用代理服务器,我正在向代理服务器程序提供“testMpeg2transportstreamer”rtsp 的 url服务器,现在我可以发送 C->A: SETUP rtsp://audio.example.com/twister/audio.en RTSP/1.0 CSeq: 1 Transport: RTP/AVP/TCP;unicast;client_port=3056-3057 到来自代理服务器的“testMpeg2transportstreamer”请指导 您可能希望使用交错(rfc 2326 中的第 10.12 节) 先生,但最大的问题是如何将 SETUP 请求从代理服务器发送到 testMpeg2transportstreamer 先生,我从客户端向服务器发出了设置命令,设置命令如下发送请求:SETUP rtsp://192.168.15.192:8554/STREAMERUltra/track1 RTSP/1.0 CSeq:4 传输: RTP/AVP/TCP;unicast;interleaved=0-1 接收到 84 个新字节的响应数据。收到完整的 SETUP 响应:RTSP/1.0 461 Unsupported Transport CSeq:4 日期:2013 年 1 月 10 日星期四 06:32:42 GMT 并收到显示的响应,但没有得到任何流,您可以进一步指导 您的 RTSP 服务器似乎不支持交错传输。【参考方案2】:

RTSP 是一种网络控制协议。根据Wikipedia,

对于两个 UDP,RTSP 协议的默认端口都是 554(已弃用 并且很少使用)和 TCP 传输。

结论:将使用UDP或TCP,取决于您使用的服务器和设置。

【讨论】:

我们使用 RTSP over HTTP Tunneling 那么为什么 wireshark 显示 UDP 协议 RTSP over HTTP 隧道并不意味着将使用 TCP。由于 TCP 比 UDP 有更多的开销,实时流将更喜欢使用 UDP,因为会产生更少的流量。顺便说一句,你为什么要使用 TCP ?尝试阻塞 554 端口的 UDP,看看 LIVE555 是否会切换到 TCP。 如何屏蔽554端口的UDP请指导 这是防火墙设置。取决于您使用的防火墙。 我在窗口 7 中使用内置防火墙【参考方案3】:

非常正确,但是如果您在 ffmpeg 中指定使用 tcp-transport,如果服务器配置了它,它应该使用 TCP。

如果您不指定任何传输选项,新版本的 ffmpeg 将尝试 UDP,如果失败将重试连接或 TCP。

【讨论】:

以上是关于关于 RTSP over HTTP 隧道的困惑的主要内容,如果未能解决你的问题,请参考以下文章

RTSP 隧道 HTTP、FFMPEG

(原)关于获取ffmpeg解析rtsp流sdp中带有sps,pps的情况

关于直播的技术整理2

rtsp over tcp并设置多个options

2021-09-18 稍微写一些关于RTSP协议分析后的小结

关于CUDA统一虚拟内存的困惑