概念
RTP(Real-time Transport Protocol,实时传输协议)是音视频领域非常基础和重要的一个协议。
RTP 是一种用于通过 IP 网络实时传输音频和视频的协议,常用于视频会议、语音通话、实时监控等实时媒体传输场景。
举例:
假设我和朋友在视频通话,摄像头不停采集画面,麦克风不停录音,这些数据需要被分成一小块一小块发送到对方。
RTP 就是这时候用来包装这些“小块数据”的协议,让它们有序、安全、可识别、可播放地传给对方。
RTP做的事情
功能 | 作用 |
---|---|
时间戳(timestamp) | 用于音视频同步(音画同步、按顺序播放) |
序列号(sequence number) | 标记每个包的顺序,丢包可检测 |
媒体类型标记(payload type) | 告诉接收方:这是 H264?AAC?还是 VP8? |
不保证传输(用 UDP) | 追求低延迟,不像 TCP 一定要“收齐再播” |
小包封装 | 把一帧视频或音频切成多个小包发送 |
RTP在网络协议栈中的位置:
[媒体数据] → RTP → UDP → IP → 网络传输 → 对方 IP → UDP → RTP → [还原媒体]
- RTP 通常基于 UDP,不走 TCP
- 不关心数据,丢了就重传,而是优先“实时性”
RTP 常见的配套协议
协议 | 作用 |
---|---|
RTCP(RTP Control Protocol) | RTP 的“反馈/控制通道”,用于统计、延迟、丢包报告等 |
RTSP | 控制播放(开始、暂停、seek),但真正传数据的是 RTP |
WebRTC | 内部用 RTP 传音视频(封装在 DTLS/SRTP 中) |
SRTP | Secure RTP,加密后的 RTP,更安全 |
应用场景
场景 | 是否用 RTP? | 说明 |
---|---|---|
视频会议(WebRTC) | 是 | 内部用 RTP 传输音视频 |
安防摄像头(RTSP/RTP) | 是 | 视频流通过 RTP |
直播系统(RTMP/HLS) | 否 | 不直接用 RTP |
分析RTP流
使用Wireshark,可以看一个实际的 RTP 数据包长什么样
Master和Viewer之间无论是 P2P 还是 Relay(TURN 中继),它们之间传输媒体数据时,使用的都是 RTP 通道
一、RTP 是传输音视频的协议
- RTP(Real-time Transport Protocol) 是一种标准的实时音视频传输协议,是 WebRTC 传输音视频的核心协议;
- WebRTC 中的媒体流(音视频数据)最终都是通过 RTP/UDP(或 RTP/TCP)传输;
- 所以不论走哪条网络路径(直连或中继),只要媒体数据在传输,就用 RTP。
二、P2P 与 Relay(TURN)只是传输路径不同
P2P(点对点)
- Viewer 和 Master 之间可以直接通信,不需要中继;
- RTP 数据通过 NAT/防火墙穿透技术(STUN/ICE)打通后,直接点对点发送;
- RTP over UDP(通常),延迟低、效率高。
Relay(TURN 中继)
- 如果点对点通信失败(如 NAT 非对称或防火墙限制),WebRTC 会自动回退使用 TURN 服务(如 AWS Kinesis Video Streams 内部的 TURN,可以参考前面的文章);
- 媒体数据将经过 TURN 服务器中继,路径变长;
- RTP 数据仍然存在,只不过它通过 TURN server 中继了一下;
- 一般是 RTP over TCP 或甚至 RTP over TLS(即 SRTP over TLS),性能略低但能保障连接成功。