AWS WebRTC:RTP讲解

发布于:2025-07-18 ⋅ 阅读:(16) ⋅ 点赞:(0)

概念
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),性能略低但能保障连接成功。

网站公告

今日签到

点亮在社区的每一天
去签到