• 实时传输协议RTP与RTCP

     RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口:一个给RTP,一个给RTCP。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。实时传输控制协议RTCP。RTCP(Real-timeTransportControlProtocol)和RTP一起提供流量控制和拥塞控制服务。在RTP会话期间,各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。

    6.2.1 RTP数据传输协议

     RTP提供端对端网络传输功能,适合通过组播和点播传送实时数据,如视频、音频和仿真数据。RTP没有涉及资源预订和质量保证等实时服务,RTCP扩充数据传输以允许监控数据传送,提供最小的控制和识别功能。RTP与RTCP设计成独立传输和网络层。

    6.2.1.1 RTP固定头
     RTP 头格式如下:
     -----------------------------------------------------------------------------------------------
     |V=2|P|X| CC |M| PT | 系列号 |
     -----------------------------------------------------------------------------------------------
     | 时标 |
     -----------------------------------------------------------------------------------------------
     | 同步源标识(SSRC) |
     -----------------------------------------------------------------------------------------------
     | 作用标识 (CSRC) |
     | .... |
     -----------------------------------------------------------------------------------------------

     开始12个八进制出现在每个RTP包中,而CSRC标识列表仅出现在混合器插入时。
     6.2.1.2 复用 RTP 连接
     为使协议有效运行,复用点数目应减至最小。RTP中,复用由定义RTP连接的目的传输地址(网络地址与端口号)提供。例如,对音频和视频单独编码的远程会议,每个媒介被携带在单独RTP连接中,具有各自的目的传输地址。目标不在将音频和视频放在单一RTP连接中,而根据SSRC段载荷类型进行多路分解。使用同一SSRC ,而具有不同载荷类型的交叉包将带来几个问题:
     如一种载荷类型在连接期间切换,没有办法识别新值将替换那一个旧值。
    SSRC定义成用于标识单个计时和系列号空间。如媒体时钟速率不同,而要求不同系列号空间以说明那种载荷类型有丢包,交叉复用载荷类型将需要不同计时空间。
     RTCP发送和接收报告可能仅描述每个SSRC的计时和系列号空间,而不携带载荷类型段。
     RTP混合器不能将不兼容媒体流合并成一个流。
     在一个RTP连接中携带多个媒介阻止几件事:使用不同网络路径或网络资源分配;接受媒介子集。
    对每种媒介使用不同SSRC,但以相同RTP连接发送可避免前三个问题,但不能避免后两个问题。

    6.2.1.3 对RTP头特定设置的修改
     可以认为,现用RTP数据包头对RTP支持的所有应用类共同需要的功能集是完整的。然而,为维持ALF设计原则,头可通过改变或增加设置来裁剪,并仍允许设置无关监控和记录工具起作用。标记位与载荷类型段携带特定设置信息,但由于很多应用需要它们,否则要容纳它们,就要增加另外32位字,故允许分配在固定头中。包含这些段的八进制可通过设置重新定义以适应不同要求,如采用更多或更少标记位。如有标记位,既然设置无关监控器能观察包丢失模式和标记位间关系,我们就可以定位八进制中最重要的位。
     其它特殊载荷格式(视频编码)所要求的信息应该携带在包的载荷部分。可出现在头,总是在载荷部分开始处,或在数据模式的保留值中指出。如特殊应用类需要独立载荷格式的附加功能,应用运行的设置应该定义附加固定段跟随在现存固定头SSRC之后。这些应用将能迅速而直接访问附加段,同时,与监控器和记录器无关设置仍能通过仅解释开始12个八进制处理RTP包。如证实附加功能是所有设置共同需要的,新版本RTP应该对固定头作出明确改变。

    6.2.2 RTP控制协议-- RTCP
      RTCP协议将控制包周期发送给所有连接者,应用与数据包相同的分布机制。低层协议提供数据与控制包的复用,如使用单独的UDP端口号。RTCP执行下列四大功能:
      主要是提供数据发布的质量反馈。是作为RTP传输协议的一部分,与其他传输协议的流和阻塞控制有关。反馈对自适应编码控制直接起作用,但IP组播经验表明,从发送者收到反馈对诊断发送错误是致关重要的。给所有参加者发送接收反馈报告允许问题观察者估计那些问题是局部的,还是全局的。诸如IP组播等发布机制使网络服务提供商类团体可能接收反馈信息,充当第三方监控者来诊断网络问题。反馈功能由RTCP发送者和接收者报告执行。
      RTCP带有称作规范名字(CNAME)的RTP源持久传输层标识。如发现冲突,或程序重新启动,既然SSRC标识可改变,接收者需要CNAME跟踪参加者。接收者也需要CNAME 与相关RTP连接中给定的几个数据流联系
      前两种功能要求所有参加者发送RTCP包,因此,为了RTP扩展到大规模数量,速率必须受到控制。让每个参加者给其它参加者发送控制包,就大独立观察参加者数量。该数量用语计算包发送的速率。
      第四个可选功能是传送最小连接控制信息,如参加者辨识。最可能用在\"松散控制\"连接,那里参加者自由进入或离开,没有成员控制或参数协调,RTCP充当通往所有参加者的方便通道,但不必支持应用的所有控制通讯要求。高级连接控制协议超出本书范围。
      在IP组播场合应用RTP时,前3个功能是必须的,推荐用于所有情形。RTP应用设计人员必须避免使用仅在单播模式下工作的机制,那将导致无法扩展规模。
     
      6.2.2.1 RTCP 包格式
      下面定义几个携带不同控制信息的RTCP包类型:
      SR: 发送报告,当前活动发送者发送、接收统计。
      RR: 接收报告,非活动发送者接收统计。
      SDES: 源描述项,包括CNAME。
      BYE: 表示结束。
      APP: 应用特定函数。
      类似于RTP数据包,每个RTCP包以固定部分开始,紧接着的是可变长结构元素,但以一个32位边界结束。包含安排要求和固定部分中长度段,使RTCP包可堆叠。不需要插入任何分隔符将多哥RTCP包连接起来形成一个RTCP组合包,以低层协议用单一包发送出去。由于需要低层协议提供提供整体长度来决定组合包的结尾,在组合包中没有单个RTCP包显式计数。
      组合包中每个RTCP包可独立处理,不需要根据包组合顺序。但未了执行协议功能,强加如下约束:
      接收统计(在SR或RR中)应该经常发送,只要带宽允许,因此每个周期发送的组合RTCP 包应包含报告包。
      新接收者需要接收CNAME,并尽快识别源,开始联系媒介进行同步,因此每个包应该包含SDES CNAME。
      出现在组合包前面的是包类型数量,其增长应该受到限制,以提高常数位数量,提高成功确认RTCP包对错误地址RTP数据包或其他无关包的概率。
      因此,所有RTCP包至少必须以两个包组合形式发送,推荐格式如下:
      加密前缀(Encryption prefix):
      仅当组合包被加密,才加上一个32位随机数用于每个组合包发送。
      SR或RR:
      组合包中第一个RTCP包必须总为一个报告包,方便头的确认。即使没有数据发送,也没有接收到数据,也要发送一个空RR,那怕组合包中RTCP包为BYE。
      附加RR:
      如报告统计源数目超过31,在初始报告包后应该有附加RR 包。
     
      SDES:
      包含CNAME 项的SDES包必须包含在每个组合RTCP包中。如应用要求,其他源描述项可选,但受到带宽限制。
      BYE或APP:
      其它RTCP包类型可以任意顺序排列,除了BYE应作为最后一个包发送,包类型出现可不止一次。
      建议转换器或混合器从多个源组合单个RTCP包。如组合包整体长度超过网络路径最大传输单元,可分成多个较短组合包用低层协议以单个包形式发送。注意,每个组合包必须以SR或RR包开始。附加RTCP包类型可在Internet Assigned Numbers Authority (IANA)处注册。
     
      6.2.2.2 RTCP传输间隔
      RTP设计成允许应用自动扩展,连接数可从几个到上千个。例如,音频会议中,数据流量是内在限制的,因为同一时刻只有一两个人说话;对组播,给定连接数据率仍是常数,独立于连接数,但控制流量不是内在限制的。如每个参加者以固定速率发送接收报告,控制流量将随参加者数量线性增长,因此,速率必须按比例下降。
      一旦确认地址有效,如后来标记成未活动,地址的状态应仍保留,地址应继续计入共享RTCP带宽地址的总数中,时间要保证能扫描典型网络分区,建议为30分钟。注意,这仍大于RTCP报告间隔最大值的五倍。
      这个规范定义了除必需的CNAME外的几个源描述项,如NAME(人名)和EMAIL(电子邮件地址)。它也为定义新特定应用RTCP包类型的途径。给附加信息分配控制带宽应引起注意,因为它将降低接收报告和CNAME发送的速率而损害协议的性能。建议分配给单个参加者用于携带附加信息的RTCP带宽不要超过20%。而且并没有有意让所有SDES项包含在每个应用中。
      6.2.2.3 发送者与接收者报告
      RTP接收者使用RTCP报告包提供接收质量反馈,报告包根据接收者是否是发送者而采用两种格式中的一种。除包类型代码外,发送者报告与接收者报告间唯一的差别是发送者报告包含一个20个字节发送者信息段。如某地址在发出最后或前一个报告间隔期间发送数据包,就发布SR;否则,就发出RR;SR和RR都可没有或包括多个接收报告块。发布报告不是为列在CSRC列表上的起作用的源,每个接收报告块提供从特殊源接收数据的统计。既然最大可有31个接收报告块嵌入在SR 或 RR包中,
      丢失包累计数差别给出间隔期间丢掉的数量,而所收到扩展的最后一个系列号的差别给出间隔期间希望发送的包数量,两者之比等于经过间隔期间包丢失百分比。如两报告连续,比值应该等于丢失段部分;否则,就不等。每秒包丢失绿可通过NTP时标差除以丢失部分得到。
      从发送者信息,第三方监控器可计算载荷平均数据速率与没收到数据间隔的平均包速率,两者比值给出平均载荷大小。如假设包丢失与包大小无关,那么特殊接收者收到的包数量给出此接收者收到的表观流量。
     
      6.2.2.4 SDES: 源描述RTCP包
      SDES 包为三层结构,由头与数据块组成,数据块可以没有,也可有多个,组成项描述块所表明的源。项描述如下:
      版本(V)、填充(P)、长度:
      如SR包中所描述。
      包类型(PT):
      8位,包含常数202,识别RTCP SDES包。
      源计数(SC):
      5位,包含在SDES包中的SSRC/CSRC块数量,零值有效,但没有意义。
      源描述项内容如下:
      CNAME: 规范终端标识SDES项
      CNAME标识属性如下:
      如发生冲突或重启程序,由于随机分配的SSRC标识可能发生变化,需要CNAME项提供从SSRC标识到仍为常量的源标识的绑定。
      象SSRC标识,CNAME标识在RTP连接的所有参加者中应是唯一的。
      为了提供一套相关RTP连接中某个参加者所采用的跨多媒体工具间的绑定,CNAME应固定为那个参加者。
      为方便第三方监控,CNAME应适合程序或人员定位源。
      NAME:用户名称SDES项
      这是用于描述源的真正的名称,如\"John Doe, Bit Recycler, Megacorp\",可是用户想要的任意形式。对诸如会议应用,这种名称也许是参加者列表显示最适宜的形式,它将是除CNAME外发送最频繁的项目。设置可建立这样的优先级别。NAME值至少在连接期间仍希望保持为常数。它不该成为连接的所有参加者中唯一依赖。
      EMAIL:电子邮件地址SDES项
      邮件地址格式由RFC822规定,如\"John.Doe@megacorp.com\"。连接期间,电子邮件仍希望保持为常数。
      PHONE:电话号码SDES项
      电话号码应带有加号,代替国际接入代码,如\"+1 908 555 1212\"即为美国电话号码。
     
      LOC:用户地理位置SDES项
      根据应用,此项具有不同程度的细节。对会议应用,字符串如\"Murray Hill, New Jersey\"就足够了。然而,对活动标记系统,字符串如\"Room 2A244, AT&T BL MH\"也许就适用。细节留给实施或用户,但格式和内容可用设置指示。在连接期间,除移动主机外,LOC值期望仍保留为常数。
      TOOL:应用或工具名称SDES项
      是一个字符串,表示产生流的应用的名称与版本,如\"videotool 1.2\"。这部分信息对调试很有用,类似于邮件或邮件系统版本SMTP头。TOOL值在连接期间仍保持常数。
      NOTE: 通知/状态SDES项
      该项的推荐语法如下所述,但这些或其它语法可在设置中显式定义。NOTE 项旨在描述源当前状态的过渡信息,如\"on the phone, can´t talk\",或在讲座期间用于传送谈话的题目。它应该只用于携带例外信息,而不应包含在全部参加者中,因为这将降低接收报告和CNAME发送的速度,因此损害协议的性能。特殊情况下,它不应作为用户设置文件的项目,也不是自动产生。
      当其为活动时,由于NOTE项对显示很重要,其它非CNAME项(如NAME)传输速率将会降低,结果使NOTE项占用RTCP部分带宽。若过渡信息不活跃,NOTE项继续以同样的速度重复发送几次,但以一个串长为零的字符串通知接收者。然而,如对小倍数的重复或约20-30 RTCP间隔也没有接收到,接收者也应该考虑NOTE项是不活跃的。
      PRIV: 专用扩展SDES项
      该项用于定义实验或应用特定的SDES扩展,它包括由长字符串对组成的前缀,后跟填充该项其他部分和携带所需信息的字符串值。前缀长度段为8位。前缀字符串是定义PRIV项人员选择的名称,唯一对应应用接收到的其它PRIV项。应用实现者可选择使用应用名称,如有必要,外加附加子类型标识。另外,推荐其它人根据其代表的实体选择名称,然后,在实体内部协调名称的使用。
      注意,前缀消耗了总长为255个八进制项的一些空间,因此,前缀应尽可能的短。这个设备和受到约束的RTCP带宽不应过载,其目的不在于满足所有应用的全部控制通讯要求。SDES PRIV前缀没在IANA处注册。如证实某些形式的PRIV项具有通用性, IANA应给它分配一个正式的SDES项类型,这样就不再需要前缀。这简化了应用,并提高了传输的效率。
      6.2.2.5 BYE:断开RTCP包
      如混合器接收到一个BYE包,混合器转发BYE包,而不改变SSRC/CSRC 标识。如混合器关闭,它也应该发出一个BYE包,列出它所处理的所有源,而不只是自己的SSRC标识。作为可选项,BYE包可包括一个8位八进制计数,后跟很多八进制文本,表示离开原因,如:\"camera malfunction\"或\"RTP loop detected\"。字符串具有同样的编码,如在SDES 中所描述的。如字符串填充包至下32位边界,字符串就不以空结尾;否则,BYE包以空八进制填充。
      6.2.2.6 APP:定义应用的RTCP包
      APP包用于开发新应用和新特征的实验,不要求注册包类型值。带有不可识别名称的APP包应被忽略掉。测试后,如确定应用广泛,推荐重新定义每个APP包,而不用向IANA注册子类型和名称段。

    实时流协议RTSP

      实时流协议RTSP(RealTimeStreamingProtocol)是由RealNetworks和Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。

    6.3 RTSP协议
      实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频,的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接,为选择发送通道,如UDP、组播UDP与TCP,提供途径,并为选择基于RTP上发送机制提供方法。
      6.3.1 简介
      6.3.1.1 目的
      实时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体。尽管连续媒体流与控制流交叉是可能的,通常它本身并不发送连续流。换言之,RTSP充当多媒体服务器的网络远程控制。RTSP连接没有绑定到传输层连接,如TCP。在RTSP连接期间,RTSP用户可打开或关闭多个对服务器的可靠传输连接以发出RTSP 请求。此外,可使用无连接传输协议,如UDP。RTSP流控制的流可能用到RTP,但RTSP***作并不依赖用于携带连续媒体的传输机制。实时流协议在语法和***作上与HTTP/1.1类似,因此HTTP的扩展机制大都可加入RTSP。协议支持的***作如下:
      从媒体服务器上检索媒体:
      用户可通过HTTP或其它方法提交一个演示描述。如演示是组播,演示式就包含用于连续媒体的的组播地址和端口。如演示仅通过单播发送给用户,用户为了安全应提供目的地址。
      媒体服务器邀请进入会议:
      媒体服务器可被邀请参加正进行的会议,或回放媒体,或记录其中一部分,或全部。这种模式在分布式教育应用上很有用,会议中几方可轮流按远程控制按钮。
      将媒体加到现成讲座中:
      如服务器告诉用户可获得附加媒体内容,对现场讲座显得尤其有用。如HTTP/1.1中类似,RTSP请求可由代理、通道与缓存处理。
     
      6.3.1.2 协议特点
      RTSP 特性如下:
      可扩展性: 新方法和参数很容易加入RTSP。
      易解析: RTSP可由标准 HTTP或MIME解吸器解析。
      安全: RTSP使用网页安全机制。
      独立于传输: RTSP可使用不可靠数据报协议(UDP)、可靠数据报协议(RDP),如要实现应用级可靠,可使用可靠流协议。
      多服务器支持: 每个流可放在不同服务器上,用户端自动同不同服务器建立几个并发控制连接,媒体同步在传输层执行。
      记录设备控制: 协议可控制记录和回放设备。
      流控与会议开始分离: 仅要求会议初始化协议提供,或可用来创建唯一会议标识号。特殊情况下, SIP或H.323 可用来邀请服务器入会。
      适合专业应用: 通过SMPTE 时标,RTSP支持帧级精度,允许远程数字编辑
      演示描述中立: 协议没强加特殊演示或元文件,可传送所用格式类型;然而,演示描述至少必须包含一个RTSP URI。
      代理与防火墙友好: 协议可由应用和传输层防火墙处理。防火墙需要理解SETUP方法,为UDP媒体流打开一个\"缺口\"。
      HTTP友好: 此处,RTSP明智的采用HTTP观念,使现在结构都可重用。结构包括Internet 内容选择平台(PICS)。由于在大多数情况下控制连续媒体需要服务器状态, RTSP不仅仅向HTTP 添加方法。
      适当的服务器控制: 如用户启动一个流,他必须也可以停止一个流。
      传输协调: 实际处理连续媒体流前,用户 可协调传输方法。
      性能协调: 如基本特征无效,必须有一些清理机制让用户决定那种方法没生效。这允许用户提出适合的用户界面。

      6.3.1.3扩展RTSP
      由于不是所有媒体服务器有着相同的功能,媒体服务器有必要支持不同请求集。RTSP 可以如下三种方式扩展,这里以改变大小排序:
      以新参数扩展。如用户需要拒绝通知,而方法扩展不支持,相应标记就加入要求的段中。
      加入新方法。如信息接收者不理解请求,返回501错误代码(还未实现),发送者不应再次尝试这种方法。用户可使用OPTIONS方法查询服务器支持的方法。服务器使用公共响应头列出支持的方法。
      定义新版本协议,允许改变所有部分。(除了协议版本号位置)
      6.3.1.4操作模式
      每个演示和媒体流可用RTSP URL识别。演示组成的整个演示与媒体属性由演示描述文件定义。使用HTTP或其它途径用户可获得这个文件,它没有必要保存在媒体服务器上。
      为了说明,假设演示描述描述了多个演示,其中每个演示维持了一个公共时间轴。为简化说明,且不失一般性,假定演示描述的确包含这样一个演示。演示可包含多个媒体流。除媒体参数外,网络目标地址和端口也需要决定。下面区分几种***作模式:
      单播: 以用户选择的端口号将媒体发送到RTSP请求源。
      组播,服务器选择地址: 媒体服务器选择组播地址和端口,这是现场直播或准点播常用的方式。
      组播,用户选择地址: 如服务器加入正在进行的组播会议,组播地址、端口和密匙由会议描述给出。
      6.3.1.5 RTSP状态
      RTSP控制通过单独协议发送的流,与控制通道无关。例如,RTSP控制可通过TCP连接,而数据流通过UDP。因此,即使媒体服务器没有收到请求,数据也会继续发送。在连接生命期,单个媒体流可通过不同TCP连接顺序发出请求来控制。所以,服务器需要维持能联系流与RTSP请求的连接状态。RTSP中很多方法与状态无关,但下列方法在定义服务器流资源的分配与应用上起着重要的作用:
      SETUP: 让服务器给流分配资源,启动RTSP连接。
      PLAY与RECORD: 启动SETUP 分配流的数据传输。
      PAUSE:   临时停止流,而不释放服务器资源。
      TEARDOWN:   释放流的资源,RTSP连接停止。
      标识状态的RTSP方法使用连接头段识别RTSP连接,为响应SETUP请求,服务器连
      接产生连接标识。
     
      6.3.1.6 与其他协议关系
      RTSP在功能上与HTTP有重叠,与HTTP相互作用体现在与流内容的初始接触是通过网页的。目前的协议规范目的在于允许在网页服务器与实现RTSP媒体服务器之间存在不同传递点。例如,演示描述可通过HTTP和RTSP检索,这降低了浏览器的往返传递,也允许独立RTSP 服务器与用户不全依靠HTTP。
      但是,RTSP与HTTP 的本质差别在于数据发送以不同协议进行。HTTP是不对称协议,用户发出请求,服务器作出响应。RTSP中,媒体用户和服务器都可发出请求,且其请求都是无状态的;在请求确认后很长时间内,仍可设置参数,控制媒体流。重用HTTP功能至少在两个方面有好处,即安全和代理。要求非常接近,在缓存、代理和授权上采用HTTP功能是有价值的。
      当大多数实时媒体使用RTP作为传输协议时,RTSP没有绑定到RTP。RTSP假设存在演示描述格式可表示包含几个媒体流的演示的静态与临时属性。
     
      6.3.2 协议参数
     
      6.3.3 RTSP 信息
      RTSP是基于文本的协议,采用ISO 10646 字符集,使用UTF-8编码方案。行以CRLF中断,但接收者本身可将CR和LF解释成行终止符。基于文本的协议使以自描述方式增加可选参数更容易。由于参数的数量和命令的频率出现较低,处理效率没引起注意。如仔细研究,文本协议很容易以脚本语言(如:Tcl、Visual Basic与Perl)实现研究原型。
      10646字符集避免敏感字符集切换,但对应用来说不可见。RTCP也采用这种编码方案。带有重要意义位的ISO 8859-1字符表示如100001x 10xxxxxx.。RTSP信息可通过任何低层传输协议携带。
      请求包括方法、方法作用于其上的对象和进一步描述方法的参数。方法也可设计为在服务器端只需要少量或不需要状态维护。当信息体包含在信息中,信息体长度有如下因素决定:
      不管实体头段是否出现在信息中,不包括信息体的的响应信息总以头段后第一和空行结束。
      如出现内容长度头段,其值以字节计,表示信息体长度。如未出现头段,其值为零。
      服务器关闭连接。
      注意:RTSP目前并不支持HTTP/1.1\"块\"传输编码,需要有内容长度头。假如返回适度演示描述长度,即使动态产生,使块传输编码没有必要,服务器也应该能决定其长度。如有实体,即使必须有内容长度,且长度没显式给出,规则可确保行为合理。
      从用户到服务器端的请求信息在第一行内包括源采用的方法、源标识和所用协议版本。RTSP定义了附加状态代码,而没有定义任何HTTP代码。
      6.3.4 实体
      如不受请求方法或响应状态编码限制,请求和响应信息可传输实体,实体由实体头文件和试题体组成,有些响应仅包括实体头。在此,根据谁发送实体、谁接收实体,发送者和接收者可分别指用户和服务器。
      实体头定义实体体可选元信息,如没有实体体,指请求标识的资源。扩展头机制允许定义附加实体头段,而不用改变协议,但这些段不能假定接收者能识别。不可识别头段应被接收者忽略,而让代理转发。
      6.3.5 连接
      RTSP请求可以几种不同方式传送:
      1、持久传输连接,用于多个请求/响应传输。
      2、每个请求/响应传输一个连接。
      3、无连接模式。
      传输连接类型由RTSP URI来定义。对 \"rtsp\" 方案,需要持续连接;而\"rtspu\"方案,调用RTSP 请求发送,而不用建立连接。
      不象HTTP,RTSP允许媒体服务器给媒体用户发送请求。然而,这仅在持久连接时才支持,否则媒体服务器没有可靠途径到达用户,这也是请求通过防火墙从媒体服务器传到用户的唯一途径。
      6.3.6 方法定义
      方法记号表示资源上执行的方法,它区分大小写。新方法可在将来定义,但不能以$开头。
      某些防火墙设计与其他环境可能要求服务器插入RTSP方法和流数据。由于插入将使客户端和服务器***作复杂,并强加附加开销,除非有必要,应避免这样做。插入二进制数据仅在RTSP通过TCP传输时才可使用。流数据(如RTP包)用一个ASCII美圆符号封装,后跟一个一字节通道标识,其后是封装二进制数据的长度,两字节整数。流数据紧跟其后,没有CRLF,但包括高层协议头。每个$块包含一个高层协议数据单元。
      当传输选择为RTP,RTCP信息也被服务器通过TCP连接插入。缺省情况下,RTCP包在比RTP通道高的第一个可用通道上发送。客户端可能在另一通道显式请求RTCP包 ,这可通过指定传输头插入参数中的两个通道来做到。当两个或更多流交叉时,为取得同步,需要RTCP。而且,这为当网络设置需要通过TCP控制连接透过RTP/RTCP提供了一条方便的途径,可能时,在UDP上进行传输。
      6.3.7 流水线操作
      支持持久连接或无连接的客户端可能给其请求排队。服务器必须以收到请求的同样顺序发出响应。如果请求不是发送给组播组,接收者就确认请求,如没有确认信息,发送者可在超过一个来回时间(RTT)后重发同一信息。
      RTT在TCP中估计,初始值为500 ms。应用缓存最后所测量的RTT,作为将来连接的初始值。如使用一个可靠传输协议传输RTSP,请求不允许重发,RTSP应用反过来依赖低层传输提供可靠性。如两个低层可靠传输(如TCP 和RTSP)应用重发请求,有可能每个包损失导致两次重传。由于传输栈在第一次尝试到达接收着者前不会发送应用层重传,接收者也不能充分利用应用层重传。如包损失由阻塞引起,不同层的重发将使阻塞进一步恶化。时标头用来避免重发模糊性问题,避免对圆锥算法的依赖。每个请求在CSeq头中携带一个系列号,每发送一个不同请求,它就加一。如由于没有确认而重发请求,请求必须携带初始系列号。
      实现RTSP的系统必须支持通过TCP传输RTSP ,并支持UDP。对UDP和TCP,RTSP服务器的缺省端口都是554。许多目的一致的RTSP包被打包成单个低层PDU或TCP流。RTSP数据可与RTP和RTCP包交叉。不象HTTP,RTSP信息必须包含一个内容长度头,无论信息何时包含负载。否则,RTSP包以空行结束,后跟最后一个信息头。

    资源预订协议RSVP协议

     由于音频和视频数据流比传统数据对网络的延时更敏感,要在网络中传输高质量的音频、视频信息,除带宽要求之外,还需其他更多的条件。RSVP(ResourceReserveProtocol)是正在开发的Internet上的资源预订协议,使用RSVP预留一部分网络资源(即带宽),能在一定程度上为流媒体的传输提供QoS。在某些试验性的系统如网络视频会议工具vic中就集成了RSVP。

    *** RSVP协议
      ***.1 背景
      资源预订协议(RSVP)是网络控制协议,它使Internet应用传输数据流时能够获得特殊服务质量(QoSs),RSVP是非路由协议;它同路由协议协同工作,建立与路由协议计算出路由等价的动态访问列表, RSVP属OSI 七层协议栈中传输层,开始是研究人员构造的,IETF正朝标准化方向努力,图3.4 说明了RSVP运行环境。

    图3.4 RSVP中主机信息通过数据流发送给接收者示意图
      ***.2 RSVP数据流
      在RSVP中,数据流是一系列信息,有着相同的源、目的(可有多个)和服务质量,QoS要求通过网络以流说明形式通讯。流说明是互连网主机用来请求特殊服务的数据结构,保证互连网处理主机传输。RSVP支持三种传输类型:最好性能(best-effort),速率敏感(rate-sensitive)与延迟敏感(delay-sensitive)。用来支持这些传输类型的数据流服务依赖QoS实施,以下部分陈述传输类型与相关服务。
      最好性能传输为传统IP传输。应用包括文件传输(如邮件传输)、磁盘映像、交互登录和事务传输。支持最好性能传输的服务称为最好性能服务。速率敏感传输放弃及时性,而确保速率。例如:速率敏感传输请求100 kbps带宽,如在扩展期实际发送200 kbps,路由器可能延迟传输。速率敏感传输目的不在通过电路交换网络传输,但它通常与电路交换网络(ISDN)应用有联系,现在正运行在数据报网络(IP)上。这类应用如H.323视频会议,设计运行在ISDN (H.320)或ATM(H.310)上,但发现在Internet上也有应用。H.323编码是常数速率或准常数速率,它需要常数传输速率。RSVP服务支持速率敏感传输,称为位速率保证服务。延迟敏感传输要求传输及时,并因而改变其速率。例如:MPEG-II视频根据图象改变量大小平均流量为3 到7 Mbps,3 Mbps可能对应一堵上色的墙,而7 Mbps 可能是海洋的波浪。MPEG-II视频源发送关键和增量帧。典型的,每秒一个或两个关键帧,描述整个图象,而每秒13或28帧描述关键帧之间的变化,增量帧通常比关键帧小。因此,帧与帧之间速率变化较大。但由于单个帧要求在一帧时间内发送出去,或解码器速度跟不上,必须对增量帧传输进行特定优先级别协调。RSVP服务支持延迟敏感传输,被看作控制延迟服务(非实时服务)与预报服务(实时服务)。
      ***.3 RSVP 数据流处理
      RSVP数据流基本特征是连接,数据包在其上流通。连接是具有相同单播或组播目的数据流,RSVP分别处理每个连接。RSVP支持单播和组播连接(这里连接是一些发送者与另一些接收者的会话),而流总是从发送者开始的。特定连接的数据包被导向同一个IP目的地址或公开的目的端口。IP目的地址可能是组播发送的组地址,也可能是单个接收者的单播地址。公开目的端口可用UDP/TCP目的端口段、另外传输协议等价段或某些应用特定信息定义。
      RSVP数据发布是通过组播或单播实现的。组播传输将某个发送者的每个数据包拷贝转发给多个目的。单播传输特征是只有一个接收者。即使目的地址是单播,也可能有多个接收者,以公开端口区分。多个发送者也可能存在单播地址,在这种情况下,RSVP可建立多对一传输的资源预订。每个RSVP发送者和接收者对应唯一的Internet主机。然而,单个主机可包括多个发送者和接收者,以公开端口区分。
      RSVP服务质量(QoS)
      在RSVP中,服务质量(QoS)是流规范指定的属性,流规范用于决定参加实体(路由器、接收者和发送者)进行数据交换的方式。主机和路由器使用RSVP指定QoS;其中主机代表应用数据流使用RSVP从网络申请QoS级别,而路由器使用RSVP发送QoS请求给数据流路经的其它路由器。这样做,RSVP就可维持路由器和主机状态来提供所请求的服务。
      RSVP连接启动
      为了初始化RSVP组播连接,接收者首先使用Internet组成员协议(IGMP)加入IP目的地址指定的组播组。对单播连接,单播路由就象IGMP结合协议无关组播(PIM)在组播时的作用。接收者加入组后,潜在的发送者就开始发送RSVP路径信息给IP目的地址。接收者应用收到路径信息,开始发送相应资源预订请求信息,使用RSVP指定欲点播的流描述。发送者应用接收到资源预订请求信息后,发送者开始发送数据包。
      ***.4 RSVP资源预订类型
      资源预订类型指一套指定所支持参数的控制选项。RSVP支持两种主要资源预订:独占资源预订和共享资源预订。独占资源预订为每个连接中每个相关发送者安装一个流;而共享资源预订由互不相关的发送者使用。表3.10说明这两种资源预订协议的应用范围及所支持的范围与类型的组合情况。
     
      ***.5 RSVP软状态实现
      对RSVP,软状态指可被某些RSVP信息更新的路由器和终端结点的状态。软状态特征允许RSVP网络支持动态组成员变化,并适应路由变化。一般说来,软状态由基于RSVP网络维护,使网络可在没有查询终端结点的情况下改变状态。对比电路交换结构,终端结点进行依次呼叫,如失败,进行依次新呼叫。
      RSVP协议为创建和维护组播和单播混合发送路径的分布式资源预订状态提供了一个通用功能。为维护资源预订状态,RSVP跟踪路由器和主机结点的软状态。路径与资源预订请求信息创建并周期更新RSVP软状态。如在清除时间间隔到期前没有收到相应更新信息,就删除该状态,显式teardown 信息也可删除软状态。RSVP周期扫描欲建立的软状态,并转发路径与预订请求更新信息给下一跳。
      当路由改变,下一个路径信息初始化新路由的路径状态,将来资源预订请求信息建立资源预订状态。现在未使用的网段状态标记为超时。(RSVP规范要求在拓扑改变后两秒通过网络初始化新资源预订)。当发生状态变化,RSVP无延迟的将变化从RSVP网络的一个终端传到另一个终端。如接收到的状态与存储状态不同,就更新存储状态。如结果改变了欲产生的更新信息,更新信息立即生成并转发出去。
      ***.6 RSVP 操作模型
      在RSVP下,资源为简单数据流(单向数据流)预订起来。每个发送者逻辑上与接收者不同,但任何应用都可充当发送者和接收者,接收者负责请求资源预订。图3.5说明了其基本操作环境,紧接部分将提供特定事件序列的框架。

    图3.5 RSVP 操作环境:为单向数据流预订资源
      ***.6.1基本RSVP协议操作
      RSVP资源预订处理初始化开始于RSVP 后台服务查询本地路由协议以获得路由。主机发送IGMP消息加入组播组,而发送RSVP消息预订沿组路径的资源。每个能加入资源预订的路由器将收到的数据包传递给包分类器,然后将它们在包调度器中排队。RSVP包分类器决定每个包的路由和QoS类;RSVP调度器给每个接口所使用的特殊数据链路层媒介上传输分配资源。如数据链路层媒介有自身的QoS管理能力,包调度器负责协调数据链路层,获得RSVP所请求的QoS。调度器本身分配无源QoS媒介上包传输能力,如双铰线;也可分配其它系统资源,如CPU时间与缓存。QoS请求一般发源于接收者主机应用,而被传递到本地RSVP应用,如RSVP 后台服务。RSVP协议接着将对所有结点(路又器与主机)的请求沿逆向数据路径传到到数据源。在每个结点处,RSVP程序应用一个称为进入允许控制的本地决定程序决定是否能提供所请求的QoS。如进入允许控制成功,RSVP程序设置包分类和调度器的参数,以获得所申请的QoS。如进入允许控制在某结点处失败,RSVP程序给产生此请求的应用返回一个错误指示。
      ***.6.2 RSVP 隧道
      在整个Internet上同时配置RSVP或任意其他协议都是不可能的。实际上,RSVP决不可能在每个地方都被配置。因此,RSVP必须提供正确协议操作,即使只有两个支持RSVP的路由器与一群不支持RSVP的路由器相连。一个中等规模不支持RSVP的网络不能执行资源预订,因而服务保证也就不能实现。然而,如该网络有充足额外容量,也可以提供可接受的实时服务。
      为了支持RSVP网络连接通过不支持RSVP的网络,RSVP支持隧道技术。隧道技术要求RSVP和非RSVP路由器用本地路由表转发到目的地址的路径信息。当路径信息通过非RSVP 网络时,路径信息拷贝携带最后一个支持RSVP的路由器的IP地址。预订请求信息转发给下一个上游支持RSVP的路由器
      ***.7 加权平均排队方案
      用技术来加强出现瓶颈处的有效资源预订(如Cisco的加权平均排队方案)有着正面影响。隧道技术仅在瓶颈出在非RSVP 域且不可避免时才有风险。图3.6表示基于RSVP网络间采用隧道技术的RSVP环境

    图3.6 :应用隧道技术的RSVP环境
      ***.8 RSVP 消息
      RSVP支持四种基本消息类型:资源预订请求消息、路径消息、错误与确认消息和断开消息。
      ***.9 RSVP 包格式
      表3.11说明了RSVP包格式,如下内容列出格式的头和对象段。
      表3.11 RSVP包格式 RSVP消息头段(长度单位:位) 4 4 8 16 16 8 8 32 15 1 16 版本 标志 类型 校验和 长度 预订 发送TTL 消息ID 预订 MF 偏移量 RSVP对象段(长度单位:位) 16 8 8 可变 长度 分类号 C类型 对象内容
      RSVP 消息头段
      RSVP 消息头段组成:
      版本号---4位,表示协议版本号(当前版本为1)。
      标志---4位 ,当前没有定义标志段。
      类型---8位, 有几种可能值,如表3.12所示。
      表3.12:RSVP消息类型段取值 值 消息类型 1 路径 2 资源预订请求 3 路径错误 4 资源预订请求错误 5 路径断开 6 资源预订断开 7 资源预订请求确认 校验和---16位,表示基于RSVP消息的内容上标准TCP/UDP校验和。
      长度---16-位,表示RSVP包的字节长度,包括公共头和随后的可变长度对象。如设置了MF标志,或片段偏移为非零值,这就是较大消息当前片段长度。
      发送TTL---8位,表示消息发送的IP生存期。
      消息ID---32位,提供下一RSVP跳/前一RSVP跳消息中所有片段共享标签。
      更多片段 (MF) 标志---一个字节的最低位,其它7位预订,除消息的最后一个片段外,都将设置MF。
      片段偏移---24位,表示消息中片段的字节偏移量。
     
      RSVP 对象段
      RSVP 对象段组成如下:
      长度---16-位,包含总对象长度,以字节计(必须是4的倍数,至少是4)。
      分类号---表示对象类型,每个对象类型都有一个名称。RSVP程序必须可识别分类,类型在表3.13列出。如没有识别出对象分类号,分类号高位决定结点采用什么行动。
      C-类型---C类型,在分类号中唯一。最大内容长度是65528个字节。分类号和C-类型段(与标志位一起) 可用作定义每个对象唯一位的16位数。
      对象内容---长度、类型号和C类型段指定对象内容的形式。
     
      ***.10 RSVP小结
      RSVP运行在传输层,在IP上层。与ICMP和IGMP相比,它是一个控制协议。RSVP的组成元素有发送者、接收者和主机或路由器。发送者负责让接收者知道数据将要发送,以及需要什么样的QoS;接收者负责发送一个通知到主机或路由器,这样他们就可以准备接收即将到来的数据;主机或路由器负责留出所有合适的资源。
      RSVP协议的两个重要概念是流与预定。流是从发送者到一个或多个接收者的连接特征,通过IP包中\"流标记\"来认证。发送一个流前,发送者传输一个路径信息到目的接收方,这个信息包括源IP地址、目的IP地址和一个流规格。这个流规格是由流的速率和延迟组成的,这是流的QoS需要的。接收者实现预定后,基于接收者的模式能够实现一种分布式解决方案。
      RSVP领域的发展是非常迅速的,但目前并没有在任何一种网络上得到证实,它的应用只是局限在测试的小Intranet网络上。因为RSVP的预定必须建立在完全流方式的基础上,其可扩展性问题倍受关注。RSVP还存在诸如当一个服务请求被申请控制否决时网络应该怎样通知用户以及用户怎样应答这样的通知等问题。


  •   实时传输协议(RTP)为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。

      RTP 本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于低层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性。 RTP 实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。

    RTP 由两个紧密链接部分组成:

    • RTP ――传送具有实时属性的数据;
    • RTP 控制协议(RTCP)――监控服务质量并传送正在进行的会话参与者的相关信息。 RTCP 第二方面的功能对于“松散受控”会话是足够的,也就是说,在没有明确的成员控制和组织的情况下,它并不非得用来支持一个应用程序的所有控制通信请求。

    协议结构

    1 2 3 8 9 16bit
    V P X CSRC Count M Payload Type
    Sequence number Timestamp
    SSRC CSRC (variable 0 – 15 items 32bits each)

    • V ― 版本。识别 RTP 版本。
    • P ― 间隙(Padding)。设置时,数据包包含一个或多个附加间隙位组,其中这部分不属于有效载荷。
    • X ― 扩展位。设置时,在固定头后面,根据指定格式设置一个扩展头。
    • CSRC Count ― 包含 CSRC 标识符(在固定头后)的编号。
    • M ― 标记。标记由 Profile 文件定义。允许重要事件如帧边界在数据包流中进行标记。
    • Payload Type ― 识别 RTP 有效载荷的格式,并通过应用程序决定其解释。Profile 文件规定了从 Payload 编码到 Payload 格式的缺省静态映射。另外的 Payload Type 编码可能通过非 RTP 方法实现动态定义。
    • Sequence Number ― 每发送一个 RTP 数据包,序列号增加1。接收方可以依次检测数据包的丢失并恢复数据包序列。
    • Timestamp ― 反映 RTP 数据包中的第一个八位组的采样时间。采样时间必须通过时钟及时提供线性无变化增量获取,以支持同步和抖动计算。
    • SSRC ― 同步源。该标识符随机选择,旨在确保在同一个 RTP 会话中不存在两个同步源具有相同的 SSRC 标识符。
    • CSRC ― 贡献源标识符。识别该数据包中的有效载荷的贡献源。

    相关协议 RTCPRTSPUDPTCPIP
    组织来源 RTP 由 IETF(www.ietf.org)定义在 RFC 3550和3551中。
    相关链接 http://www.javvin.com/protocol/rfc3550.pdf: RTP: A Transport Protocol for Real-Time Applications
    http://www.javvin.com/protocol/rfc3551.pdf: RTP Profile for Audio and Video Conferences with Minimal Control

  • 实时传输协议详解

    实时传输协议RTP
    1.RTP协议:
    RTP( Real-time Transport Protocol)协议最初是在70年代为了尝试传输声音文件,把包分成几部分用来传输语音,时间标志和队列号。经过一系列发展,RTP第一版本在1991年8月由美国的一个实验室发布了。到本世纪1996年形成了标准的的版本。很多著名的公司如Netscape ,就宣称“Netscape LiveMedia”是基于RTP协议的。. Microsoft 也宣称他们的“NetMeeting”也是支持RTP协议.
    RTP被定义为传输音频、视频、模拟数据等实时数据的传输协议。最初设计是为了数据传输的多播,但是它也用于单播的。与传统的注重的高可靠的数据传输的运输层协议相比,它更加侧重的数据传输的实时性。此协议提供的服务包括时间载量标识、数据序列、时戳、传输控制等。RTP与辅助控制协议RTCP一起得到数据传输的一些相关的控制信息。

    2.RTP协议是如何工作的:
    在前面说明过,威胁多媒体数据传输的一个尖锐的问题就是不可预料数据到达时间。但是流媒体的传输是需要数据的适时的到达用以播放和回放。RTP协议就是提供了时间标签,序列号以及其它的结构用于控制适时数据的流放。
    在流的概念中”时间标签”是最重要的信息。发送端依照即时的采样在数据包里隐蔽的设置了时间标签。在接受端收到数据包后,就依照时间标签按照正确的速率恢复成原始的适时的数据。不同的媒体格式调时属性是不一样的。但是RTP本身并不负责同步,RTP只是传输层协议,为了简化了运输层处理,提高该层的效率。将部分运输层协议功能(比如流量控制)上移到应用层完成。同步就是属于应用层协议完成的。它没有运输层协议的完整功能,不提供任何机制来保证实时地传输数据,不支持资源预留,也不保证服务质量。RTP报文甚至不包括长度和报文边界的描述。同时RTP协议的数据报文和控制报文的使用相邻的不同端口,这样大大提高了协议的灵活性和处理的简单性。
    RTP协议和UDP二者共同完成运输层协议功能。UDP协议只是传输数据包,是不管数据包传输的时间顺序。RTP的协议数据单元是用UDP分组来承载的。在承载RTP数据包的时候,有时候一帧数据被分割成几个包具有相同的时间标签,则可以知道时间标签并不是必须的。而UDP的多路复用让RTP协议利用支持显式的多点投递,可以满足多媒体会话的需求。
    RTP协议虽然是传输层协议但是它没有作为OSI体系结构中单独的一层来实现。RTP协议通常根据一个具体的应用来提供服务, RTP只提供协议框架,开发者可以根据应用的具体要求对协议进行充分的扩展。目前,RTP的设计和研究主要是用来满足多用户的多媒体会议的需要,另外它也适用于连续数据的存储,交互式分布仿真和一些控制、测量的应用中。基于RTP的实验和商业产品也层出不穷。     

    实时传输控制协议RTCP协议

    1. RTCP协议:
    RTCP(Real-time Transpor、Control Protocol)是设计和RTP一起使用的进行流量控制和拥塞控制的服务控制协议。

    2. RTCP协议如何工作:
    当应用程序开始一个RTP会话时将使用两个端口:一个给RTP,一个给RTCP。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。在RTP的会话之间周期的发放一些RTCP包以用来传监听服务质量和交换会话用户信息等功能。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。根据用户间的数据传输反馈信息,可以制定流量控制的策略,而会话用户信息的交互,可以制定会话控制的策略。
    RTCP协议处理机根据需要定义了五种类型的报文——
    RR: receiver report
    SR: sender report
    SDES: source description items. 
    BYE: indicates end of participation. 
    APP: application specific functions
    它们完成接收、分析、产生和发送控制报文的功能。

    实时流协议RTSP协议
    1. RTSP协议:
    RTSP(Real Time Streaming Protocol)协议定义了如何有效地通过IP网络传送多媒体数据,是一种客户端到服务器端的多媒体描述协议。
    RTSP是一个非常类似于HTTP的应用层协议。每个发布和媒体文件也被定义为RTSP UPL。而媒体文件的发布信息被书写进一个被称为媒体发布文件里,这个文件在后面会说明。在这个文件说明的包括编码器,语言,RTSP ULS,地址,端口号以几其它参数。这个发布文件可以在客户端通过EMAIL形式或者HTTP形式获得。
    RTSP是由RealNetworks和Netscape以及哥伦比亚大学共同提出的。它是从RealNetworks的"RealAudio" 和 Netscape的 "LiveMedia"的实践和经验发展来来的。第一份RTSP协议是由IETF 在1996年8月9日正式提交后作为INTERNET的标准,在此后此协议经过了很多明显的变化。它的应用现在是广泛的,APPLE、IBMNetscape, Apple, IBM, Silicon Graphics, VXtreme, Sun 还有其它公司都宣称它们的在线播放器支持RTSP协议,不过微软一直都坚持不支持此协议,不知道这种局面还会持续多久。

    2. RTSP协议的特点:
    RTSP是应用层协议,与RTP、RSVP一起设计来完全流式服务。
    RTSP有很大的灵活性,可被用在多种操作系统上,它允许客户端和不同厂商的服务平台交互。
    RTSP在体系结构上位于RTP和RTCP之上,它使用RTP完成数据传输。它将流式媒体数据可控制的通过网络传输到客户端。
    RTSP可以保持用户计算机与传输流业务服务器之间的固定连接,用于观看者与单播(Unicast)服务器通信并且还允许双向通信,观看者可以同流媒体服务器通信.
    提供类似“VCR”形式的例如暂停、快进、倒转、跳转等操作。操作的资源对象可以是直播流也可以是存储片段。
    RTSP是设还提供了选择传输通道,如使用UDP还是多点UDP或是TCP。

    资源预留协议RSVP 
    1. RSVP协议:
    RSVP (Resorce reSerVation Protocol) 资源预留协议并不是一个路由协议,而是一种IP网络中的信令协议,它与路由协议相结合来实现对网络传输服务质量(QoS)的控制。RSVP是为支持因特网综合业务而提出的。这是解决IP通信中QoS(服务质量)问题的一种技术,用来保证点端到端的传输带宽。

    2. RSVP协议是如何工作:
    RSVP使用控制数据报,这些数据报在向特定地址传输时包括了需要由路由器检查(有些时候需要更新)的信息,如果路由器需要决定是不是要检查数据报的内容的时候对上层数据内容进行语法分析。这种分析的代价可不小。现在的情况是,网络终端利用它向网络申请资源,在这种表明“申请” 的信号中,包含着如下的信息:业务的种类? 使用者类型? 什么时间? 需要多大带宽? 其他参考信息? 网络在接收到上类信息后,会根据实际情况为此次连接分配一个优先代码,用户利用优先代码进行信息传递时,网络不需重新对业务进行分析与判别,从另外一个角度来说,利用RSVP 能从一定程度上减少网络对信息处理的时延,提高网络节点的工作效率,改善信息传输的服务质量(QoS)。实时应用用RSVP是为了在传输路径中保持必要的资源以保证请求能确保到达。
    RSVP是IP路由器为提供更好的服务质量向前迈进的具有深刻意义的一步。传统上IP路由器只负责分组转发,通过路由协议知道邻近路由器的地址。而RSVP则类似于电路交换系统的信令协议一样,为一个数据流通知其所经过的每个节点(IP路由器),与端点协商为此数据流提供质量保证。RSVP协议一出现,立刻获得广泛的认同,基本上被任为较好地解决了资源预留的问题。

    在前面我们讨论了一些实时媒体控制的相近的四个协议。在这里我再概括性的说明一下:
    RTP是实时数据传输协议。它提供时间标志,序列号以及其它能够保证在实时数据传输时处理时间的方法。它是依靠RVSP保证服务质量标准的。

    RTCP是RTP的控制部分,是用来保证服务质量和成员管理的。

    RTSP是开始和指引流媒体数据从流媒体服务器。它又可叫做"网上录像机控制协议".它是提供远程的控制,具体的数据传输是交给RTP的。

    RSVP是Internet上的资源预订协议,使用RSVP预留一部分网络资源(即带宽),能在一定程度上为流媒体的传输提供QoS。它是不传输数据的
  • 实时传输协议(RTP)为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。应用程序通常在 UDP 上运行 RTP 以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是 RTP 可以与其它适合的底层网络或传输协议一起使用。如果底层网络提供组播方式,那么 RTP 可以使用该组播表传输数据到多个目的地。

      RTP 本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于低层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性。 RTP 实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。

  • 实时传送协议(RTP for Real-time Transport Protocol)为一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889 LINK中公布的。

    国际电信联盟ITU-T也发布了自己的RTP文档,作为H.225.0,但是后来当IETF发布了关于它的稳定的标准RFC后就被取消了。它作为因特网标准在RFC 3550(http://www.ietf.org/rfc/rfc3550.txt)(该文档的旧版本是RFC 1889))有详细说明。RFC3551 (http://www.ietf.org/rfc/rfc3551.txt) (STD 65) (旧版本是 RFC 1890) 详细描述了使用最小控制的音频和视频会议。

    RTP协议详细说明了在Internet上传递音频和视频的标准数据包格式。它一开始被设计为一个多播multicast协议,但后来被用在很多单播unicast应用中。RTP协议常用于流媒体streaming media系统(配合RTSP协议),视频会议videoconferencing和一键通push to talk系统(配合H.323 或SIP),使它成为网络语音Voice over IP产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在用户数据报协议User Datagram Protocol上的。

  • 如果,我的世界里,只剩下了等。我想,我就不是我了。

    瓶子是乐观的,不会就为了一个人变得可怜只剩下等了的!

    http://rainn.blogbus.com/files/1141307172.jpg

  • 沉睡到午后一点,是睡饱了么,是应该起来了。不是什么都听不到,是不想去理会罢了。

    本来想写简历的,但是,想念我的blog,回来看看。。。

    去了老刀那里,仔细游逛了一下,崇拜起他来。早就见识了那种把生活的哲学画在纸上的人物。我也想到那种境界,不过。不过,脑袋不思考的时候,即使动笔也画不出什么了。羡慕,羡慕的想掉眼泪。

    贴几幅dog吧,既然我这么爱它~

    如果,生活真的只有这么简单,如果。。

    http://rainn.blogbus.com/files/1141308622.jpg

    我就不必这么怨恨小丘同志。

    http://rainn9226.bokee.com/inc/12.JPG

    那种等待的过程是何等的难熬,不说你也知道。就是,该来的不来,不该走的却走了。只剩下,那个等待了好久的我。

    http://rainn9226.bokee.com/inc/13.JPG

    我不是IT精英,从来不是。但是,这个方头方脑的家伙,让我,还有点快乐可言。因为,它,从来都接受我的笑*^_^*

    http://rainn9226.bokee.com/inc/14.JPG

    哈,哈,哈,如果,生活是简单的,我想,我应该会更快乐的。

    http://rainn9226.bokee.com/inc/15.JPG

  • 本文详细讨论了H.264编码标准的码率控制结构,与MPEG-2的TM5模型进行了比较;并对JVT-G012提出的流量往返控制模型进行了探讨;最后对H.264码率控制提出了一些改进意见。
            关键词:H.264 码率控制 VBR CBR
    一、引言 

            到目前为止,视频编码标准通常采用去除时空域相关性的帧内/帧间预测、离散余弦变换量化和熵编码技术,以达到较高的编码效率。对视频通信而言,由于通信信道带宽有限,需对视频编码码率进行控制,来保证编码码流的顺利传输和信道带宽的充分利用。针对不同的应用场合,学者们提出了多种码率控制(Rate Control)策略。其中,实时编码码率控制方法主要有两种:用先前宏块编码产生的比特数来预测当前宏块编码产生比特数,或者通过视频编码率失真函数来预测当前宏块编码产生的比特数。
            码率控制算法[1]就是动态调整编码器参数,得到目标比特数。它为视频序列中的图像组GOP、图像或者子图像分配一定的比特。现有的码率控制算法主要是通过调整离散余弦变换的量化参数大小输出目标码率。实际上,量化参数(QP)反映了空间细节压缩情况,如QP小,大部分的细节都会被保留;QP增大,一些细节丢失,码率降低,但图像失真加强和质量下降。也就是说,QP和比特率成反比的关系,而且随着视频源复杂度的提高,这种反比关系会更明显。
            码率控制有两种模式:
            VBR和CBR,即可变比特控制和固定比特控制。VBR模式是一种开环处理,输入为视频源和一个QP值。由于实际视频序列中的图像复杂度是不断变化的,细节多少、运动快慢等等,比特率也相应变化,不稳定。CBR模式是一种闭环处理,输入为视频源和目标比特。它根据对源复杂度估计、解码缓冲的大小及网络带宽估计动态调整QP,得到符合要求的码率。

    二、H.264码率控制结构

            作为新一代的视频压缩编码标准,H.264对多编码模式、编码参数自适应选择、上下文自适应熵编码、多参考帧的灵活选择、高精度预测、去方块滤波以及抗误码能力等方面进行了精雕细刻,采取了一系列切合实际的技术措施,大大提高了编码效率和网络自适应能力。

            但H.264标准草案并没有很好地研究RC,主要精力放在了编码码流及解码方法上。它将QP同时用于码率控制算法和率失真优化,导致了蛋鸡悖论:为了计算当前帧中宏块的RDO,需利用当前帧或宏块的MAD预测每个宏块的QP,而每个当前帧或宏块的MAD只有在RDO后才能计算出。
            H.264 码率控制方法的提案主要有两个[2]:JVT-F086中MPEG-2TM5改进版本及JVT-G012中提出用流量往返模型来分配每个基本单元目标比特数,并在宏块层编码采用二次率失真函数计算量化参数的算法。JVT-G012还比较了这两种算法,认为其算法优于F086算法。
            本节主要介绍H.264的码率控制结构,并与MPEG-2的控制模型相比较。
            H.264码率控制的主要部分类似于其他RC方案[1]。图2只是一个概念性的结构,并不是其软件的实际反映,如P帧和B帧需分别处理,一些估计是前面值的平均等等。
    *1. 码率量化模型 Rate-Quantization Model*
            RC 算法的核心是一个定量的描述QP、实际比特率和编码复杂度代理的关系的模型。比特率和复杂度与残差有关,QP只能影响变换残差信息的细节,对包含头信息、预测数据、运动矢量信息的比特流没有直接影响。预测误差的平均残差绝对值(Mean Average Difference ,MAD)被引用,用来估计复杂度。
    *2. 复杂度估计Complexity Estimation*
            MAD是预测器精度和帧内预测情形下临近图像时间相似度的逆操作。MAD可以在对当前图像编码完以后进行估计,但是,在QP选择以后再编码一次,负荷太重。相反可以假设MAD随图像变化而变化,可根据前一图像的实际值估计而得。但该假设在场景切换时失效。
    *3. QP限制QP-Limiter*
            闭环控制系统须能够保证稳定性和视觉变化最小。对一些复杂度快速改变的序列,QP变化显著,须设置以码率限制器来限制图像的QP变化不超过±2。
    *4. 虚拟缓存模型Virtual Buffer Model*
            解码器都有一个缓存来平滑码率变换和数据的到达时间。 相应编码器产生的比特流须满足解码器的限制,所以用一个虚拟缓存模型来仿真实际解码器的满度。
           虚拟缓存满度的改变即编码成流的总比特数的差异。缓存满度的下届为0,上界为缓存容量。用户需根据解码器支持的级别设置缓存容量和初始值。
    *5. QP初始化QP Initializer*
           QP须在视频序列的开始初始化,并人为输入初值,但更好的方法是根据每个像素的比特数估计,并可根据QP和DemandedBitsPerPixel 表查找。
    *6. GOP比特分配GOP Bit Allocation *
           根据需求的比特率和虚拟缓存的当前满度,计算GOP的目标码率,I图像和第一个P图像的QP。
    *7. 基本单元比特分配Basic Unit Bit Allocation*
           如果基本单元小于图像,图2则分为两层:图像层和基本单元层。对H.264而言,重点是计算每个存储图像(通常为P图像)的QP。严格地讲H.264是允许B图像用作参考的,只是通常不用。非存储图像(通常为B图像)则通过邻近P图像的QP内插或偏移得出。首先,考虑到图像的MAD,可为缓存满度设置一目标级。接着,利用该级别,计算图像的目标比特数。
            与MPEG-2的TM5模型相比,类似之处有:虚拟缓存的设立,GOP和图像层的目标比特的计算,为每个基本单元生成QP等。不同之处有:基本单元是宏块,且同一图像中的不同宏块的QP可能相差很大;I/P/B三帧之间只是目标比特分配的不同,其余处理类似;MPEG-2 预测模式没有H.264的多样性。由于其没有高级的帧内预测,也没有必要对关联QP和残差时那么严格;宏块级的空间复杂度由源活动性估计而得。忽略复杂度是否由MV和残差数据体现;对图像分配比特,需考虑图像类型、GOP结构、需要的比特率,而非图像的复杂度。但在图像中,缓存满度和相关的空间活动性用来
    分配图像比特等。 
    三、H.264码率控制算法 

            如上所述,H.264码率控制方案主要有JVT-F086和JVT-G012提出的两种。JVT-G012通过引入基本单元和线性模型的概念,提出一种自适应基本单元层码率控制方案。基本单元可能是一帧、片或者一个宏块。线性模型用于预测当前基本单元的MAD,它是通过前一帧相应位置的基本单元得到。
            蛋鸡悖论解决如下:当前帧的目标比特率根据预先定义的帧率、当前缓冲容量、目标缓冲级别和可利用信道带宽,利用漏斗模型和线性跟踪理论计算得出。剩余比特分配给当前帧未编码基本单元。当前基本单元的MAD利用前一帧相同位置基本单元的MAD实际值线性预测而得。相应的QP通过一个二次RD模型获得。该方案同样适用于VBR情形。该方案利用一个虚拟缓存,根据信道带宽的动态特征,来帮助调节编码操作。该缓存既不上溢也不下溢。由于该模型类似于漏斗模型,该 RC算法与HRD是一致的。
            为了验证该方案,JVT-G012在VBR和CBR两种情形下进行实验。
            VBR的比特率曲线是一预先确定的曲线,即实际产生的比特接近于比特率曲线且缓存不上溢和下溢。CBR情形下,与QP固定的编码器比较了编码效率。目标比特率由以固定QP编码测试序列产生。计算出的码率由该方案编码产生。该方案编码效率上升1.02dB,所有测试序列的平均PSNR改善2dB。并利用软件 AHM2.0和F086提出的方案进行了比较。PSNR改善了最高达1.73dB,平均达0.5dB。且该方案只一个通道而F086是两个通道。

    四、结束语
            随着H.264的不断改进和推广,其码率控制的算法也在不断改进更新。比如HeZhihai等[3]提出线性率失真函数,通过变换量化后零值在变换系数中的比例(认为这对编码码率的影响最大)来选取量化参数,可避免蛋鸡悖论;陈川等[4]提出联合编码模式选择、信源的码率控制算法;Xue Jinzhu[5]等提出基于块活动性和缓冲状态的算法;MaSiwei等[6]提出结合HRD的控制算法,并被H.264采用等等。还有学者提出考虑解码端(通过其反馈信息控制码率)的控制模型。上述的算法都在其实验范围内体现出了编码效率的改进。可见,H.264码率控制的改进有许多方向,主要有:考虑编码器端的编码参数(如量化参数、编码模式或直接影响比特流的参数等)的率失真控制模型,结合信源信道失真和缓冲状态的码率控制模型,考虑解码端反馈信息的控制模型等。
            H.264采用了多种改进编码效率的技术,针对不同的应用可以选择不同的技术,其码率控制模型的建立也应该结合实际应用做出调整,而不是一定要建立一个适应各种场合的控制模型。
    ■ 参考文献

    [1]Wiegand T,Schwarz H,Joch A,Sullivan G.Rate Constrained Coder Control and Comparison of Video Coding Standards.IEEE Trans,Circuits Syst,Video Technol,2003,13(7)
    [2] Li Z,et al.Adaptive Basic Unit Layer Rate Control for JVT.JVT-G012, 7th Meeting:Pattaya,Thailand,2003(3)
    [3] He Zhihai.A Unified Approach to Rate-Distortion Analysis and Rate Control for Visual Coding And Communication.PHD Thesis UCSB,2001
    [4] 陈川等.联合编码模式选择的码率控制算法.电子学报,2004(5)
    [5] Xue Jinzhu,Shen Lansun.Rate Control Algorithm for H.264 Video Encoding,Journal of Electronics(China),2003,20(6)
    [6] Ma Siwei,WenGao.Rate Control For JVT Video Coding Scheme With HRD Considerations.IEEE ICIP 2003

  • H.264

    2006-03-01

    H.264就是MPEG-4 part10(AVC),比常见的MPEG-4 part2编解码更复杂,好处是带宽占用更低,授权费也便宜得多。

    X264是一款开源的编码器,率先支持High Profile,开发者中似乎有一位中国人(?)。Nero AVC(包含在NeroVision Express中)也可以编码,据说画面不错。

    播放器可用ffdshow最新版。QuickTime7也可以。

    不用多说,凭感觉就知道H.264即将迅速一统江湖,XViD/DivX都将被无情地抛弃。

    参考:

    H.264:http://www.cww.net.cn/control/Article.asp?id=6738http://www.pcpop.com/doc/0/91/91053.shtml(by 郭长佑),一个low profile的编码器

    X264:http://www.videolan.org/x264.htmlhttp://x264.nl/http://en.wikipedia.org/wiki/X264

    HDTV:http://www.pcpop.com/doc/0/57/57599.shtml

    MPEG4:FAQ(Incl. H.264)

    H.264的授权费

  • 一 H.264的主要技术特征分析

      H.264的编解码框架与以前提出的标准,如H.261、H.263及MPEG-1/2/4并无显著变化,也是基于混合编码的方案:以运动矢量代表图像序列各帧的运动内容,使用前面已解码帧对其进行运动估计和补偿或使用帧内预测技术,所得的图像参差值要经过变换、量化、熵编码等部分的处理。所以,新标准的性能提升在于各个部分的技术方案的改进及新算法的应用。

      新标准在提高图像传输的容错性方面做了大量工作,重新定义了适于图像的结构划分。在编码时,图像帧各部分被划分到多个Slice结构中去,每个Slice都可以被独立解码,不受其它部分的影响。Slice由图像最基本的结构—宏块组成,每个宏块包含一个16×16的亮度块和两个8×8的色度块。

      为进一步提高鲁棒性,整个系统被划分为视频编码层和网络抽象层。视频编码层主要描述要传输的视频数据所承载的视频内容。而网络抽象层则是考虑不同的应用,如视频会议通信、H.32X连续包的视频传输或RTP/UDP/IP的通信。

      H.264标准分成三个框架(Profile):Baseline、Main Profile及X Profile,代表针对不同应用的算法集及技术限定。Baseline主要包含低复杂度、低延时的技术特征,主要针对交互式的应用,考虑到恶劣环境下的容错性,内容基本都被其它更高级别的Profile所包含;Main Profile是针对更高编码效率的应用,如视频广播;X Profile 的设计主要针对流媒体的应用,在这一框架中所有容错技术、对比特流的灵活访问及切换技术都将包括其中。

      1. Baseline的解码器只对I Slice及P Slice进行操作

      对于帧间预测,相比以前的标准,为了更精确地对图像的运动内容进行预测补偿,新标准允许宏块更进一步划分为16×16、16×8、8×16、8×8、8×4、4×8、4×4的子块;运动估计精确到经由6-tap滤波器得到的1/4象素位置;运动矢量由相邻块预测得到,其预测的差值被编码传输。H.264支持多参考帧的预测,规定运动估计使用的参考帧数最多可达15帧,多参考帧的使用大大提高了对图像传输的容错性,抑制了错误在空间和时间上的蔓延。




      对于所有的Slice编码类型,H.264支持两类帧内编码:4×4与16×16编码模式。对于4×4模式,每一个亮度4×4块有8种不同方向上的预测模式及DC预测模式;对于16×16模式,每个16×16亮度块有4种帧内预测模式。而对于宏块的8×8色度采样,采用与亮度16×16几乎相同的预测模式。为了保证Slice的编码独立性,帧内预测是不允许跨越Slice边界的。

      对于变换、量化部分,不同于以前标准对预测参差值的变换编码使用DCT变换,H.264使用了简单的整数变换。这种变换与DCT相比,压缩性能几乎相同且有许多优势,其核心变换的计算只使用加减、移位运算,避免了精度的损失。对变换参差系数的量化使用了52级步长的量化器,而H.263标准只有31级。量化步长以12.5%递增,量化步长范围的扩大使得编码器能够更灵活、精确地进行控制,在比特率和图像质量之间达到折中。

      对熵编码部分,对于要传输的量化变换系数,当使用基于上下文的变长编码(CAVLC)时,根据前面已编码传输的量化变换系数值的大小来选择接下来系数编码要使用的变长编码表。由于变长编码表的设计是基于相应的统计条件,所以其性能要优于使用单一变长编码表。对其它数据如头信息等,使用一种单一的变长编码表(Exp-Golomb Code)。

      新标准仍然使用基于块的预测及重构方式,为了去除由此产生的影响图像主观质量的方块效应,H.264使用了去块效应滤波器。其主要思想是当块边界上两边差较小时,就使用滤波器使差别“平滑”掉;若边界上图像特征明显,就不使用滤波。这样既是为了减弱“块效应”的影响,又避免了滤掉图像的客观特征,同时在相同主观质量下使得比特率减少5~10%。

      对于图像数据的组织及传输,在H.264标准中的图像宏块能够以灵活的宏块组织顺序(FMO)划分为多个Slice Group;Slice之间相互独立,可以任意的顺序传输到解码端(ASO)。在比特流中Slice可以使用重复的方式(RS)传输,在Slice数据出错的情况下可用来进行恢复,增强了图像传输的鲁棒性。同时Slice间的相互独立性抑制了错误的空间传播,提高了比特流的容错性。

      2. Main Profile的技术特征

      Main Profile包含Baseline Profile的所有算法并具有额外的技术特征,但它并不支持FMO、ASO及RS等技术,只支持对I、P、B Slice的处理操作。

      在此框架内提出了适配块划分尺寸的变换(ABT)这一概念。此概念是针对帧间编码的,其主要思想是将对预测参差进行变换编码的块尺寸与用来进行运动补偿的块尺寸联系起来。这样就尽可能地利用最大的信号长度进行变换编码。但是,由于复杂度的原因,进行变换的最大块尺寸被限制在8×8以下。

      对熵编码部分,为更高效地进行编码,这里使用了基于上下文的算术编码(CABAC),使熵编码的性能进一步提高。与CAVLC相比较,在相同图像质量下,编码电视信号使用CABAC将会使比特率减少10~15%。

      另外,Main Profile不支持多个Slice Group的划分。

      3. 相关的编码问题

      如何对已提出的预测模式进行选择(Mode Decision)和使用运动估计策略(ME)历来都是视频编码实现的重点研究课题。在H.263标准的实现软件中,对模式的选择是简单的基于对阀值的比较。在新标准的测试软件中使用了拉格朗日率失真优化策略,它基于使用每种图像块尺寸和每种预测模式而产生的参差及其传输的码率。这样,模式选择可以取得优化的率失真性能,但这是以提高运算复杂度为代价的。此优化操作是对下面拉格朗日函数的最小化:

      J=SATD+λ·R

      式中,R—对应传输各部分的比特率;λ—优化参数(与量化参数有很强的相关性);SATD—经过哈德曼变换的4×4块的预测参差绝对值总和。

      对于所有帧内、帧间宏块编码模式及多参考帧的选择都通过对拉格朗日函数的最小化来实现。通常,视频标准只包括解码规范,而模式选择的技术研究是属于编码端的范畴,所以不列在标准之内。

      二 H.264与其它标准的性能比较

      为了阐述H.264的编码效率,我们将其与其它标准如MPEG-2、H.263、MPEG-4等作比较。使用QCIF、CIF格式的图像序列作测试,所有编码器都使用拉格朗日优化技术。我们使用H.264的测试软件JM2.0并使用了Main Profile的主要技术特征。对H.263和H.264采用的参考帧数为5,只编码图像序列的第一帧为I帧,每2个参考帧P之间插入2个非参考帧B。使用全搜索方式进行32×32整数范围的运动估计,且由预先设定的量化参数来进行比特率的调整。图为对CIF格式的图像序列Tempete在帧率为15Hz时所作的测试比较。

      和其它标准比较,H.264在比特率上减少的程度如表1所示。




      为进一步对新标准的技术特征进行性能分析,我们将H.264采用的帧内编码方案与静态图像编码标准采用的技术作性能比较。在这里,我们采用H.264的测试软件JM3.9a与不包含ABT技术的Main Profile、JPEG 2000的测试软件VM 9.0的测试结果进行比较。H.264采用的帧内编码技术性能突出。对大多数测试的图像序列来说,在各种比特率条件下,其性能总是超过JPEG 2000。究其原因可能是H.264采用了多种设计合理的帧内预测模式。另一方面,H.264采用小波变换技术、分级量化及算术编码,并没有使用预测技术。在高比特率时,两者处理的图像在主观质量上并无太大差异。然而在低比特率时,JPEG 2000的图像看起来更模糊,图像轮廓有明显的环状效应,这是使用小波变换造成高频分量损失的结果。测试比较结果如表2所示。


      从测试结果看,H.264采用的帧内编码技术在对大图像处理时会出现增益的收缩,然而在低码率的情况下却可以取得很高的增益。针对所有图像序列及比特率,H.264平均对JPEG 2000有1.12dB的优势。

      三 H.264标准的展望

      许多人都曾以为传统的基于块的视频编码技术已经落后,将会被摈弃,然而H.264的提出再次证明其在低码率压缩视频方面的优势仍有着很大挖掘潜力。新标准更进一步体现了对视频信源的适应性,但这种适应性是以提高算法的复杂性和增加对参考帧的存储能力为代价的。

      H.264标准不仅针对视频会议系统,而且涵盖了电视广播、网络流媒体、多媒体信息的数字存储、数字影院等各方面的应用。总之,由于采用了先进的压缩技术,H.264拥有优异的视频实时处理性能,必将会引发视频传输相关技术研发的又一次浪潮,同时创造出巨大的商业机会。