是的,在 RTSP(Real-Time Streaming Protocol) 服务器中,服务器向客户端发送视频流使用的是 RTP(Real-time Transport Protocol)。 RTSP 主要用于控制流(如播放、暂停、停止),而实际的视频流数据传输是通过 RTP 进行的。
🔹 RTSP 和 RTP 之间的关系
RTSP(控制协议)
-
RTSP 只是一个控制协议,用于建立、控制和终止流媒体会话。
-
类似 HTTP,它是一个基于文本的协议,支持 PLAY、PAUSE、TEARDOWN、DESCRIBE 等指令。
-
RTSP 本身不传输视频流,它只是告诉服务器如何发送流数据。
RTP(数据传输协议)
-
实际的视频和音频数据是通过 RTP 发送的,RTP 运行在 UDP(默认)或 TCP 之上。
-
RTP 负责分片、时间戳、同步等功能,确保实时流的正确播放。
RTCP(控制协议)
-
RTP 还配合 RTCP(Real-Time Control Protocol),用于质量监控、带宽适配、统计信息等。
🔹 RTSP 服务器如何发送 RTP 流?
客户端发送 RTSP SETUP 请求
-
服务器告知客户端 RTP 和 RTCP 的端口(如果是 UDP)。
客户端发送 RTSP PLAY 请求
-
服务器收到后,开始通过 RTP 发送视频流。
服务器用 RTP 发送数据
-
服务器向客户端指定的 RTP 端口发送音视频数据。
-
可能会有单播(unicast)或组播(multicast)。
客户端用 RTCP 反馈播放情况
-
发送 RTCP 数据包,汇报丢包、抖动等信息。
RTP协议底层是udp吗?
是的,RTP(Real-time Transport Protocol)通常基于 UDP(User Datagram Protocol)传输。
但 RTP 不仅限于 UDP,它也可以基于 TCP 或其他协议,具体取决于应用场景和网络需求。
🔹 RTP 常见的传输方式
RTP over UDP(默认) | RTP 数据包通过 UDP 发送 | ✅ 低延迟,适用于视频通话、直播 |
RTP over TCP | RTP 数据包封装在 TCP 连接中 | ✅ 网络丢包严重时可用(但增加延迟) |
RTP over RTSP (TCP) | RTP 数据包通过 RTSP(端口 554)传输 | ✅ 适用于防火墙/代理环境 |
RTP over WebRTC (SRTP) | RTP 通过 DTLS 加密传输 | ✅ WebRTC、P2P 视频流 |
🔹 为什么 RTP 默认使用 UDP?
✅ 1. 低延迟
-
UDP 无连接,直接发送数据,不需要等待确认,减少了延迟。
-
视频、音频流实时性要求高,即使丢包,也比 TCP 的重传更快。
✅ 2. 丢包容忍
-
RTP 允许一定程度的丢包,丢失少量帧不会影响整体观看体验。
-
TCP 会重传丢失数据,但这会导致视频卡顿。
✅ 3. 不需要握手
-
UDP 直接发送数据,而 TCP 需要三次握手,增加延迟。
🔹 RTP over TCP 是什么?
某些场景下,UDP 可能会被防火墙或 NAT 拦截,所以 RTP 也可以使用 TCP 传输:
RTP over RTSP(Interleaved Mode)
-
RTP 数据通过 RTSP(TCP 端口 554) 传输,避免 UDP 被防火墙拦截。
-
使用 RTP/AVP/TCP 方式传输。
-
代价是更高的延迟(因为 TCP 需要确认和重传)。
RTP over WebRTC(SRTP over DTLS)
-
安全传输 RTP(加密的 SRTP),避免中间人攻击。
-
用于网页浏览器中的音视频流。
评论前必须登录!
注册