3986.net
小网站 大容量 大智慧
当前位置:首页 >> 计算机软件及应用 >>

RTP协议介绍


3.1. RTP 协议分析
3.1.1. RTP 是什么
RTP 全名是 Real-time Transport Protocol (实时传输协议) 。 它是 IETF 提出的 一个标准,对应的 RFC 文档为 RFC3550(RFC1889 为其过期版本) 。RFC3550 不仅定义了 RTP, 而且定义了配套的相关协议 RTCP (Real-time Transport Control Protocol,即实时传输控制协议) 。RTP 用来为 IP 网上的语音、图像、传真等多 种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP 为 Internet 上端 到端的实时传输提供时间信息和流同步, 但并不保证服务质量, 服务质量由 RTCP 来提供。

3.1.2. RTP 的协议层次 ——传输层的子层
RTP 被划分在传输层,它建立在 UDP 上。同 UDP 协议一样,为了实现其实 时传输功能, RTP 也有固定的封装形式。 RTP 用来为端到端的实时传输提供时间 信息和流同步,但并不保证服务质量。服务质量由 RTCP 来提供。

3.1.3. RTP 协议原理
RTP 协议原理比较简单, 负责对流媒体数据进行封包并实现媒体流的实时传 输,即它按照 RPT 数据包格式来封装流媒体数据,并利用与它绑定的协议进行 数据包的传输,具体见本文 2.2.1RTP 数据格式;RTP 本身只保证实时数据的传 输, 并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞 控制,它依靠 RTCP 提供这些服务。

3.1.3.1. RTP 的封装

版本号(V) :2 比特,用来标志使用的 RTP 版本。 填充位(P) :1 比特,如果该位置位,则该 RTP 包的尾部就包含附加的填 充字节。 扩展位(X) :1 比特,如果该位置位的话,RTP 固定头部后面就跟有一个扩

展头部。 CSRC 计数器(CC) :4 比特,含有固定头部后面跟着的 CSRC 的数目。 标记位(M) :1 比特,该位的解释由配置文档(Profile)来承担。 载荷类型(PT) :7 比特,标识了 RTP 载荷的类型。 序列号(SN) :16 比特,发送方在每发送完一个 RTP 包后就将该域的值增 加 1, 接收方可以由该域检测包的丢失及恢复包序列。 序列号的初始值是随机的。 时间戳:32 比特,记录了该包中数据的第一个字节的采样时刻。在一次会 话开始时,时间戳初始化成一个初始值。即使在没有信号发送时,时间戳的数值 也要随时间而不断地增加(时间在流逝嘛) 。时间戳是去除抖动和实现同步不可 缺少的。 同步源标识符(SSRC):32 比特,同步源就是指 RTP 包流的来源。在同一个 RTP 会话中不能有两个相同的 SSRC 值。该标识符是随机选取的 RFC1889 推荐 了 MD5 随机算法。 贡献源列表(CSRC List) :0~15 项,每项 32 比特,用来标志对一个 RTP 混合器产生的新包有贡献的所有 RTP 包的源。由混合器将这些有贡献的 SSRC 标识符插入表中。SSRC 标识符都被列出来,以便接收端能正确指出交谈双方的 身份。

3.1.3.2. 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 端口对中的接收端口。

3.1.3.3. RTCP 的封装(可略去)
RTP 需要 RTCP 为其服务质量提供保证, 因此下面介绍一下 RTCP 的相关知 识。 RTCP 的主要功能是:服务质量的监视与反馈、媒体间的同步,以及多播组 中成员的标识。在 RTP 会话期 间,各参与者周期性地传送 RTCP 包。RTCP 包 中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,各参与 者可以利用这些信息动态地改变传输速率, 甚至改变有效载荷类型。 RTP 和 RTCP 配合使用, 它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合 传送网上的实时数据。 类型 200 201 202 203 204 缩写表示 SR(Sender Report) RR(Receiver Report) SDES (Source Description Items) BYE APP 用途 发送端报告 接收端报告 源点描述 结束传输 特定应用

