关于 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 隧道的困惑的主要内容,如果未能解决你的问题,请参考以下文章
(原)关于获取ffmpeg解析rtsp流sdp中带有sps,pps的情况