"本文转载自:[Kael_Zhang的安卓笔记]的 RTP、RTCP、RTSP详解一 概述"
1.概述
流媒体协议中,RTP、RTCP这两个协议一般是成对出现,而他们与RTSP协同工作。RTP负责多媒体的传输,RTCP配合RTP做控制和流量统计, RTSP负责建立和控制会话,下图更直观的的描述了三者的关系:
2.RTP
RTP全称:实时传输协议(Real-time Transport Protocol),是一个网络传输协议,RTP协议详细说明了在网络中传输音频和视频的标准数据包格式,可以简单理解为对原始音视频数据进行封包,然后通过网络发送出去,默认使用UDP发出(低延时),当然也可以使用TCP(不考虑延时的情况下)。一句话RTP用于传输实时流媒体数据,RTP大多是基于UDP协议传输的。
3.RTCP
RTCP全称:实时传输控制协议(Real-time Transport Control Protocol),是一个网络控制协议,是实时传输协议(RTP)的一个姐妹协议,仅仅是控制部分的传输协议,并不传输实时流媒体数据,实时流媒体数据的传输大多使用RTP协议,和RTP配合使用,用于反馈实时流媒体传输过程中的质量(延时、丢包等情况),以便综合优化实时流媒体的传输播放体验(延时、丢包等错误率高时降低实时流媒体码率等),一句话RTCP用于控制实时流媒体的质量,RTCP大多是基于UDP协议传输的。
4.RTSP
RTSP全称:实时流传输协议(Real time Streaming Protocol),是一个网络控制协议,用于实时网络流媒体传输时的控制部分(play、pause、stop 等),和RTCP一样 RTSP也仅仅是控制部分的传输协议,并不传输实时流媒体数据,实时流媒体数据的传输大多使用RTP协议,RTSP需要和RTP、RTCP配合使用。一句话RTSP用于控制实时流媒体的播放,RTSP是基于TCP协议传输的。
5.三者之间的关系
RTP和RTCP为姐妹协议,通常情况下RTP使用一个 偶数UDP port ,而RTCP则使用RTP的下一个port,也就是一个奇数port。
RTP用于传输实时流媒体数据。
RTCP用于控制实时流媒体的质量。
RTSP为控制RTP传输的协议(暂停发包、开始发包、结束发包等),即控制实时流媒体的播放。
RTP可以单独工作(它传输实际播放数据),也可以搭配RTCP、RTSP工作。
RTCP、RTSP不能单独工作(它俩不传输实际播放数据),RTSP需要和RTP、RTCP配合使用。