安徽省住建厅网站建设,现在都不用dw做网站了吗,搜索引擎营销实训报告,国内做网站网站风险大吗1.1. RTP是什么 RTP全名是Real-time Transport Protocol#xff08;实时传输协议#xff09;。它是IETF提出的一个标准#xff0c;对应的RFC文档为RFC3550#xff08;RFC1889为其过期版本#xff09;。RFC3550不仅定义了RTP#xff0c;而且定义了配套的相关协议RTCP实时传输协议。它是IETF提出的一个标准对应的RFC文档为RFC3550RFC1889为其过期版本。RFC3550不仅定义了RTP而且定义了配套的相关协议RTCPReal-time Transport ControlProtocol即实时传输控制协议。RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步但并不保证服务质量服务质量由RTCP来提供。 1.2. RTP的应用环境 RTP用于在单播或多播网络中传送实时数据。它们典型的应用场合有如下几个。 简单的多播音频会议。语音通信通过一个多播地址和一对端口来实现。一个用于音频数据RTP另一个用于控制包RTCP。 音频和视频会议。如果在一次会议中同时使用了音频和视频会议这两种媒体将分别在不同的RTP会话中传送每一个会话使用不同的传输地址IP地址端口。如果一个用户同时使用了两个会话则每个会话对应的RTCP包都使用规范化名字CNAMECanonicalName。与会者可以根据RTCP包中的CNAME来获取相关联的音频和视频然后根据RTCP包中的计时信息(Network timeprotocol)来实现音频和视频的同步。 翻译器和混合器。翻译器和混合器都是RTP级的中继系统。翻译器用在通过IP多播不能直接到达的用户区例如发送者和接收者之间存在防火墙。当与会者能接收的音频编码格式不一样比如有一个与会者通过一条低速链路接入到高速会议这时就要使用混合器。在进入音频数据格式需要变化的网络前混合器将来自一个源或多个源的音频包进行重构并把重构后的多个音频合并采用另一种音频编码进行编码后再转发这个新的RTP包。从一个混合器出来的所有数据包要用混合器作为它们的同步源SSRC见RTP的封装来识别可以通过贡献源列表CSRC表见RTP的封装可以确认谈话者。 1.3. 相关概念 1.3.1. 流媒体 流媒体是指Internet上使用流式传输技术的连续时基媒体。当前在Internet上传输音频和视频等信息主要有两种方式下载和流式传输两种方式。 下载情况下用户需要先下载整个媒体文件到本地然后才能播放媒体文件。在视频直播等应用场合由于生成整个媒体文件要等直播结束也就是用户至少要在直播结束后才能看到直播节目所以用下载方式不能实现直播。 流式传输是实现流媒体的关键技术。使用流式传输可以边下载边观看流媒体节目。由于Internet是基于分组传输的所以接收端收到的数据包往往有延迟和乱序流式传输构建在UDP上。要实现流式传输就是要从降低延迟和恢复数据包时序入手。在发送端为降低延迟往往对传输数据进行预处理降低质量和高效压缩。在接收端为了恢复时序采用了接收缓冲而为了实现媒体的流畅播放则采用了播放缓冲。 使用接收缓冲可以将接收到的数据包缓存起来然后根据数据包的封装信息如包序号和时戳等将乱序的包重新排序最后将重新排序了的数据包放入播放缓冲播放。 为什么需要播放缓冲呢容易想到由于网络不可能很理想并且对数据包排序需要处理时耗我们得到排序好的数据包的时间间隔是不等的。如果不用播放缓冲那么播放节目会很卡这叫时延抖动。相反使用播放缓冲在开始播放时花费几十秒钟先将播放缓冲填满例如PPLIVE可以有效地消除时延抖动从而在不太损失实时性的前提下实现流媒体的顺畅播放。 到目前为止,Internet 上使用较多的流式视频格式主要有以下三种:RealNetworks 公司的RealMedia,Apple 公司的QuickTime 以及Microsoft 公司的AdvancedStreaming Format (ASF) 。 上面在谈接收缓冲时说到了流媒体数据包的封装信息包序号和时戳等这在后面的RTP封装中会有体现。另外RealMedia这些流式媒体格式只是编解码有不同但对于RTP来说它们都是待封装传输的流媒体数据而没有什么不同。 第2章. RTP详解 2.1. RTP的协议层次 2.1.1. 传输层的子层 RTP实时传输协议顾名思义它是用来提供实时传输的因而可以看成是传输层的一个子层。图 1给出了流媒体应用中的一个典型的协议体系结构。 图 1 流媒体体系结构 从图中可以看出RTP被划分在传输层它建立在UDP上。同UDP协议一样为了实现其实时传输功能RTP也有固定的封装形式。RTP用来为端到端的实时传输提供时间信息和流同步但并不保证服务质量。服务质量由RTCP来提供。这些特点在第4章可以看到。 2.1.2. 应用层的一部分 不少人也把RTP归为应用层的一部分这是从应用开发者的角度来说的。操作系统中的TCP/IP等协议栈所提供的是我们最常用的服务而RTP的实现还是要靠开发者自己。因此从开发的角度来说RTP的实现和应用层协议的实现没不同所以可将RTP看成应用层协议。 RTP实现者在发送RTP数据时需先将数据封装成RTP包而在接收到RTP数据包需要将数据从RTP包中提取出来。 2.2. RTP的封装 一个协议的封装是为了满足协议的功能需求的。从前面提出的功能需求可以推测出RTP封装中应该有同步源和时戳等字段但更为完整的封装是什么样子呢请看图2。 图 2 RTP的头部格式 版本号V2比特用来标志使用的RTP版本。 填充位P1比特如果该位置位则该RTP包的尾部就包含附加的填充字节。 扩展位X1比特如果该位置位的话RTP固定头部后面就跟有一个扩展头部。 CSRC计数器CC4比特含有固定头部后面跟着的CSRC的数目。 标记位M1比特,该位的解释由配置文档Profile来承担. 载荷类型PT7比特标识了RTP载荷的类型。 序列号SN16比特发送方在每发送完一个RTP包后就将该域的值增加1接收方可以由该域检测包的丢失及恢复包序列。序列号的初始值是随机的。 时间戳32比特记录了该包中数据的第一个字节的采样时刻。在一次会话开始时时间戳初始化成一个初始值。即使在没有信号发送时时间戳的数值也要随时间而不断地增加时间在流逝嘛。时间戳是去除抖动和实现同步不可缺少的。 同步源标识符(SSRC)32比特同步源就是指RTP包流的来源。在同一个RTP会话中不能有两个相同的SSRC值。该标识符是随机选取的 RFC1889推荐了MD5随机算法。 贡献源列表CSRCList015项每项32比特用来标志对一个RTP混合器产生的新包有贡献的所有RTP包的源。由混合器将这些有贡献的SSRC标识符插入表中。SSRC标识符都被列出来以便接收端能正确指出交谈双方的身份。 2.3. RTCP的封装 RTP需要RTCP为其服务质量提供保证因此下面介绍一下RTCP的相关知识。 RTCP的主要功能是服务质量的监视与反馈、媒体间的同步以及多播组中成员的标识。在RTP会话期 间各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料因此各参与者可以利用这些信息动态地改变传输速率甚至改变有效载荷类型。RTP和RTCP配合使用它们能以有效的反馈和最小的开销使传输效率最佳化因而特别适合传送网上的实时数据。 从图 1可以看到RTCP也是用UDP来传送的但RTCP封装的仅仅是一些控制信息因而分组很短所以可以将多个RTCP分组封装在一个UDP包中。RTCP有如下五种分组类型。 类型 缩写表示 用途 200 SRSender Report 发送端报告 201 RRReceiver Report 接收端报告 202 SDESSource Description Items 源点描述 203 BYE 结束传输 204 APP 特定应用 表 1 RTCP的5种分组类型 上述五种分组的封装大同小异下面只讲述SR类型而其它类型请参考RFC3550。 发 送端报告分组SRSenderReport用来使发送端以多播方式向所有接收端报告发送情况。SR分组的主要内容有相应的RTP流的SSRCRTP流中最新产生的RTP分组的时间戳和NTPRTP流包含的分组数RTP流包含的字节数。SR包的封装如图3所示。 图 3 RTCP头部的格式 版本V同RTP包头域。 填充P同RTP包头域。 接收报告计数器RC5比特该SR包中的接收报告块的数目可以为零。 包类型PT8比特SR包是200。 长度域Length16比特其中存放的是该SR包以32比特为单位的总长度减一。 同步源SSRCSR包发送者的同步源标识符。与对应RTP包中的SSRC一样。 NTP TimestampNetwork timeprotocolSR包发送时的绝对时间值。NTP的作用是同步不同的RTP媒体流。 RTP Timestamp与NTP时间戳对应与RTP数据包中的RTP时间戳具有相同的单位和随机初始值。 Sender’s packet count从开始发送包到产生这个SR包这段时间里发送者发送的RTP数据包的总数.SSRC改变时这个域清零。 Senders octetcount从开始发送包到产生这个SR包这段时间里发送者发送的净荷数据的总字节数不包括头部和填充。发送者改变其SSRC时这个域要清零。 同步源n的SSRC标识符该报告块中包含的是从该源接收到的包的统计信息。 丢失率FractionLost表明从上一个SR或RR包发出以来从同步源n(SSRC_n)来的RTP数据包的丢失率。 累计的包丢失数目从开始接收到SSRC_n的包到发送SR,从SSRC_n传过来的RTP数据包的丢失总数。 收到的扩展最大序列号从SSRC_n收到的RTP数据包中最大的序列号 接收抖动Interarrival jitterRTP数据包接受时间的统计方差估计 上次SR时间戳LastSR,LSR取最近从SSRC_n收到的SR包中的NTP时间戳的中间32比特。如果目前还没收到SR包则该域清零。 上次SR以来的延时Delay since last SR,DLSR上次从SSRC_n收到SR包到发送本报告的延时。 2.4. 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章. 相关的协议 3.1. 实时流协议RTSP 实时流协议RTSPReal-Time StreamingProtocol是IETF提出的协议对应的RFC文档为RFC2362。 从图 1可以看出RTSP是一个应用层协议TCP/IP网络体系中。它以C/S模式工作它是一个多媒体播放控制协议主要用来使用户在播放流媒体时可以像操作本地的影碟机一样进行控制即可以对流媒体进行暂停/继续、后退和前进等控制。 3.2. 资源预定协议RSVP 资源预定协议RSVP(Resource ReservationProtocol)是IETF提出的协议对应的RFC文档为RFC2208。 从图 1可以看出RSVP工作在IP层之上传输层之下是一个网络控制协议。RSVP通过在路由器上预留一定的带宽能在一定程度上为流媒体的传输提供服务质量。在某些试验性的系统如网络视频会议工具vic中就集成了RSVP。 第4章. 常见的疑问 4.1. 怎样重组乱序的数据包 可以根据RTP包的序列号来排序。 4.2. 怎样获得数据包的时序 可以根据RTP包的时间戳来获得数据包的时序。 4.3. 声音和图像怎么同步 根据声音流和图像流的相对时间即RTP包的时间戳以及它们的绝对时间即对应的RTCP包中的RTCP可以实现声音和图像的同步。 4.4. 接收缓冲和播放缓冲的作用 如1.3.1所述接收缓冲用来排序乱序了的数据包播放缓冲用来消除播放的抖动实现等时播放。