从图 1 可以看到,RTCP 也是用 UDP 来传送的,但 RTCP 封装的仅仅是一些控 制信息, 因而分组很短, 所以可以将多个 RTCP 分组封装在一个 UDP 包中。 RTCP 有如下五种分组类型。

3.1.3.4. RTCP 工作机制(可略去)
RTCP 报文不封装音视频数据, 而是封装发送端或者接收端的统计报表信息; 在 RTP 会话期间,每个参与者周期性的向其它参与者发送 RTCP 控制信息 包,如下图 1-2 所示:

因为网络的情况很不稳定,如果网络情况好我们可以减少语音的延迟时间, 也可以增大视频的发送帧率或质量。 若网络状况不好我们可以增大语音延迟时间 以保证语音连续,也可减少视频的发送帧率或质量,以减少网络的阻塞。 RTCP 包的发送率根据与会者的数量来调整。

3.1.4. RTP 协议关键技术指标 3.1.4.1. 时间戳
时间戳字段是 RTP 首部中说明数据包时间的同步信息,是数据能以正确的 时间顺序恢复的关键。时间戳的值给出了分组中数据的第一个字节的采样时间 (Sampling Instant),要求发送方时间戳的时钟是连续、单调增长的,即使在没有 数据输入或发送数据时也是如此。在静默时,发送方不必发送数据,保持时间戳 的增长,在接收端,由于接收到的数据分组的序号没有丢失,就知道没有发生数 据丢失,而且只要比较前后分组的时间戳的差异,就可以确定输出的时间间隔。 RTP 规定一次会话的初始时间戳必须随机选择, 但协议没有规定时间戳的单 位,也没有规定该值的精确解释,而是由负载类型来确定时钟的颗粒,这样各种 应用类型可以根据需要选择合适的输出计时精度。 在 RTP 传输音频数据时,一般选定逻辑时间戳速率与采样速率相同,但是 在传输视频数据时, 必须使时间戳速率大于每帧的一个滴答。如果数据是在同一

时刻采样的, 协议标准还允许多个分组具有相同的时间戳值,如多个分组属于同 一画像。

3.1.4.2. 时延
影响时延的因素有多个方面:编解码、网络、防抖动缓冲、报文队列等都影 响时延,其中有些是固定时延,如编解码网络速率等;有些是变化的,如防抖动 缓冲和队列调度等,固定的时延可以通过改变编解码方式和提高网络速率来改 变,而变化的时延通常采用提高转发效率来提高。

3.1.4.3. 抖动
在视频电话中,语音、视频数据都是使用 UDP 协议传送的,但这种协议传 输的数据包在网络层不能保证其发送顺序,需要应用层进行排序。在网络的传输 中都会有延时,且随着网络负载的变化,延时的长短也不相同,对于语音数据, 如果接收方收到后立即播放,很容易造成语音的抖动。 RTP 数据包到达时刻统计方差的估计值,以时间标志为单位测量,用无符号整 数表达 到达时刻抖动 J 定义为一对包中接收机相对发射机的时间跨度差值的平均 偏差(平滑后的绝对值).如以下等式所示,该值等于两个包相对传输时间的差值,相 对传输时间是指包的 RTP 时间标志和到达时刻接收机时钟,以同一单位的差值. 若 Si 是包 i 的 RTP 时间标志,Ri 是包 i 以 RTP 时间标志单位的到达时刻值,对于 两个包 i 和 j,D 可以表达为 D(i,j) = (Rj - Ri) - (Sj - Si) = (Rj - Sj) - (Ri - Si)

3.1.5. SJPHONE 与 RTP/RTCP
当进行一次通话时,并不是强制所有 VoIP 终端发送 RTCP 包。在我们的实 验中,SJPHONE 似乎并不发送他们(It is quite a limitation in SJPHONE) 。因此 也就不能依靠 RTCP 包中的网络信息来进行实验数据的分析。

3.1.5.1. SJPHONE 中的 RTP 时间戳

