第 9 章 网络传输协议RTP与RTCP

在前面的章节中由浅入深地介绍了如何使用 WebRTC 实现一对一实时通信。从本章开始,将深入 WebRTC 的底层实现,一窥 WebRTC 从采集、编码、传输、拥塞控制、到解码、渲染的诸多奥秘。

在这诸多奥秘中,尤以网络传输最为引人注目,本章将重点分析 WebRTC 中使用的网络传输协议 RTP 与 RTCP。

  • RTSP 负责控制媒体会话,确定 RTP 和 RTCP 的传输参数。

  • RTP 负责传输实时音视频数据。

  • RTCP 负责监控 RTP 的传输质量,并提供反馈信息。

可以将 RTSP、RTP 和 RTCP 的关系类比为一场音乐会:

  • RTSP 是导演,负责安排和控制整个演出。

  • RTP 是乐队,负责演奏音乐(传输音视频数据)。

  • RTCP 是音响师,负责监控音质并调整设备(优化传输质量)。

三者协作的典型流程

  1. 建立会话(RTSP):

    • 客户端通过 RTSP 的 DESCRIBE 命令获取媒体描述信息。

    • 客户端通过 SETUP 命令与服务器协商 RTP 和 RTCP 的传输参数(如端口号、编解码格式)。

    • 客户端通过 PLAY 命令开始播放媒体流。

  2. 传输媒体数据(RTP):

    • 服务器通过 RTP 将音视频数据传输到客户端。

    • RTP 提供时间戳、序列号等信息,确保数据同步和重组。

  3. 监控传输质量(RTCP):

    • 服务器和客户端通过 RTCP 交换统计信息(如丢包率、延迟、带宽)。

    • 根据 RTCP 的反馈,调整传输参数(如码率、分辨率)。

  4. 结束会话(RTSP):

    • 客户端通过 TEARDOWN 命令终止会话。

    • 服务器停止传输 RTP 和 RTCP 数据。