RTP报文格式
RTP报文头部分析
RTP报文头部分析1. 版本(version)(2 bits): 这个字段指定了RTP的版本号,用于区分不同的RTP版本。
当前的版本为22. 填充位(padding)(1 bit): 这个字段用于指示报文最后一个字节的填充位是否有效。
填充位用来使RTP报文的长度为整数个字(words),主要用于解决一些加密算法对字节边界的特殊要求。
3. 扩展位(extension)(1 bit): 这个字段指示是否存在头部扩展。
头部扩展提供了额外的信息,用于传递媒体相关的控制信息,如时钟同步、序列号重置等。
4. CSRC计数(CSRC count)(4 bits): 这个字段指示了CSRC标识符的数量。
CSRC(Contributing Source)是贡献源标识符,用于表示参与该报文生成的贡献源的标识符,如发送者和混音器等。
5. 标记位(marker)(1 bit): 这个字段用于标记报文的重要性或特殊状态。
应用程序可以根据标记位实现特定的处理逻辑,如重要事件的标记等。
6. 负载类型(payload type)(7 bits): 这个字段指示了报文有效载荷的类型。
RTP支持多种有效载荷类型,如G.711音频、H.264视频等。
每种有效载荷类型都对应一个唯一的标识符。
7. 序列号(sequence number)(16 bits): 这个字段是报文的序列号,用于解决报文乱序、丢失和重复等问题。
接收方可以根据序列号来恢复正确的报文顺序,并检测是否有报文丢失。
9. 同步源(synchronization source)(32 bits): 这个字段是一个标识符,用于唯一标识RTP流的源。
RTP的接收方可以根据同步源来区分不同的媒体源,如不同的音频流或视频流。
以上是RTP报文头部的详细分析。
RTP头部提供了必要的信息来实现实时多媒体数据的传输和同步。
对于实时音视频应用,了解RTP头部的结构以及各个字段的含义非常重要,可以帮助我们理解数据传输的过程,解决相关问题,并对多媒体应用性能进行优化。
RTP协议的中文版
RTP协议的中文版协议名称:RTP协议的中文版一、引言RTP(Real-time Transport Protocol)是一种用于实时传输音频和视频数据的协议。
本协议旨在提供一套标准化的通信机制,以确保实时数据的传输和接收的准确性和可靠性。
本文档旨在描述RTP协议的中文版,以便在中文语境下更好地理解和应用该协议。
二、范围本协议适用于所有需要实时传输音频和视频数据的应用场景,包括但不限于实时音视频通话、实时音视频会议、实时音视频直播等。
三、定义3.1 RTP数据包RTP数据包是RTP协议中的基本单位,用于传输音频和视频数据。
每个RTP 数据包由RTP头和有效载荷组成。
RTP头包含序列号、时间戳、同步信源标识符等字段,用于标识和同步数据包。
有效载荷部分包含音频和视频数据。
3.2 RTP会话RTP会话是指在特定时间段内,通过RTP协议传输的一组相关音频和视频数据。
RTP会话由一个或多个RTP参与者组成,可以包含多个RTP流。
3.3 RTP参与者RTP参与者是指通过RTP协议发送和接收音频和视频数据的实体。
每个RTP 参与者都有唯一的同步信源标识符(SSRC),用于标识该参与者的数据包。
四、协议规范4.1 RTP数据包格式RTP数据包采用以下格式:- RTP头部:包含版本号、填充位、扩展位、CSRC计数、标记位、负载类型、序列号、时间戳、同步信源标识符等字段。
- CSRC列表:包含零个或多个CSRC标识符,用于标识参与者。
- 扩展头部:可选字段,用于扩展RTP头部。
- 有效载荷:包含音频和视频数据。
4.2 RTP会话管理RTP会话的建立和终止应遵循以下规范:- 参与者加入:新参与者加入RTP会话时,应向其他参与者发送加入请求,并等待其他参与者的确认。
- 参与者退出:参与者退出RTP会话时,应向其他参与者发送退出通知,并等待其他参与者的确认。
- 同步信源标识符:每个参与者在加入RTP会话时,应生成唯一的同步信源标识符,用于标识该参与者的数据包。
RTP格式
RTP协议的报文头格式结构2010-07-22 09:24:44分类:RTP头格式如图2所示:开始12个八进制出现在每个RTP包中,而CSRC标识列表仅出现在混合器插入时。
各段含义如下:①版本(V)2位,标识RTP版本。
②填充标识(P)1位,如设置填充位,在包尾将包含附加填充字,它不属于有效载荷。
填充的最后一个八进制包含应该忽略的八进制计数。
某些加密算法需要固定大小的填充字,或为在底层协议数据单元中携带几个RTP包。
③扩展(X)1位,如设置扩展位,固定头后跟一个头扩展。
④CSRC计数(CC)4位,CSRC计数包括紧接在固定头后CSRC标识符个数。
⑤标记(M)1位,标记解释由设置定义,目的在于允许重要事件在包流中标记出来。
设置可定义其他标示位,或通过改变位数量来指定没有标记位。
⑥载荷类型(PT)7位,记录后面资料使用哪种 Codec , receiver 端找出相应的 decoder 解碼出來。
常用 types:Payload Type Codec0PCM μ -Law8PCM-A Law9G..722 audio codec4G..723 audio codec15G..728 audio codec18G..729 audio codec34G..763 audio codec31G..761 audio codec⑦系列号16位,系列号随每个RTP数据包而增加1,由接收者用来探测包损失。
系列号初值是随机的,使对加密的文本攻击更加困难。
⑧时标32位,时标反映RTP数据包中第一个八进制数的采样时刻,采样时刻必须从单调、线性增加的时钟导出,以允许同步与抖动计算。
时标可以让receiver端知道在正确的时间将资料播放出来。
由上图可知,如果只有系列号,并不能完整按照顺序的将data播放出来,因为如果data中间有一段是没有资料的,只有系列号的话会造成错误,需搭配上让它知道在哪个时间将data正确播放出来,如此我们才能播放出正确无误的信息。
rtp协议报文格式
rtp协议报文格式
RTP(Real-time Transport Protocol)是用于在互联网上传输实时数据的协议,它定义了数据包的格式和传输方式。
RTP报文格式包括固定的头部和可选的扩展头部、负载和填充部分。
RTP报文的固定头部包括以下字段:
版本(V),占2位,用于指示RTP协议的版本。
填充位(P),占1位,指示报文末尾是否有填充字节。
扩展位(X),占1位,指示是否存在扩展头部。
CSRC计数(CC),占4位,指示跟随在RTP头部后的CSRC标识符的数量。
标记位(M),占1位,用于指示包含特定信息,如语音的开始或结束。
负载类型(PT),占7位,指示RTP数据包中负载的类型,如
音频或视频。
序列号(Sequence Number),占16位,用于标识RTP数据包的序列号,以便接收方按顺序重建数据流。
时间戳(Timestamp),占32位,用于指示RTP数据包中负载数据的时间戳,以便接收方按正确的时间顺序播放数据。
同步源(SSRC)标识符,占32位,用于标识流的同步源。
RTP报文的可选扩展头部用于传输额外的控制信息,如SDES (源描述信息)或者RTP头部扩展。
扩展头部的存在由固定头部中的X位来指示。
RTP报文的负载部分包含实际的数据,如音频或视频流。
填充部分用于确保整个RTP数据包达到特定的长度。
总的来说,RTP协议报文格式是为了在实时传输中提供时间戳和序列号等信息,以便接收方能够正确重建数据流并按正确的时间顺序播放数据。
这种格式的设计使得RTP成为了在互联网上传输实时数据的一种常用协议。
RTP协议中文版
RTP协议中文版1. 引言本协议旨在定义实时传输协议(RTP)的中文版标准格式,以便于中文用户理解和使用。
RTP是一种用于音频和视频传输的协议,广泛应用于实时通信、流媒体和视频会议等领域。
2. 范围本协议适用于所有使用RTP协议进行音频和视频传输的应用程序和设备。
3. 规范参考本协议参考以下文档:- RFC 3550: RTP: A Transport Protocol for Real-Time Applications- RFC 3551: RTP Profile for Audio and Video Conferences with Minimal Control- RFC 4566: SDP: Session Description Protocol4. 术语定义在本协议中,以下术语的定义适用于所有章节:- RTP:实时传输协议,一种用于音频和视频传输的协议。
- SSRC:同步信源标识符,用于唯一标识RTP数据流中的同步信源。
- RTCP:实时传输控制协议,用于传输RTP会话的控制信息。
- SDP:会话描述协议,用于描述会话的媒体参数和网络地址等信息。
5. RTP数据包格式RTP数据包由固定长度的头部和可变长度的有效载荷组成。
头部包含以下字段:- 版本(V):协议版本号,占2位。
- 填充(P):指示数据包是否有填充字节,占1位。
- 扩展(X):指示数据包是否包含扩展头部,占1位。
- CSRC计数(CC):指示CSRC标识符的数量,占4位。
- 标记(M):用于指示数据包是否为关键帧,占1位。
- 负载类型(PT):指示有效载荷类型,占7位。
- 序列号(SN):用于标识RTP数据包的顺序,占16位。
- 时间戳(TS):用于同步RTP数据流的时间戳,占32位。
- 同步信源标识符(SSRC):用于唯一标识RTP数据流中的同步信源,占32位。
- CSRC标识符(CSRC):用于标识参与混合的源,每个CSRC标识符占32位。
RTCP 丢包抖动时延计算原理
RTP/RTCP 丢包/抖动/时延计算原理1.RTP/RTCP的基本功能介绍●实时传输协议RTP(A Transport Protocol for Real-Time Application)提供实时的端对端传输业务(如交互的语音和图象),包括负载类型标识,序列号,时间戳,传输监视。
●实时传输协议(RTP)本身并不提供任何机制保证实时传输或业务质量保证,而是让底层协议去实现。
●RTP包括两个紧密相关的部分:●实时传输协议(RTP-Real Time Transport Protocol),传输有实时特性的信息;●RTP控制协议(RTCP-RTP Control Protocol),监视业务质量和传输对话中成员的信息。
●RTP/RTCP报文封装格式为:DL+IP+UDP+RTP/RTCP2.RTP报文统计方法介绍RTP报文发送统计:●NTP时间标志:64比特,指示了此报告发送时的壁钟(wallclock)时刻,它可以与从其它接收者返回的接收报告块中的时间标志结合起来,测量到这些接收者的环路时延。
●RTP时间标志:32比特,与以上的NTP时间标志对应同一时刻,但是与数据包中的RTP时间标志具有相同的单位和偏移量。
●发送包数:32比特,从开始传输到此SR包产生时该发送者发送的RTP数据包总数。
若发送者改变SSRC识别符,该计数器重设。
●发送字节数:32比特,从开始传输到此SR包产生时该发送者在RTP数据包发送的字节总数(不包括头和填充)。
若发送者改变SSRC识别符,该计数器重设。
RTP报文接收统计:●丢包率:8比特,自从前一SR包或RR包发送以来,从SSRC_n传来的RTP数据包的损失比例,以固定点小数的形式表示,小数点在此域的左侧,等于将丢包率乘256后取整数部分。
该值定义为损失包数被期望接收的包数除。
(对应RTCP消息中的丢包率时,除以256再乘以100即可,如为127,则丢包率为50%。
)●累计包损:24比特,从开始接收到现在,从源SSRC_n发到本源的RTP数据包的丢包总数。
RTP协议中文版
RTP协议中文版一、前言本协议旨在规范实时传输协议(Real-time Transport Protocol,简称RTP)的中文版本,以便在网络通信中实现实时音视频数据的传输。
本协议适用于各种网络环境和应用场景,包括但不限于音视频会议、流媒体传输、远程监控等。
二、术语定义1. RTP:实时传输协议,用于在互联网上传输实时音视频数据。
2. RTP报文:RTP协议定义的数据单元,包含音视频数据、时间戳、序列号等信息。
3. RTP会话:指一组参与者之间的音视频传输关系,包括发送方和接收方。
4. SSRC:同步信源标识符,用于唯一标识一个RTP会话中的发送方。
5. RTP流:一组具有相同SSRC的RTP报文序列。
6. RTP会话描述协议(Session Description Protocol,简称SDP):用于描述RTP会话参数的协议。
三、协议要求1. RTP报文格式1.1 RTP报文由固定长度的报头和可变长度的有效载荷组成。
1.2 报头包括版本号、填充位、扩展位、CSRC计数器、标志位等字段,详细格式参见附表1。
1.3 有效载荷可以是音频、视频、文本等任意类型的数据。
1.4 报头中的时间戳字段用于同步接收方的音视频数据。
1.5 报头中的序列号字段用于标识RTP报文的顺序。
2. RTP会话管理2.1 RTP会话的发起方应向接收方发送SDP报文,描述会话参数,包括参与者、编解码器、传输协议等。
2.2 接收方收到SDP报文后,解析其中的参数,并根据需要进行协商和调整。
2.3 RTP会话的发送方应维护一个唯一的SSRC标识符,用于区分不同的发送方。
2.4 接收方应根据SSRC标识符识别不同的发送方,并进行相应的处理。
3. RTP流传输3.1 RTP流可以通过UDP、TCP或其他传输协议进行传输。
3.2 UDP传输适用于实时性要求较高的音视频数据传输,但不保证可靠性。
3.3 TCP传输适用于对可靠性要求较高的音视频数据传输,但可能引入较大的延迟。
RTP协议的中文版 (3)
RTP协议的中文版协议名称:RTP协议的中文版一、引言RTP(Real-time Transport Protocol)是一种用于实时传输音频和视频数据的协议。
本协议的目的是为了支持实时应用程序的传输需求,如音频和视频会议、流媒体等。
本协议的中文版旨在提供给中文用户更便于理解和使用的文档。
二、定义和缩写2.1 定义RTP:实时传输协议(Real-time Transport Protocol)RTCP:实时传输控制协议(Real-time Transport Control Protocol)SSRC:同步信源(Synchronization Source)CNAME:同步信源名称(Canonical Name)SDES:同步信源描述(Source Description)NTP:网络时间协议(Network Time Protocol)UDP:用户数据报协议(User Datagram Protocol)IP:互联网协议(Internet Protocol)2.2 缩写RTP:Real-time Transport ProtocolRTCP:Real-time Transport Control ProtocolSSRC:Synchronization SourceCNAME:Canonical NameSDES:Source DescriptionNTP:Network Time ProtocolUDP:User Datagram ProtocolIP:Internet Protocol三、协议概述RTP协议是一种面向数据报的协议,用于传输实时音频和视频数据。
它提供了时间戳、序列号和同步信源标识等功能,以保证数据的实时性和完整性。
RTP协议使用UDP作为传输层协议,并与RTCP协议配合使用,实现流媒体数据的传输和控制。
四、协议要素4.1 RTP数据包格式RTP数据包由固定长度的头部和可变长度的有效载荷组成。
RTP协议详解-无水印版
RTP协议分析一.RTP协议背景 (2)二.RTP协议原理及工作机制 (3)2.1 RTP协议原理 (4)2.1.1 RTP协议原理 (4)2.1.2 RTCP协议原理 (4)2.2 RTP数据包格式 (5)2.2.1 RTP数据包格式 (5)2.2.2 RTCP数据包格式 (8)2.3 RTP工作机制 (12)2.3.1 RTP工作机制 (12)2.3.2 RTCP工作机制 (12)三.RTP协议关键技术指标 (13)3.1 时间戳 (13)3.2时延 (14)3.3 抖动 (15)3.4丢包率 (15)3.5 会话和流两级分用 (16)3.6 多种流同步控制 (16)四.RTP协议应用方案 (17)4.1 RTP协议应用方案之单播 (17)4.2 RTP协议应用方案之广播 (17)4.3 RTP协议应用方案之组播 (17)4.3.1 RTP协议组播方案总体概述 (18)4.3.2 RTP协议组播方案服务器端实现 (19)4.3. 3RTP协议组播方案客户端实现 (20)4.3. 4RTP协议视频帧率和质量调整策略 (21)五.RTP协议移植计划 (22)六.RTP协议安全方面考虑 (22)一.RTP协议背景流(Streaming)是近年在Internet上出现的新概念,其定义非常广泛,主要是指通过网络传输多媒体数据的技术总称。
流媒体包含广义和狭义两种内涵:广义上的流媒体指的是使音频和视频形成稳定和连续的传输流和回放流的一系列技术、方法和协议的总称,即流媒体技术;狭义上的流媒体是相对于传统的下载-回放方式而言的,指的是一种从Internet上获取音频和视频等多媒体数据的新方法,它能够支持多媒体数据流的实时传输和实时播放。
通过运用流媒体技术,服务器能够向客户机发送稳定和连续的多媒体数据流,客户机在接收数据的同时以一个稳定的速率回放,而不用等数据全部下载完之后再进行回放。
流式传输有顺序流式传输(Progressive Streaming)和实时流式传输(Realtime Streaming)两种方式。
RTP包格式详细解析
RTP包格式详细解析H.264 视频 RTP 负载格式1. ⽹络抽象层单元类型 (NALU)NALU 头由⼀个字节组成, 它的语法如下:+---------------+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|F|NRI| Type |+---------------+F: 1 个⽐特.forbidden_zero_bit. 在 H.264 规范中规定了这⼀位必须为 0.NRI: 2 个⽐特.nal_ref_idc. 取 00 ~ 11, 似乎指⽰这个 NALU 的重要性, 如 00 的 NALU 解码器可以丢弃它⽽不影响图像的回放. 不过⼀般情况下不太关⼼这个属性.Type: 5 个⽐特.nal_unit_type. 这个 NALU 单元的类型. 简述如下:0 没有定义1-23 NAL单元单个 NAL 单元包.24 STAP-A 单⼀时间的组合包25 STAP-B 单⼀时间的组合包26 MTAP16 多个时间的组合包27 MTAP24 多个时间的组合包28 FU-A 分⽚的单元29 FU-B 分⽚的单元30-31 没有定义2. 打包模式下⾯是 RFC 3550 中规定的 RTP 头的结构.0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P|X| CC |M| PT | sequence number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| timestamp |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| synchronization source (SSRC) identifier |+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+| contributing source (CSRC) identifiers || .... |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+负载类型 Payload type (PT): 7 bits序列号 Sequence number (SN): 16 bits时间戳 Timestamp: 32 bitsH.264 Payload 格式定义了三种不同的基本的负载(Payload)结构. 接收端可能通过 RTP Payload的第⼀个字节来识别它们. 这⼀个字节类似 NALU 头的格式, ⽽这个头结构的 NAL 单元类型字段则指出了代表的是哪⼀种结构,这个字节的结构如下, 可以看出它和 H.264 的 NALU 头结构是⼀样的.+---------------+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|F|NRI| Type |+---------------+字段 Type: 这个 RTP payload 中 NAL 单元的类型. 这个字段和 H.264 中类型字段的区别是, 当 type的值为 24 ~ 31 表⽰这是⼀个特别格式的 NAL 单元, ⽽ H.264 中, 只取 1~23 是有效的值.24 STAP-A 单⼀时间的组合包25 STAP-B 单⼀时间的组合包26 MTAP16 多个时间的组合包27 MTAP24 多个时间的组合包28 FU-A 分⽚的单元29 FU-B 分⽚的单元30-31 没有定义可能的结构类型分别有:1. 单⼀ NAL 单元模式即⼀个 RTP 包仅由⼀个完整的 NALU 组成. 这种情况下 RTP NAL 头类型字段和原始的 H.264的NALU 头类型字段是⼀样的.2. 组合封包模式即可能是由多个 NAL 单元组成⼀个 RTP 包. 分别有4种组合⽅式: STAP-A, STAP-B, MTAP16, MTAP24.那么这⾥的类型值分别是 24, 25, 26 以及 27.3. 分⽚封包模式⽤于把⼀个 NALU 单元封装成多个 RTP 包. 存在两种类型 FU-A 和 FU-B. 类型值分别是 28 和 29.2.1 单⼀ NAL 单元模式对于 NALU 的长度⼩于 MTU ⼤⼩的包, ⼀般采⽤单⼀ NAL 单元模式.对于⼀个原始的 H.264 NALU 单元常由 [Start Code] [NALU Header] [NALU Payload] 三部分组成, 其中 Start Code ⽤于标⽰这是⼀个NALU 单元的开始, 必须是 "00 00 00 01" 或 "00 00 01", NALU 头仅⼀个字节, 其后都是 NALU 单元内容.打包时去除 "00 00 01" 或 "00 00 00 01" 的开始码, 把其他数据封包的 RTP 包即可.0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|F|NRI| type | |+-+-+-+-+-+-+-+-+ || || Bytes 2..n of a Single NAL unit || || +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| :...OPTIONAL RTP padding |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+如有⼀个 H.264 的 NALU 是这样的:[00 00 00 01 67 42 A0 1E 23 56 0E 2F ... ]这是⼀个序列参数集 NAL 单元. [00 00 00 01] 是四个字节的开始码, 67 是 NALU 头, 42 开始的数据是 NALU 内容.封装成 RTP 包将如下:[ RTP Header ] [ 67 42 A0 1E 23 56 0E 2F ]即只要去掉 4 个字节的开始码就可以了.2.2 组合封包模式其次, 当 NALU 的长度特别⼩时, 可以把⼏个 NALU 单元封在⼀个 RTP 包中.0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| RTP Header |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|STAP-A NAL HDR | NALU 1 Size | NALU 1 HDR |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| NALU 1 Data |: :+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| | NALU 2 Size | NALU 2 HDR |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| NALU 2 Data |: :| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| :...OPTIONAL RTP padding |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+2.3 Fragmentation Units (FUs).⽽当 NALU 的长度超过 MTU 时, 就必须对 NALU 单元进⾏分⽚封包. 也称为 Fragmentation Units (FUs).0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| FU indicator | FU header | |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ || || FU payload || || +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| :...OPTIONAL RTP padding |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Figure 14. RTP payload format for FU-AThe FU indicator octet has the following format:+---------------+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|F|NRI| Type |+---------------+The FU header has the following format:+---------------+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|S|E|R| Type |+---------------+3. SDP 参数下⾯描述了如何在 SDP 中表⽰⼀个 H.264 流:. "m=" ⾏中的媒体名必须是 "video". "a=rtpmap" ⾏中的编码名称必须是 "H264".. "a=rtpmap" ⾏中的时钟频率必须是 90000.. 其他参数都包括在 "a=fmtp" ⾏中.如:m=video 49170 RTP/AVP 98a=rtpmap:98 H264/90000a=fmtp:98 profile-level-id=42A01E; sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==下⾯介绍⼀些常⽤的参数.3.1 packetization-mode:表⽰⽀持的封包模式.当 packetization-mode 的值为 0 时或不存在时, 必须使⽤单⼀ NALU 单元模式.当 packetization-mode 的值为 1 时必须使⽤⾮交错(non-interleaved)封包模式.当 packetization-mode 的值为 2 时必须使⽤交错(interleaved)封包模式.这个参数不可以取其他的值.3.2 sprop-parameter-sets:这个参数可以⽤于传输 H.264 的序列参数集和图像参数 NAL 单元. 这个参数的值采⽤ Base64 进⾏编码. 不同的参数集间⽤","号隔开.3.3 profile-level-id:这个参数⽤于指⽰ H.264 流的 profile 类型和级别. 由 Base16(⼗六进制) 表⽰的 3 个字节. 第⼀个字节表⽰ H.264 的 Profile 类型, 第三个字节表⽰ H.264 的 Profile 级别:3.4 max-mbps:这个参数的值是⼀个整型, 指出了每⼀秒最⼤的宏块处理速度.re: H.264 RTP payload 格式 2009-12-25 17:17 heshui⾟苦啦。
RTCP报文结构
RTP 控制协议 RTCP 在基于周期性传输的基础上,采用与数据包相同的分配机制,向会话参与者发送控制包。
底层协议必须提供数据多路技术和控制包,例如使用 UDP 的特定端口号。
RTCP 完成四个功能服务:1.RTCP 提供数据分配质量反馈信息。
作为传输协议这是 RTP 功能的主要部分并且它涉及到了其它传输协议的流控制和拥塞控制。
2.RTCP 为 RTP 源(称为规范名或 CNAME)传送一个持久性传输层标识符。
由于一旦发现冲突或需要重启程序时,SSRC 标识符会随之改变,所以接收方要求 CNAME 明了每一个参与者,同时接收方还要求 CNAME 能够连接多重数据流和一组相关会话中的指定参与者,例如同步视频和音频。
3.上述前两个功能要求所有的参与者都要发送 RTCP 包,因此必须控制速率以便 RTP按比例增加大量的参与者。
通过每一个参与者发送各自的控制包给其它所有参与者,每一个参与者能够独立观察到参与者数量,该数量可用来估算包的发送速率。
4.OPTIONAL 的功能是传送最小会话控制信息,例如在用户界面显示参与者标识。
这对于“松散受控”会话(在没有成员控制或阐述协商的情况下,参与者可以进出该会话)是非常有用的。
上述功能1-3适用于所有环境,尤其是 IP 组播环境。
RTP 应用程序设计者应该避免设计只能工作于单播模式的机制并且不能大量增加其数量。
由于在某些情况下如单向链接中,不可能有来自接收方的反馈,所以 RTCP 的传输就可能由发送方和接收方分别独立控制。
23816 bitVersion P RC Packet typeLength∙Version ― 识别 RTCP 版本。
RTP 数据包中的该值与 RTCP 数据包中的一样。
当前规定值为2。
∙P ― 间隙(Padding)。
设置时,RTCP 数据包包含一些其它 Padding 八位位组,它们不属于控制信息。
Padding 的最后八位是用于计算应该忽略多少间隙八位位组。
RTP协议解析实现音视频传输的协议
RTP协议解析实现音视频传输的协议RTP(Real-time Transport Protocol)是一种实时传输协议,主要用于音视频数据的传输。
它被广泛应用于实时通信领域,如视频会议、网络直播和实时游戏等。
本文将对RTP协议进行解析,并探讨其在音视频传输中的实现。
一、RTP协议的概述RTP协议是由IETF(Internet Engineering Task Force)制定的一种开放标准协议。
它使用UDP(User Datagram Protocol)作为传输层协议,并在其上构建一种实时传输的框架。
RTP协议不保证数据的可靠性,但提供了时间戳、序列号和校验和等机制,以便在接收端进行数据重组和同步。
RTP协议使用头部扩展的方式来传递附加信息,例如时间戳、SSRC(Synchronization Source)标识符和负载类型等。
这些信息对于实时通信非常重要,用于保证音视频数据的正确解析和播放。
二、RTP协议的组成1. RTP报文RTP报文由固定大小的RTP头部和可变大小的负载数据组成。
RTP头部包含了一些重要字段,包括版本号、填充位、扩展位、CSRC计数器、负载类型、序列号、时间戳和SSRC标识符等。
负载数据则根据不同的负载类型进行封装,可以是音频采样、视频帧或其他媒体数据。
2. RTP会话RTP会话是指在同一时间和空间中进行音视频传输的一组RTP会话参与者。
在一个RTP会话中,可以包含一个或多个发送者和接收者。
发送者负责将音视频数据打包成RTP报文并发送,接收者则接收并解析RTP报文,进而还原原始的音视频数据。
三、RTP协议的工作流程1. 初始化在音视频传输前,发送端和接收端需要进行初始化配置。
发送端需要选择合适的负载类型,并设置相应的参数,如传输速率、编码格式和质量等。
接收端则需要解析RTP头部,提取出相应的信息,并进行处理和播放准备工作。
2. 打包和发送发送端根据负载类型将音视频数据打包成RTP报文,并通过UDP 发送给接收端。
RTP协议实时传输协议的音视频通信机制
RTP协议实时传输协议的音视频通信机制RTP(Real-time Transport Protocol)是实时传输协议,用于音视频通信中的数据传输。
它提供了一种标准化的方式,使得音视频数据可以在网络上进行传输和同步。
本文将详细介绍RTP协议的音视频通信机制。
一、RTP协议概述RTP协议是IETF(Internet Engineering Task Force)制定的一种应用层协议,用于实时传输音频和视频等数据。
它定义了一套传输和同步音视频数据的机制,使得接收方可以按照发送方的时序顺序恢复出完整的音视频内容。
二、RTP报文结构RTP报文由固定头部和有效载荷组成。
头部包含了标识数据类型、时间戳、序列号等信息,而有效载荷则是音视频数据的实际内容。
RTP 报文的结构如下所示:(这里根据实际情况插入图示)三、RTP传输流程RTP协议的传输流程包括发送端和接收端两个环节。
发送端将音视频数据打包成RTP报文,然后通过UDP协议进行传输。
接收端则根据报文头部中的时间戳和序列号信息进行解包和同步,最终将音视频内容展示给用户。
四、实时性保障机制RTP协议主要通过以下几个机制来保障音视频数据的实时性:1. 时间戳:RTP报文头部包含了时间戳信息,用于指示音视频数据的播放时间。
接收端可以根据时间戳信息对音视频进行同步,以保证播放的实时性。
2. 序列号:RTP报文头部的序列号字段可以用于检测丢包情况。
接收端可以根据序列号判断是否有报文未到达,如果有,可以通过重传机制进行数据的重新获取。
3. 延迟控制:延迟是音视频通信中不可避免的问题,RTP协议可以通过一些手段对延迟进行控制。
例如,可以使用RTCP(RTP Control Protocol)来监测网络状况,及时调整视频的码率以适应带宽的变化,从而减少延迟。
五、RTP与RTCP的配合RTP协议通常与RTCP协议搭配使用。
RTCP是RTP的控制协议,用于传输音视频会话的控制信息。
rtcp 流程
rtcp流程
RTCP流程主要包括以下几个方面:
1.发送端
发送端周期性地发送SR(Sender Report)报文,用于报告发送端RTP报文的发送统计信息,包括发送的RTP报文数、字节数、时间戳等。
发送端在收到接收端的RR(Receiver Report)报文后,可以根据RR报文中的反馈信息调整RTP报文的发送速率等参数。
发送端在结束RTP会话时,可以发送BYE(Goodbye)报文通知接收端。
2.接收端
接收端周期性地发送RR报文,用于报告接收端RTP报文的接收统计信息,包括接收到的RTP报文数、字节数、时间戳等,以及接收端对网络质量的估计。
接收端根据SR报文中的统计信息,可以计算RTP报文的丢失率、抖动等参数,并将其反馈给发送端。
3.RTCP报文类型
RTCP报文共有5种类型:
●SR:发送端报告报文
●RR:接收端报告报文
●SDES:源描述报文
●BYE:断开连接报文
●APP:应用程序专用报文
4.RTCP报文格式
RTCP报文由以下几个部分组成:
头部:包含RTCP报文的版本号、类型、发送端SSRC标识符、接收端SSRC 标识符等信息。
内容:根据报文类型不同,包含不同的内容。
5.RTCP发送频率
RTCP报文的发送频率可以根据RTP会话的具体需求进行配置。
一般情况下,发送频率越高,反馈信息越及时,但对网络资源的消耗也越大。
基于RTP协议的实时语音通信
序号 列
3 .语 音 通 信 的 实 现 过 程
语 音 通信 过程 是 全 双 工 的 , 可 以实 现 一 对 一和 一 对 多 的
同步信源 (S C 标识符 SR) 特约信源 (S C 标识符 CR)
通信 , 通信 的整个 流程 如图二所 示, 利用 wi o 的低级音频 n ws d AI P 函数族 Waen v O t v I, e u 实现 麦 克风 的数据采 集和 数据 Wa 播放 ;在发送端音频数据采集完成后 需要用到 G. 6语音编 7 2 码算法进行编码, 以提 高传输过程 中带宽的利 用率; 根据 R P T
话交 换 网 P T 和 无 线 市 话接 入 等 音 频 流 的 压 缩 编码 和 解 码 , SN 并支 持 IDN会 议 、 议 电话 等 其他 低 数 据传 输 速 率下 的应用 。 S 会 G. 6是 IU— 定 义 的一 种 音 频 编 码 算 法 ,主 要 基 于 以 7 2 T T
成组 合 报 文 的各 个 S R S c。
V: T R P协议的版本号, 2位 , 占 当前协议版本号为 2 。
P 填 充 标 志 , 1 , 果 P I则 在 该 报 文 的 尾 部 填 充 : 占 位 如 =,
一
个或多个额 外的八位组 , 它们不是有效载荷的一部分。
X: 展 标 志 , 1 , 果 X I 则 在 R P报 头 后 跟 有 一 扩 占 位 如 =, T
荷的类型 , GS 音频 、P M 图像等。 如 M JE 序列号 : 1 占 6位, 于标 识发送者所发送 的 R P报文 的 用 T 序列号 , 每发送一个报文 , 序列号增 1 接收者通过序 列号来检 。
测 报 文 丢 失情 况 , 新 排 序 报 文 , 复 数 据 。的国际标准 ,主要应用 于公用 电 2
h264的RTP负载结构
1.RTP数据包格式RTP报文头格式(见RFC3550 Page12):0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P|X| CC |M| PT | sequence number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| timestamp |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| synchronization source (SSRC) identifier |+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+| contributing source (CSRC) identifiers || .... |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 版本(V):2比特此域定义了RTP的版本.此协议定义的版本是2.填料(P):1比特若填料比特被设置,此包包含一到多个附加在末端的填充比特,不是负载的一部分.填料的最后一个字节包含可以忽略多少个填充比特.填料可能用于某些具有固定长度的加密算法,或者在底层数据单元中传输多个RTP包.扩展(X):1比特若设置扩展比特,固定头(仅)后面跟随一个头扩展.CSRC计数(CC):4比特 CSRC计数包含了跟在固定头后面CSRC识别符的数目.标志(M):1比特标志的解释由具体协议规定.它用来允许在比特流中标记重要的事件,如帧范围.规定该标志在静音后的第一个语音包时置位.负载类型(PT):7比特此域定义了负载的格式,由具体应用决定其解释.协议可以规定负载类型码和负载格式之间一个默认的匹配.其他的负载类型码可以通过非RTP方法动态定义.RTP发射机在任意给定时间发出一个单独的RTP负载类型;此域不用来复用不同的媒体流.序列号(sequence number):16比特每发送一个RTP数据包,序列号加一,接收机可以据此检测包损和重建包序列.序列号的初始值是随机的(不可预测),以使即便在源本身不加密时(有时包要通过翻译器,它会这样做),对加密算法泛知的普通文本攻击也会更加困难.时间标志(timestamp):32比特时间标志反映了RTP数据包中第一个比特的抽样瞬间.抽样瞬间必须由随时间单调和线形增长的时钟得到,以进行同步和抖动计算.时钟的分辨率必须满足要求的同步准确度,足以进行包到达抖动测量.时钟频率与作为负载传输的数据格式独立,在协议中或定义此格式的负载类型说明中静态定义,也可以在通过非RTP方法定义的负载格式中动态说明.若RTP包周期性生成,可以使用由抽样时钟确定的额定抽样瞬间,而不是读系统时钟.例如,对于固定速率语音,时间标志钟可以每个抽样周期加1.若语音设备从输入设备读取覆盖160个抽样周期的数据块,对于每个这样的数据块,时间标志增加160,无论此块被发送还是被静音压缩. 时间标志的起始值是随机的,如同序列号.多个连续的RTP包可能由同样的时间标志,若他们在逻辑上同时产生.如属于同一个图象帧.若数据没有按照抽样的顺序发送,连续的RTP包可以包含不单调的时间标志,如MPEG交织图象帧.同步源(SSRC):32比特 SSRC域用以识别同步源.标识符被随机生成,以使在同一个RTP 会话期中没有任何两个同步源有相同的SSRC识别符.尽管多个源选择同一个SSRC识别符的概率很低,所有RTP实现工具都必须准备检测和解决冲突.若一个源改变本身的源传输地址,必须选择新的SSRC识别符,以避免被当作一个环路源.有贡献源(CSRC)列表:0到15项,每项32比特 CSRC列表识别在此包中负载的有贡献源.识别符的数目在CC域中给定.若有贡献源多于15个,仅识别15个.CSRC识别符由混合器插入,用有贡献源的SSRC识别符.例如语音包,混合产生新包的所有源的SSRC标识符都被陈列,以期在接收机处正确指示交谈者.注意:前12个字节出现在每个RTP包中,仅仅在被混合器插入时,才出现CSRC识别符列表.RTP报文扩展头格式(见RFC3550 Page18):0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| defined by profile | length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| header extension || .... |若RTP头中的扩展比特位X置1,则一个长度可变的头扩展部分被加到RTP固定头之后,.头扩展包含16比特的长度域,指示扩展项中32比特字的个数,不包括4个字节扩展头(因此零是有效值).RTP固定头之后只允许有一个头扩展.为允许多个互操作实现独立生成不同的头扩展,或某种特定实现有多种不同的头扩展,扩展项的前16比特用以识别标识符或参数.这16比特的格式由具体实现的上层协议定义.基本的RTP说明并不定义任何头扩展本身。
RTP和RTCP资料
Company Confidential 修改该参数之前,需要获得生产线建议
5 © 2005 Nokia V1-Filename.ppt / yyyy-mm-dd / Initials
RTP EXAMPLE(AMR_Nb)_1
• • • • • • • • • • • • • • • • • • • • • • • • • • • No. Time Source Destination Protocol Info 874 12:44:20.462962 192.168.103.2 192.168.104.2 RTP Payload type=Unknown (96), SSRC=1215688115, Seq=0, Time=0
CALLER : 05F1 092E 07 RETURN ADDRESS: 0940 (G0296).00000219 WRITE TIME: 2006-09-11 10:10:03.16 PARAMETERS: E-08 0938.0000001E 000000CF 0938.00000004 USER TEXT : HP1: UP init timeout (IP) USER DATA : Nb DSP pid = 4581 4D2 9 0 remote IP, port= 000A00032EFFFFFFFFFFFFFFFFFFFFFFFF , 0x40A term index = 0x0 up init phase = 3 (0=idle, 3 = wf init, 4 = init sent) context id = 0x8DB0896
Company Confidential
4 © 2005 Nokia V1-Filename.ppt / yyyy-mm-dd / Initials
RTP协议全解(H264码流和PS流)
RTP协议全解(H264码流和PS流)写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析,其中借鉴了很多文章,我都列在了文章最后,在此表示感谢。
互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持。
1、RTP Header解析图11) V:RTP协议的版本号,占2位,当前协议版本号为22) P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
3) X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头4) CC:CSRC计数器,占4位,指示CSRC 标识符的个数5) M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
6) PT: 有效荷载类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM 图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。
7) 序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。
这个字段当下层的承载协议用UDP的时候,网络状况不好的时候可以用来检查丢包。
同时出现网络抖动的情况可以用来对数据进行重新排序,序列号的初始值是随机的,同时音频包和视频包的sequence是分别记数的。
8) 时戳(Timestamp):占32位,必须使用90 kHz 时钟频率。
时戳反映了该RTP报文的第一个八位组的采样时刻。
接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
9) 同步信源(SSRC)标识符:占32位,用于标识同步信源。
该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
10) 特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。
每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。
注:基本的RTP说明并不定义任何头扩展本身,如果遇到X=1,需要特殊处理取一段码流如下:80 e0 00 1e 00 00 d2 f0 00 00 00 00 41 9b 6b 49 €?....??....A?kIe1 0f 26 53 02 1a ff06 59 97 1d d2 2e 8c 50 01 ?.&S....Y?.?.?P.cc 13 ec 52 77 4e e50e 7b fd 16 11 66 27 7c b4 ?.?RwN?.{?..f'|?f6 e1 29 d5 d6 a4 ef3e 12 d8 fd 6c 97 51 e7 e9 ??)>.??l?Q??cfc7 5e c8 a9 51 f6 82 65 d6 48 5a 86 b0 e0 8c ??^??Q??e?HZ其中,80 是V_P_X_CCe0 是M_PT00 1e 是SequenceNum00 00 d2 f0 是Timestamp00 00 00 00是SSRC把前两字节换成二进制如下1000 0000 1110 0000按顺序解释如下:10 是V;0 是P;0 是X;0000 是CC;1 是M;110 0000 是PT;排版不如word看的清晰,大家凑合着看吧。
RTCP 丢包抖动时延计算原理
RTP/RTCP 丢包/抖动/时延计算原理1.RTP/RTCP的基本功能介绍实时传输协议RTP(A Transport Protocol for Real-Time Application)提供实时的端对端传输业务(如交互的语音和图象),包括负载类型标识,序列号,时间戳,传输监视。
实时传输协议(RTP)本身并不提供任何机制保证实时传输或业务质量保证,而是让底层协议去实现。
RTP包括两个紧密相关的部分:实时传输协议(RTP-Real Time Transport Protocol),传输有实时特性的信息;RTP控制协议(RTCP-RTP Control Protocol),监视业务质量和传输对话中成员的信息。
RTP/RTCP报文封装格式为:DL+IP+UDP+RTP/RTCP2.RTP报文统计方法介绍RTP报文发送统计:NTP时间标志:64比特,指示了此报告发送时的壁钟(wallclock)时刻,它可以与从其它接收者返回的接收报告块中的时间标志结合起来,测量到这些接收者的环路时延。
RTP时间标志:32比特,与以上的NTP时间标志对应同一时刻,但是与数据包中的RTP时间标志具有相同的单位和偏移量。
发送包数:32比特,从开始传输到此SR包产生时该发送者发送的RTP数据包总数。
若发送者改变SSRC识别符,该计数器重设。
发送字节数:32比特,从开始传输到此SR包产生时该发送者在RTP数据包发送的字节总数(不包括头和填充)。
若发送者改变SSRC识别符,该计数器重设。
RTP报文接收统计:丢包率:8比特,自从前一SR包或RR包发送以来,从SSRC_n传来的RTP 数据包的损失比例,以固定点小数的形式表示,小数点在此域的左侧,等于将丢包率乘256后取整数部分。
该值定义为损失包数被期望接收的包数除。
(对应RTCP消息中的丢包率时,除以256再乘以100即可,如为127,则丢包率为50%。
)累计包损:24比特,从开始接收到现在,从源SSRC_n发到本源的RTP数据包的丢包总数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RTP报文格式RTP报文由两部分组成:报头和有效载荷。
RTP报头格式如图6.7所示,其中:●V:RTP协议的版本号,占2位,当前协议版本号为2。
●P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
●X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。
●CC:CSRC计数器,占4位,指示CSRC 标识符的个数。
●M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
●同步信源(SSRC)标识符:占32位,用于标识同步信源。
该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
●特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。
每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。
●PT: 有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等。
●序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。
接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。
●时戳(Timestamp):占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。
接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
图6.7 RTP报头格式这里的同步信源是指产生媒体流的信源,它通过RTP报头中的一个32位数字SSRC标识符来标识,而不依赖于网络地址,接收者将根据SSRC标识符来区分不同的信源,进行RTP报文的分组。
特约信源是指当混合器接收到一个或多个同步信源的RTP报文后,经过混合处理产生一个新的组合RTP报文,并把混合器作为组合RTP报文的SSRC,而将原来所有的SSRC都作为CSRC传送给接收者,使接收者知道组成组合报文的各个SSRC。
在发送端,上层应用程序以分组形式将编码后的媒体数据传给RTP通信模块,作为RTP报文的有效载荷,RTP通信模块将根据上层应用提供的参数在有效载荷前添加RTP报头,形成RTP报文,通过Socket接口选择UDP协议发送出去。
在接收端,RTP通信模块通过Socket接口接收到RTP报文后,将RTP报头分离出来作相应处理,再将RTP报文的有效载荷作为数据分组传递给上层应用。
考虑到在Internet这种复杂的环境中举行视频会议,RTP定义了两种中间系统:混合器(Mixer)和转换器(Translator)。
在Internet上举行视频会议时,可能有少数参加者通过低速链路与使用高速网络的多数参加者相连接。
为了不强制所有会议参加者都使用低带宽和低质量的数据编码,RTP允许在低带宽区域附近使用混合器作为RTP级中继器。
混合器从一个或多个信源接收RTP报文,对到达的数据报文进行重新同步和重新组合,这些重组的数据流被混合成一个数据流,将数据编码转化为在低带宽上可用的类型,并通过低速链路向低带宽区域转发。
为了对多个输入信源进行统一的同步,混合器在多个媒体流之间进行定时调整,产生它自己的定时同步,因此所有从混合器输出的报文都把混合器作为同步信源。
为了保证接收者能够正确识别混合器处理前的原始报文发送者,混合器在RTP报头中设置了CSRC标识符队列,以标识那些产生混和报文的原始同步信源。
在Internet环境中,一些会议的参加者可能被隔离在应用级防火墙的外面,这些参加者被禁止直接使用IP组播地址进行访问,虽然他们可能是通过高速链路连接的。
在这些情况下,RTP允许使用转换器作为RTP级中继器。
在防火墙两端分别安装一个转换器,防火墙之外的转换器过滤所有接收到的组播报文,并通过一条安全的连接传送给防火墙之内的转换器,内部转换器将这些组播报文再转发送给内部网络中的组播组成员。
6.6.2 基于RTP的带宽控制方法基于RTP的带宽控制算法正是利用这种控制策略来实施强制性同步控制的,其基本思想是在RTP协议机制支持下,发送端通过接收端周期反馈的接收报告来评价当前网络传输的QoS,并以此对数据发送速率进行适当调整。
端点之间利用RTP报文和RTCP报文来实现带宽控制:①RTP报文的序号字段可用于排序RTP报文分组,以消除重复分组,保持视频或音频流内同步和连续地播放。
②RTP报文的时戳字段可作为流间同步标识,以保持视频和音频流间同步和连续地播放。
③发送者可利用接收者反馈的RTCP报文来制实施端到端的强制性同步控制,以改善当前网络传输的QoS。
1. 接收端的控制策略接收端通过RTP协议实施如下的控制策略:①SSRC字段用于标识不同的信源,以支持多对一或多对多的多媒体通信。
②时戳字段作为流间同步标识,用于媒体流间的流间控制,以保持视频和音频流间同步和连续地播放,并作为时间量用于计算报文分组的传输延时、延时抖动以及数据更新周期等,滤除严重延时的RTP报文分组。
③序号字段作为流内同步标识,用于排序RTP报文分组,消除重复报文分组,保持视频或音频流内同步和连续地播放。
④将接收端检测到的当前网络QoS状况通过RTCP的接收报告周期地反馈给发送端。
2. 发送端的控制策略发送端将采用如下的控制算法来调整传送带宽。
①设bs为发送端当前的带宽,bmin和bmax分别为应用所设置的最小带宽和最大带宽,且bs [bmin,bmax]。
②在每个发送带宽级上保持一个时间片,超时后将根据网络QoS 状况提高或降低一个带宽级,以避免带宽频繁波动。
这里使用报文丢失率作为QoS指示器,并设置一个阈值。
如果QoS指示器超阈,说明网络发生阻塞,通过改变发送速率来调整传送带宽,疏导网络交通。
③初始时按最大带宽发送报文分组,即bs←bmax,以提高网络通道的利用率。
④如果在规定的时间片内QoS指示器超阈,说明网络发生阻塞,则在超时后需要降低一个带宽级,即bs← max { bs-μ,bmin },其中μ为比例因子。
⑤如果在规定的时间片内QoS指示器未超阈,说明网络交通状况良好,则在超时后应当提高一个带宽级,即bs← min { bs+μ,bmax }。
⑥在点到多点通信场合中,发送者将面对多个不同网段上的接收者,而每个网段的交通状况又不尽相同。
因此,在改变带宽时可采用多数表决法,即当报文丢失率超阈的接收者超过一定比例时再改变带宽。
RTP协议实时传输协议RTP提供了实时信息的端对端传输业务,如交互的语音和图象;这些业务包括负载类型识别,序列编号,加入时间标志,传输监视.典型的应用是在UDP层上传输RTP包,以利用它的复用和总和检测业务.RTP包括两个紧密相关的部分:- 实时传输协议(RTP),传输有实时特性的信息;- RTP控制协议(RTCP),监视业务质量和传输对话中成员的信息.RTP包头RTP头有以下格式:0 1 2 30 1 23 4 5 6 7 89 0 1 2 3 45 6 7 8 90 1 2 34 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P|X| CC |M| PT | 序列号|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 时间标志|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 同步源(SSRC)识别符|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 有贡献源(CSRC)识别符|| ... ... |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+RTP包头格式前12个字节出现在每个RTP包中,仅仅在被混合器插入时,才出现CSRC识别符列表.这些域有以下意义:版本(V):2比特此域定义了RTP的版本.此协议定义的版本是2.(值1被RTP草案版本使用,值0用在最初"vat"语音工具使用的协议中.)填料(P):1比特若填料比特被设置,此包包含一到多个附加在末端的填充比特,不是负载的一部分.填料的最后一个字节包含可以忽略多少个填充比特.填料可能用于某些具有固定长度的加密算法,或者在底层数据单元中传输多个RTP包.扩展(X):1比特若设置扩展比特,固定头(仅)后面跟随一个头扩展.CSRC计数(CC):4比特CSRC计数包含了跟在固定头后面CSRC识别符的数目.标志(M):1比特标志的解释由具体协议规定.它用来允许在比特流中标记重要的事件,如帧范围.规定该标志在静音后的第一个语音包时置位.负载类型(PT):7比特此域定义了负载的格式,由具体应用决定其解释.协议可以规定负载类型码和负载格式之间一个默认的匹配.其他的负载类型码可以通过非RTP方法动态定义.RTP发射机在任意给定时间发出一个单独的RTP负载类型;此域不用来复用不同的媒体流.序列号:16比特每发送一个RTP数据包,序列号加一,接收机可以据此检测包损和重建包序列.序列号的初始值是随机的(不可预测),以使即便在源本身不加密时(有时包要通过翻译器,它会这样做),对加密算法泛知的普通文本攻击也会更加困难.时间标志:32比特时间标志反映了RTP数据包中第一个比特的抽样瞬间.抽样瞬间必须由随时间单调和线形增长的时钟得到,以进行同步和抖动计算.时钟的分辨率必须满足要求的同步准确度,足以进行包到达抖动测量.时钟频率与作为负载传输的数据格式独立,在协议中或定义此格式的负载类型说明中静态定义,也可以在通过非RTP方法定义的负载格式中动态说明.若RTP包周期性生成,可以使用由抽样时钟确定的额定抽样瞬间,而不是读系统时钟.例如,对于固定速率语音,时间标志钟可以每个抽样周期加 1.若语音设备从输入设备读取覆盖160个抽样周期的数据块,对于每个这样的数据块,时间标志增加160,无论此块被发送还是被静音压缩.时间标志的起始值是随机的,如同序列号.多个连续的RTP包可能由同样的时间标志,若他们在逻辑上同时产生.如属于同一个图象帧.若数据没有按照抽样的顺序发送,连续的RTP包可以包含不单调的时间标志,如MPEG交织图象帧. SSRC:32比特SSRC域用以识别同步源.标识符被随机生成,以使在同一个RTP会话期中没有任何两个同步源有相同的SSRC识别符.尽管多个源选择同一个SSRC识别符的概率很低,所有RTP实现工具都必须准备检测和解决冲突.若一个源改变本身的源传输地址,必须选择新的SSRC识别符,以避免被当作一个环路源.CSRC列表:0到15项,每项32比特CSRC列表识别在此包中负载的有贡献源.识别符的数目在CC域中给定.若有贡献源多于15个,仅识别15个.CSRC识别符由混合器插入,用有贡献源的SSRC识别符.例如语音包,混合产生新包的所有源的SSRC标识符都被陈列,以期在接收机处正确指示交谈者.RTP头扩展RTP提供扩展机制以允许实现个性化:某些新的与负载格式独立的功能要求的附加信息在RTP数据数据包头中传输.设计此方法可以使其它没有扩展的交互运行忽略此头扩展.RTP头扩展的格式如下图所示.0 1 2 30 1 2 34 5 6 78 9 0 1 2 3 4 56 7 8 90 1 23 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 由协议定义| 长度|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 头扩展|| ... ... |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+若RTP头中的扩展比特位置1,则一个长度可变的头扩展部分被加到RTP固定头之后,.头扩展包含16比特的长度域,指示扩展项中32比特字的个数,不包括4个字节扩展头(因此零是有效值).RTP固定头之后只允许有一个头扩展.为允许多个互操作实现独立生成不同的头扩展,或某种特定实现有多种不同的头扩展,扩展项的前16比特用以识别标识符或参数.这16比特的格式由具体实现的上层协议定义.基本的RTP说明并不定义任何头扩展本身.---------------------------------------------------------------------------------- 作者:helloworld-- 发布时间:2004-11-4 23:36:43--RTP控制协议RTCPRTP控制协议(RTCP)向会议中所有成员周期性发送控制包,利用与数据包相同的传输机制.底层协议必须提供数据包和控制包的复用,例如用不同的UDP端口.RTCP执行四个功能.- 基本功能是提供数据传输质量的反馈.这是RTP作为一种传输协议的主要作用,它与其他协议的流量和阻塞控制相关.反馈可能对自适应编码有直接作用,但是IP组播的实验表明它对于从接收机得到反馈信息以诊断传输故障也有决定性作用.向所有成员发送接收反馈可以使"观察员"评估这些问题是局部的还是全局的.利用类似多点广播的传输机制,可以使某些实体,诸如没有加入会议的网络网络业务观察员,接收到反馈信息并作为第三类监视员来诊断网络故障.反馈功能通过RTCP发射机和接收机报告实现.- RTCP为每个RTP源传输一个固定的识别符,称为标称名或CNAME.由于当发生冲突或程序重启时SSRC可能改变,接收机要用CNAME来跟踪每个成员.接收机还要用CNAME来关联一系列相关RTP会话期中来自同一个成员的多个数据流,例如同步语音和图象.- 头两个功能要求所有成员都发送RTCP包,因此必须控制速率以使RTP成员数可以逐级增长.通过让每个成员向所有成员发送控制包,各个成员都可以独立地观察会议中所有成员的数目.此数目可以用来估计发包数率.- 第四个可选的功能是传输最少的会议控制信息,例如在用户接口中显示的成员识别.这最可能在"松散控制"的会议中起作用,在"松散控制"会议里,成员可以不经过资格控制和参数协商而加入或退出会议.RTCP作为一个延伸到所有成员的方便通路,必须要支持具体应用所需的所有控制信息通信.- 在RTP用于IP多点广播时,功能1-3是强制的,在所有情况下都推荐使用.建议RTP 应用开发商避免使用只能用于单向广播而不能递增到多用户的方法.RTCP包格式这部分定义了几个RTCP包类型,可以传送不同的控制信息:- SR:发射机报告,描述作为活跃发射机成员的发送和接收统计数字;- RR:接收机报告,描述非活跃发射机成员的接收统计数字;在本文中详细介绍SR和RR.每个RTCP包的开始部分是与RTP数据包相类似的固定部分,随后是一块结构化单元,它随负载类型不同长度发生变化,但是总以32比特终止.对齐要求和长度域使RTCP包可"堆栈",既可以将多个RTCP包形成一个复合RTCP包,在底层协议(如UDP)中,通常都是将复合包作为一个包传输的.复合包中的每个RTCP单包可以单独处理,而无需考虑包复合的顺序.然而,为了实现某些协议功能,添加以下限制:- 接收统计数字(SR或RR),经常作为带宽限制值,尽可能达到统计数字的最大分辨率,因此每个周期发送的RTCP包必须包含一个报告包.- 必须限制首次在复合包中出现的包类型数目,以增加在第一个字中常数比特的数目,这样可以增加RTCP包的有效性,以区分误传的RTP包和其他无关包.因此,所有RTCP包必须在至少包含两个单包的复合包中传输,具有以下推荐格式:- 加密前缀:当且仅当复合包被加密时,对每个RTCP复合包加32比特的前缀.- SR或RR:复合包中的第一个RTCP包必须是一个报告包.即使没有数据发送和接收,此时发送空的RR包,或者复合包中其他的唯一包是BYE包,也必须发送报告包.- 附加的RR:若被报告的接收统计源数目超过SR/RR包中最大允许的31个,附加的RR必须跟在最初的报告包后面.RTCP发送机制RTCP包发送机制:在两次RTCP报文之间,若端点没有发出任何RTP报文,则端点此次发送RR(接收报文),否则,端点发送SR(发送报文),RTCP包每秒发送一次.发射机和接收机报告RTP接收机利用RTCP报告包提供接收质量反馈,根据接收机是否同时还是发射机RTCP包采取两种不同的形式.发射机报告(SR)和接收机报告(RR)格式中唯一的不同,包括包类型码,在于发射机报告包括20字节活跃发射机专有的发射机信息部分.SR包和RR包都包括零到多个接收报告块,针对该接收机发出上一个报告块后接收到RTP包的起始同步源,每个源一个块.在CSRC列表中陈列的有贡献源不发送报告块.每个接收报告块提供从此块中指示的特定源接收到数据的统计数字.由于在SR/RR包中最多允许31接收报告块,可以在最初的SR或RR包之后堆栈附加的RR包,包含在上一个报告以来的间隔内收听到的所有源的接收报告.以下部分定义了两种报告的格式.SR:发射机报告RTCP包0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P| RC | PT=SR=200 | 长度|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 发送者的SSRC |+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+| NTP 时戳, 高字节|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| NTP 时戳, 低字节|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| RTP 时戳|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 发送的报文数|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 发送的字节数|+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+| SSRC_1 (第一个源的SSRC) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 丢包率| 累计包丢失数|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 接收到的扩展的最高序列号|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 到达间隔抖动|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 上一SR报文(LSR) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 自上一SR的时间(DLSR) |+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+| SSRC_2 (第二个源的SSRC) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+: ... :+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+| 特定协议扩展|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+发射机报告包由3部分组成,若定义,可能跟随第4个面向协议的扩展部分.第一部分,8字节长.该域有以下意义:版本(V):2比特RTP版本识别符,在RTCP包内的意义与RTP包中的相同.此协议中定义的版本号为2.填料(P):1比特若设置填料比特,该RTCP包在末端包含一些附加填料比特,并不是控制信息的基本部分.填料的最后一个比特统计了多少个字节必须被忽略.某些有固定块大小的加密算法可能需要填料比特.在复合RTCP包中,复合包作为一个整体加密,填料比特只能加在最后一个单包的后面.接收报告块计数(RC):5比特该包中所含接收报告块的数目.零值有效.包类型(PT):8比特包含常数200,用以识别这个为RTCP SR包.长度:16比特以32比特字为单位,该RTCP包的长度减一,包括头和任何填料.(偏移量1保证零值有效,避免了在扫描RTCP包长度时可能发生的无限循环,同时以32比特为单位避免了对以4为倍数的有效性检测.)SSRC:32比特SR包发起者的同步源标识符.第二部分,发射机信息,20比特长,在每个发射机报告包中出现.它概括了从此发射机发出的数据传输情况.此域有以下意义:NTP时间标志:64比特指示了此报告发送时的壁钟时刻,它可以与从其它接收机返回的接收报告块中的时间标志结合起来,测量到这些接收机的环路时沿.接收机必须期望此时间标志的准确度远低于NTP时间标志的分辨率.测量的不确定度不可知,因此也无需指示.某个发射机,能够跟踪逝去时间但是无法跟踪壁钟时间,可以用加入会议后的逝去时间代替.假定该值小于68年,则最高比特为零.允许用抽样时钟估计逝去壁钟时间.无法用壁钟时间或逝去时间的可以设置此项为零.RTP时间标志:32比特与以上的NTP时间标志对应同一时刻,但是与数据包中的RTP时间标志具有相同的单位和偏移量.这个一致性可以用来让NTP时间标志已经同步的源间进行媒体内/间同步,还可以让与媒体无关的接收机估计标称RTP时钟频率.注意在大多数情况下此时间标志不等于任何临近的RTP包中的时间标志.然而,通过"RTP时间标志计数器"和"由在抽样点上周期性检测壁钟时间得到的实际时间"两者之间的关系,可以通过相应的NTP时间标志计算得到此RTP时间标志.发送的报文数:32比特从开始传输到此SR包产生时该发射机发送的RTP数据包总数.若发射机改变SSRC识别符,该计数器重设.发送的字节文数:32比特从开始传输到此SR包产生时该发射机在RTP数据包发送的字节总数(不包括头和填料).若发射机改变SSRC识别符,该计数器重设.此域可以用来估计平均负载类型数据速率.第三部分零到多个接收报告块,块数等于从上一个报告以来该发射机收听到的其它源的数目.每个接收报告块传输关于从某个同步源来的数据包的接收统计信息.若某个源因冲突而改变其SSRC识别符,接收机并不延续统计数字.这些统计数字是:SSRC_n(源识别符):32比特在此接收报告块中信息所属源的SSRC识别符.丢包率:8比特自从前一SR包或RR包发射以来,从SSRC_n传来的RTP数据包的损失比例,以固定点小数的形式表示,小数点在此域的左侧,等于将损失比例乘256后取整数部分.该值定义为损失包数被期望接收的包数除,在下一段中定义.若由于复制而导致包损为负值,损失比例值设为零.注意在收到上一个包后,接收机无法告之以后的包是否丢失,若在上一个接收报告间隔内从某个源发出的所有数据包都丢失,那么将不为此源发送接收报告块.累计包丢失数:24比特从开始接收到现在,从源SSRC_n发到本源的RTP数据包的丢包总数.该值定义为期望接收的包数减去实际接收的包数,接收的包括复制的或迟到的.由于迟到的包不算作损失,在发生复制时包损可能为负值.期望接收的包数定义为扩展的上一接收序号(随后定义)减去最初接收序号.接收到的扩展的最高序列号:32比特低16比特包含从源SSRC_n来的最高接收序列号,高16比特用相应的序列号周期计数器扩展该序列号.注意在同一会议中的不同接收机,若启动时间明显不同,将产生不同的扩展项.到达间隔抖动:32比特RTP数据包到达时刻统计方差的估计值,以时间标志为单位测量,用无符号整数表达.到达时刻抖动J定义为一对包中接收机相对发射机的时间跨度差值的平均偏差(平滑后的绝对值).如以下等式所示,该值等于两个包相对传输时间的差值,相对传输时间是指包的RTP时间标志和到达时刻接收机时钟,以同一单位的差值.若Si是包i的RTP时间标志,Ri是包i以RTP时间标志单位的到达时刻值,对于两个包i 和j,D可以表达为D(i,j)=(Rj-Sj)-(Ri-Si);到达时刻抖动可以在收到从源SSRC_n来的每个数据包i后连续计算,利用该包和前一包i-1的偏差D(按到达顺序,而非序号顺序),根据公式J=J+(|D(i-1,i)|-J)/16计算.无论何时发送接收报告,都用当前的J值.此处描述的抖动计算允许与协议独立的监视器对来自不同实现的报告进行有效的解释.上一SR报文(LSR):32比特接收到的来自源SSRC_n的最新RTCP发射机报告(SR)的64位NTP时间标志的中间32位.若还没有接收到SR,该域值为零.自上一SR的时间(DLSR):32比特是从收到来自SSRC_n的SR包到发送此接收报告块之间的延时,以1/65536秒为单位.若还未收到来自SSRC_n的SR包,该域值为零.假设SSRC_r为发出此接收报告块的接收机.源SSRC_n可以通过记录收到此接收报告块的时刻A来计算到SSRC_r的环路传输时延.可以利用最新的SR时间标志(LSR)域计算整个环路时间A-LSR,然后减去此DLSR域得到环路传播时延.可以用此来近似测量到一族接收机的距离,尽管有些连接可能有非常不对称的时延.接收机报告RTCP包0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P| RC | PT=RR=201 | 长度|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 报文发送者的SSRC |+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+| SSRC_1 (第一个源的SSRC) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 丢包率| 累计包丢失数|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 接收到的扩展的最高序列号|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 到达间隔抖动|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 上一SR (LSR) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 自上一SR的时间(DLSR) |+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+| SSRC_2 (第二个源的SSRC) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+: ... :+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ =+| 特定协议扩展|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+接收机报告包(RR)与发射机报告包基本相同,除了包类型域包含常数201和没有发射机信息的5个字(NTP和RTP时间标志和发射机包和字节计数).余下区域与SR包意义相同.若没有发送和接收据报告,在RTCP复合包头部加入空的RR包(RC=0).分析发射机和接收机报告接收质量反馈不仅对发射机有用,而且对于其它接收机和第三派监视器也有作用.发射机可以基于反馈修正发送信息量;接收机可以判断问题是本地的,区域内的还是全球的;网络管理者可以利用与协议无关的监视器(只接收RTCP包但是不接收相应的RTP包)去评估多点传送网络的性能.在发射机信息和接收机报告块中都连续统计丢包数,因此可以计算任何两个报告块中的差别,在短时间和长时间内都可以进行测算,最近收到的两个包之间差值可以评估当前传输质量.包中有NTP时间标志,可以用两个报告间隔的差值计算传输速率.由于此时间间隔与数据编码始终速率独立,可以实现与编码及协议独立的质量监视.从发射机信息中,第三派监视器可以在一个时间间隔内计算平均负载数据速率和平均发包速率,而无需考虑数据接收.两个值的比就是平均负载大小.若能假定包损与包的大小无关,那么某个特定接收机收到的包数乘以平均负载大小(或相应的包大小)就得出接收机可得到的外在吞吐量.除了累计计数允许利用报告间差值进行长期包损测量外,单个报告的包损比例域提供一个短时测量数据.当会议规模递增到无法为所有接收机保存接收状态信息,或者报告间隔变得足够长以至于从一个特定接收机只能收到一个报告时,短时测量数据变得更重要.到达间隔抖动域提供另一个有关网络阻塞的短时测量量.包损追踪长期阻塞,抖动测量追踪短时阻塞.抖动测量可以在导致包损前指示阻塞.由于到达间隔抖动域仅仅是发送报告时刻抖动的一个快照,因此需要在一个网络内在一段时间内分析来自某个接收机的报告,或者分析来自多个接收机的报告.负载类型注意并非所有RTP所用的编码方式都分配了静态负载类型号.可以建立在96-127间的负载类型值与编码方式间的动态匹配.可用的负载类型空间比较小.仅在满足以下条件时分配新的静态负载类型:- 很多因特网社团都对此编码感兴趣;- 与现存编码方式比较有好处和/或要求与现有广泛使用会议及多媒体系统互通;- 描述足以建立一个译码器.下表为RTP数据头的PT域定义了静态负载类型.此外,96-127之间的负载类型值可以通过会议控制协议动态定义.例如,一个会话期可以在一个给定会话期内,指定负载类型96指示PCMU编码,8,000抽样率,双通道.负载类型值表的"保留"项用以使RTP和RTCP包可以被可靠识别.一个RTP源在任何给定时刻,只能发射一个RTP负载类型;不允许在一个RTP对话期中交织多个RTP负载类型,但是可以并行存在多个RTP对话期以发送多媒体.此协议中定义的负载类型传输或者语音,或者图象,但是不允许两者同传.PT 编码语音/图象时钟速率通道(A/V) (Hz) (语音)0 PCMU A 8000 18 PCMA A 8000 19 G722 A 8000 1。