基本概念: 时间戳单位: 时间戳计算的单位不是秒之类的单位,而是由采样频率所代替 的单位, 这样做的目的就是为了是时间戳单位更为精准。比如说一个音频的采样 频率为 8000Hz,那么我们可以把时间戳单位设为 1 / 8000。 时间戳增量:相邻两个 RTP 包之间的时间差(以时间戳单位为基准) 。 采样频率: 帧率: 详细解释: 首先,时间戳就是一个值,用来反映某个数据块的产生(采集)时间点的, 后采集的数据块的时间戳肯定是大于先采集的数据块的。有了这样一个时间戳, 就可以标记数据块的先后顺序。 第二,在实时流传输中,数据采集后立刻传递到 RTP 模块进行发送,那么, 其实,数据块的采集时间戳就直接作为 RTP 包的时间戳。 第三,如果用 RTP 来传输固定的文件,则这个时间戳就是读文件的时间点, 依次递增。 第四, 时间戳的单位采用的是采样频率的倒数, 例如采样频率为 8000Hz 时, 时间戳的单位为 1 / 8000 ,在 Jrtplib 库中,有设置时间戳单位的函数接口,而 ORTP 库中根据负载类型直接给定了时间戳的单位(音频负载 1/8000,视频负载 1/90000) 每秒钟抽取样本的次数,例如音频的采样率一般为 8000Hz 每秒传输或者显示帧数,例如 25f/s

第五,时间戳增量是指两个 RTP 包之间的时间间隔,详细点说,就是发送 第二个 RTP 包相距发送第一个 RTP 包时的时间间隔(单位是时间戳单位) 。 如果采样频率为 90000Hz,则由上面讨论可知,时间戳单位为 1/90000,我 们就假设 1s 钟被划分了 90000 个时间块,那么,如果每秒发送 25 帧,那么,每 一个帧的发送占 90000/25 = 3600 个时间块。因此,我们根据定义“时间戳增量 是发送第二个 RTP 包相距发送第一个 RTP 包时的时间间隔” , 故时间戳增量应该 为 3600。


推荐相关:

(Informative References) 作者地址 完整的版权声明 1.绪论 本文详细的介绍实时传输协议 RTP,RTP 提供带有实时特性的端对端数据传输服务,传输 的数据如:交互式的...


RTP相关知识 27页 2财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 RTP与RTCP协议介绍 RTP/RTCP传输协议相关RTP/...


实时传输协议(RTP)和实时控制协议(RTCP) RTP 是一种提供端对端传输服务的实时传输协议,用来支持在单目标广播和多目标广播网络服 务中传输实时数据,而实时数据的传...


UDP、TCP、RTP三种协议的总结_计算机软件及应用_IT/计算机_专业资料。UDP、TCP、...2.3. RTCP 的封装 RTP 需要 RTCP 为其服务质量提供保证,因此下面介绍一下 ...


RTP 和 RTCP 被设计成独立于传输和网络层。这份协议支持使用 RTP 层的混流 服务器(MIXER)和译流服务器(TRANSLATOR)。 1.介绍 ?RTP 通常和 UDP,同时也可以和...


协议族 TFTP,HTTP,SNMP,FTP, 没有协议 没有协议 TCP,UDP (RTP) IP, ICMP, RIP, OSPF, BGP, SLIP, CSLIP, PPP, ARP, ISO2110 , 数据链路层 传输有...


RTP协议详解-无水印版_IT/计算机_专业资料。本文档是对RTP协议的分析,包括其产生背景,原理及工作机制,数据包格式等,关键技术指标,及实现等等 ...


蓝精灵技术解决方案 RTP、RTCP、 RTP、RTCP、RTSP 协议详解一、 RTP 协议实时传输协议(RTP)为数据提供了具有实时特征的端对端传送服务,如在组播或单播 网络服务下...


VC 6 RTP 流媒体传输协议编程实例 实时流协议 RTSP(RealTimeStreamingProtocol)是由 RealNetworks 和 Netscape 共同提出的, 该协议定义了一对多应用程序如何有效地...


RTP协议介绍RTP协议介绍隐藏>> RTP: A Transport Protocol for Real-Time Applications Status of this Memo This document specifies an Internet standards track pr...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com