【转】RTP与RTCP协议介绍

2011-04-27 10:25
转载自 bohryan
最终编辑 hainei_

流媒体是指Internet上使用流式传输 技术的连续时基媒体。当前在Internet上传输音频和视频等信息主要有两种方式:下载流式传输

下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件。在视频直播等应用场合,由于生成整个媒体文件要等直播结束,也就 是用户至少要在直播结束后才能看到直播节目,所以用下载方式不能实现直播。

流式传输是指传输之前首先对多媒体进行预处理(降低质量和高效压缩),然后使用缓存系统来保证数据连续正确地进 行传输。使用流式传输可以边下载边观看流媒体节目,使传输那些事先不知道或无法知道大小的媒 体数据(如网上直播、视频会议等) 成为可能。

目前,支持流媒体传输的协议主要有:实时传输协议RTP实时传输控制协议RTCP实 时流协议RTSP(Real-time Streaming Protocol) 等。

【转】RTP与RTCP协议介绍_第1张图片

实时传输协议 RTP(Real-time Transport Protocol)

RTP是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。 RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输控制协议)。

RTP 为实时应用提供端到端的运输,但不提供任何服务质量的保证,服务质量由RTCP来提供。多媒体数据块经 压缩编码处理后,先送给 RTP 封装成为 RTP 分组,再装入运输层的 UDP 用户数据报,然后再交给 IP 层。

【转】RTP与RTCP协议介绍_第2张图片

RTP的协议层次

从应用开发者的角度看,RTP 应当是应用层的一部分。在应用的发送端,开发者必须编 写用 RTP 封装分组的程序代码,然后把 RTP 分组交给 UDP 插口接口。在接收端,RTP 分组通过 UDP 插口接口进入应用层后,还要利用开发者编写的程序代码从 RTP 分组中把应用数据块提取出来

RTP 封装了多媒体应用的数据块。由于 RTP 向多媒体应用程序提供了服务(如时间戳和序号),因此也可以将 RTP 看成是在 UDP 之上的一个运输层的子层。

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数据包格式

【转】RTP与RTCP协议介绍_第3张图片

【转】RTP与RTCP协议介绍_第4张图片

在RTP分组的首部中,前12个字节是必须的,12字节以后的是可选的。完整的RTP 数据包格式如下:

【转】RTP与RTCP协议介绍_第5张图片


RTP是目前解决流媒体实时传输问题的最好办法,存在一些开放源代码的RTP库,如LIBRTP、JRTPLIB等。JRTPLIB是一个面向对象的 RTP库,它完全遵循RFC 3550(RFC 1889已过时)设计,是一个用C++语言实现的RTP库。

实时传输控制协议 RTCP (RTP Control Protocol)

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

RTCP使用的五种分组类型

结束分组 BYE 表示关闭一个数据流。
特定应用分组 APP 使应用程序能够定义新的分组类型。
接收端报告分组 RR 用来使接收端周期性地向所有的点用多播方式进行报告。
发送端报告分组 SR 用来使发送端周期性地向所有接收端用多播方式进行报告。
源点描述分组 SDES 给出会话中参加者的描述。


你可能感兴趣的:(【转】RTP与RTCP协议介绍)