首页 > 代码库 > RTP/RTCP协议介绍

RTP/RTCP协议介绍

1流媒体协议

       当前在Internet上传输音频和视频等信息主要有两种方式:下载和流式传输。

下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件。流式传输是指传输之前首先对多媒体进行预处理(降低质量和高效压缩),然后使用缓存系统来保证数据连续正确地进行传输。使用流式传输可以边下载边观看流媒体节目,可以实现网上直播、视频会议等。

目前,支持流媒体传输的协议主要有:实时传输协议RTP、实时传输控制协议RTCP和实时流协议RTSP(Real-time Streaming Protocol) 等,此类协议在IP/TCP协议中的位置如图1所示。

技术分享

图1流媒体协议在IP/TCP协议中的位置

2 RTP/RTCP协议

       RTP协议是IEIF提出的标准,对应的RFC文档为RFC3550。如图1所示,RTP 为实时应用提供端到端的数据运输,但不提供任何服务质量的保证,服务质量由RTCP来提供。从应用开发者的角度看,RTP 应当是应用层的一部分。在应用的发送端,开发者必须编写用 RTP 封装分组的程序代码,然后把 RTP 分组交给 UDP 插口接口。在接收端,RTP 分组通过 UDP 插口接口进入应用层后,还要利用开发者编写的程序代码从 RTP 分组中把应用数据块提取出来。

       RTP的工作机制为:当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组成,有两个端口:一个给RTP包,一个给RTCP包,使得RTP/RTCP数据能够正确发送。RTP数据发向偶数的UDP端口,而对应的控制信号RTCP数据发向相邻的奇数UDP端口(偶数的UDP端口+1),这样就构成一个UDP端口对。 RTP的发送过程如下,接收过程则相反。

       1) RTP协议从上层接收流媒体信息码流(如H.263),封装成RTP数据包;RTCP从上层接收控制信息,封装成RTCP控制包。

       2) RTP将RTP 数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的奇数端口。

       RTP分组只包含RTP数据,而控制是由RTCP协议提供。RTP在1025到65535之间选择一个未使用的偶数UDP端口号,而在同一次会话中的RTCP则使用下一个奇数UDP端口号。端口号5004和5005分别用作RTP和RTCP的默认端口号。RTP分组的首部格式如图2所示,其中前12个字节是必须的。

技术分享

图2RTP分组的首部格式

       RTCP 协议的主要功能是:服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识。RTCP 分组也使用 UDP 传送,但 RTCP 并不对声音或视像分组进行封装。可将多个 RTCP 分组封装在一个 UDP 用户数据报中。RTCP 分组周期性地在网上传送,它带有发送端和接收端对服务质量的统计信息报告。

       RTCP包含五种分组类型

1)结束分组 BYE 表示关闭一个数据流。

2)特定应用分组 APP 使应用程序能够定义新的分组类型。

3)接收端报告分组 RR 用来使接收端周期性地向所有的点用多播方式进行报告。

4)发送端报告分组 SR 用来使发送端周期性地向所有接收端用多播方式进行报告。

5)源点描述分组 SDES 给出会话中参加者的描述。

 

RTP/RTCP协议介绍