一种视频压缩数据的封装方法

文档序号:7922172阅读:251来源:国知局

专利名称::一种视频压缩数据的封装方法
技术领域
:本发明涉及视频数据处理技术,特别涉及一种视频压缩数据的封装方法。
背景技术
:视频具有直观性、高效性等优点,但是视频数据包含的信息量非常大,如果对原始视频数据进行存储或网络传输,将耗费巨大的存储空间或网络带宽。为解决这一问题,各种视频数据的压缩方法不断涌现,运动专家组图像压缩方法片反本4(MPEG4,MovingPictureExpertsGroup4),尤是一种一见步页凄丈据的压缩方法,以下简要介绍这一视频数据的压缩方法。连续的视频其实是由多帧静止的画面组成的,当每秒放映的帧数达到一定数量,例如每秒连续播放20帧静止画面时,给人的感觉就是一段连续的视频了。如果采用MPEG4对原始视频数据进行压缩,视频压缩数据中将包含I帧、P帧和B帧三类帧数据。上述I帧又称为关键帧,压缩后保留帧内的完整内容,而P帧和B帧又称为过渡帧,其中P帧在压缩后仅保留自身相比于前一帧的差别部分,B帧在压缩后仅保留自身相比于前一帧和后一帧的差别部分。以一个假设的实例来说明上述视频压缩数据中帧的分类。图1为关于一根粗实线的5帧静止画面,假设这5帧静止画面连续播放时反映的是该圆柱体由竖直到弯折的变化,那么反映粗实线实质性状态变化的第1帧和第5帧就将被压缩为I帧,而第2帧至第4帧被压缩为P帧或B帧。可见,如果将一段原始视频数据按照MPEG4方法进行压缩,视频压缩数据就是I帧、P帧和B帧交错出现的情况,例如IPBBBIPPBBI。使用MPEG4方法得到的视频压缩数据如果要在网络中进行传输,还要按照协议进行封装,目前由互联网工作组请求评论协议3016号(RFC3016,RequestForComment3016)定义的数据格式是常用的一种封装格式,在该数据格式下利用实时传输协议(RTP,Real-timeTransportProtocol)对视频压缩数据进行封装。图2为现有技术中的RTP包格式,其中扩展头(Extensionheader)为扩展字段的起始标识,但现有RTP包在扩展头之后的扩展字段字节数为0,即并不包含扩展字段;扩展头之前的字段为RTP包的标准包头信息,其中X域用于指示RTP包中是否存在扩展字段,现有的RTP包中该X域均填充为0,代表RTP包中没有扩展字段;扩展头之后的MPEG4载荷流字段(MPEG4PayloadStream)就是承载视频压缩数据的字段。为了提高效率和充分利用MPEG4的压缩特性,将视频压缩数据以视频对象平面(VOP,VideoObjectPlane)为单位分成若干个小数据包,而考虑到网络传输包长的限制,每个RTP包中包含的VOP长度应小于最大传输单元(MTU,MaximumTransportUnit)。当一个VOP的长度大于MTU时,将该VOP分片放入多个RTP包中,并在每个RTP包的载荷流字段中都携带该VOP的头信息,以防止丢包。当一个VOP的长度小于MTU时,在一个RTP包中放入多个VOP。无论采用哪种打包方式,VOP都携带在RTP包的MPEG4载荷流字段中。虽然采用RTP包封装MPEG4视频压缩数据已经能满足网络传输的要求,但是对于一些特殊的应用场合,这种封装方法还是会给实际的应用带来很多不便。以网络监控系统为例,由监控前端采集原始视频数据、按照MPEG4进行压缩、并将视频压缩数据封装成RTP包传输给网络录像服务器存储,监控终端从网络录像服务器获取到RTP包后进行解包和解码,重新显示。在网络监控系统对视频压缩数据进行打包时可能出现以下问题第一、由于I帧是P帧和B帧解码的基准,因此监控终端必须从I帧开始解码,按照现有的封装方式,监控终端必须对RTP包解包并对该包承载的视频压缩数据解码后才能知道该包中是否包括I帧,如果不包括的话需要再对下一个RTP包进行解包及解码,不利于快速找到I帧,进而导致监控终端解码延迟时间较长;第二、监控终端在对I帧、P帧或B帧解码时,必须使用视频对象层(VOL,VideoObjectLayer)信息,但按照现有封装方式,VOL信息并非在RTP包中携带,而是通过其他协议(例如SDP)渠道传输给监控终端,并不方便;第三、目前使用的RTP包中,RTP标准包头信息中的TimeStamp字段携带有时间戳信息,该时间戳信息表示当前包与上一包之间的时间差,并不能指示当前包中承载的视频压缩数据生成时的绝对时间,而对于网络监控系统来说,为方便查证取证,获知视频的绝对时间是非常重要的。综上所述,现有技术中对视频压缩数据的封装方法,对于网络监控系统等特殊的应用场合而言给实际应用造成了诸多不便。
发明内容本发明的主要目的在于提供一种视频压缩数据的封装方法,使用该方法可以方便网络监控系统等特殊的应用场合对视频压缩数据的操作。本发明的技术方案是这样实现的一种视频压缩数据的封装方法,关键在于,将视频压缩数据与其指示信息封装在RTP包中。可见,本发明中的视频压缩数据的封装方法将视频压缩数据及其指示信息一起封装在RTP包中,该指示信息可以是视频压缩数据的帧类型、绝对时间信息或解码信息等,这样,接收到RTP包的终端仅对RTP包解包就可以获知视频压缩数据的指示信息,省去了进一步解码或者从其他渠道获取指示信息的麻烦,方便了实际应用。图1为现有技术中关于一根粗实线的5帧静止画面示意图;图2为现有技术中的RTP包格式;图3为本发明中的RTP包格式;图4为本发明实施例一中的视频压缩数据的封装流程图;图5为本发明实施例二中的视频压缩数据的封装流程图;图6为本发明实施例三中的视频压缩数据的封装流程图。具体实施例方式为使本发明的目的和优点更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。本发明的关键在于,将视频压缩数据及其指示信息一起封装在RTP包中。可见,本发明中的视频压缩数据的封装方法将视频压缩数据及其指示信息一起封装在RTP包中,该指示信息可以是视频压缩数据的帧类型、绝对时间信息或解码信息等,这样,接收到RTP包的终端仅对RTP包解包就可以获知视频压缩数据的指示信息,省去了进一步解码或者从其他渠道获取指示信息的麻烦,方便了实际应用。下面介绍本发明视频压缩数据的封装方法的几个实施例,这些实施例都在如下应用场景下实施。第一、应用在网络监控系统中。第二、以VOP为单位进行封装,一个VOP就是一帧,每个RTP包的载荷流字段中最多填充一个VOP。第三、指示信息为视频压缩数据的帧类型、绝对时间信息或VOL。其中帧类型指的就是VOP类型;绝对时间信息指的是将VOP生成时的绝对时间,以1970年1月1日为基准转换的毫秒数;解码信息指的就是VOL信息。上述转换毫秒数的操作可以由执行MPEG4压缩的终端执行,例如在网络监控系统中可以由网络前端的编码器先获取绝对时间信息,再执行所述转换,这里的获取和转换均可以利用现有的方法进行。为在RTP包中携带上述指示信息中的VOP类型和绝对时间信息,本发明在RTP包中定义了扩展字段。图3为本发明中的RTP包格式,扩展头(Extensionheader)之后共定义了8字节的扩展字段,包括VOP类型(VOPType)域、其他保留(OFF,OtherForFuture)域和绝对时间信息(ATS,AbsoluteTimeStamp)域。上述VOP类型和绝对时间信息的填充方式如表一所示<table>tableseeoriginaldocumentpage9</column></row><table>表一实施例一在本实施例一中,假设指示信息为VOL,视频压缩数据中的每一个VOP都是原始载荷。图4为实施例一中的视频压缩数据的封装流程图,该流程包括步骤401:判断视频压缩数据中的当前VOP是否为关^t帧,如果是,执行步骤402;否则,执行步骤403。步骤402:将VOL加到当前VOP之前构成新的载荷。步骤403:判断载荷的长度L是否大于MTU,如果是,执行步骤404;否则,执行步骤405。本步骤中,如果步骤401中判断当前VOP为关键帧,则这里判断的载荷为步骤402中构成的新的载荷;如果步骤401中判断当前VOP并不是关键帧,则这里判断的载荷就是当前VOP。实施本步骤的主要目的是考虑IP分组网络传送包长的限制,将每个RTP包载荷流字段中填充的内容长度限制为小于MTU,而视频压缩数据中的一个VOP的长度可能大于MTU也可能小于MTU。步骤404:将所述长度L除以MTU的结果作为当前VOP需要封装的RTP包的lt目。步骤405:填充RTP包的标准包头信息。本步骤中,如果在步骤403中判断VOP的长度L大于MTU,则填充的是步骤404中确定出的所有RTP包的标准包头信息;如果在步骤403中判断VOP的长度L小于MTU,则填充的就是当前VOP所对应的一个RTP包的标准包头信息。标准包头信息的填充内容和方式,与现有技术的相同,即填充图3所示RTP包格式中的扩展头之前的那部分信息。仅有的区别是本发明中标准包头信息的X域填充l,表示RTP包中包括扩展字段,而现有技术中的X域中填充0。步骤406:将载荷填充在RTP包的载荷流字段中。本步骤中,如果在步骤403中判断VOP的长度L大于MTU,则按照长度L除以MTU的结果将当前VOP分片,将每一分片数据填充在一个RTP包的载荷流字段中,并将VOP的头信息也复制到每个RTP包的载荷流字段中,在某些对丢包要求较低的应用场合下,这里可以仅将VOP的头信息复制到该VOP对应的第一个RTP包中。如果在步骤403中判断VOP的长度L小于MTU,则就是将当前VOP填充在一个RTP包的载荷流字段中,并将VOP的头信息也复制到该RTP包中。步骤407:判断当前帧是否为视频压缩数据的最后一个VOP,如果是则结束流程,否则执行步骤408。步骤408:将当前VOP的下一个VOP最为更新后的当前VOP,返回步骤401。可见在本实施例一中,指示信息填充在RTP包的载荷流字段中,无需10定义扩展字段,RTP包的标准包头信息中的X域可以填充0。实施例二在本实施例二中,假设指示信息为代表VOP类型的数字組合或者为VOP生成时的绝对时间,视频压缩数据中的每个VOP都是原始载荷。图5为实施例二中的视频压缩数据的封装流程图,该流程包括步骤501:判断当前VOP的长度L是否大于MTU,如果是,执行步骤502;否则,执行步骤503。步骤502:使用所述长度L除以MTU的结果作为当前VOP需要封装的RTP包的数目。步骤503:填充RTP包的标准包头信息。本步骤中,如果在步骤501中判断VOP的长度L大于MTU,则填充的是步骤502中确定出的所有RTP包的标准包头信息;如果在步骤501中判断VOP的长度L小于MTU,则填充的就是当前VOP所对应的一个RTP包的标准包头信息。步骤504:判断当前填充过标准包头信息的RTP包是否为当前VOP的第一个RTP包,如果是,执行步骤505;否则,执行步骤506。本步骤中,仅将扩展字段中填充的VOP类型和绝对时间信息填充在该VOP的第一个RTP包中,而后续的RTP包中都不需要定义扩展字段,因此后续RTP包的标准包头信息中的X域填充为0。采用这种方式这样可以节省附加网络传输流量。步骤505:在RTP包的扩展字段中填充指示信息。本步骤中,如果指示信息为代表帧类型的数字组合,则在RTP包的扩展字段的VT域中填充,如果指示信息为生成帧时的绝对时间,则在RTP包的扩展字段的ATS域中填充,填充的具体内容与表一所示的相同。步骤506:将载荷填充在RTP包的载荷流字段中。本步骤中,如果在步骤501中判断当前VOP的长度L大于MTU,则按照长度L除以MTU的结果将当前VOP分片,将每一分片数据填充在一个RTP包的载荷流字段中,并将VOP的头信息也复制到每个RTP包的载荷流字段中,在某些对丢包要求较低的应用场合下,这里可以仅将VOP的头信息仅复制到该VOP对应的第一个RTP包中。如果在步骤501中判断VOP的长度L小于MTU,则就是将当前VOP填充在一个RTP包的载荷流字段中,并将VOP的头信息也复制在该RTP包的载荷流字段中。步骤507:判断当前帧是否为视频压缩数据的最后一个VOP,如果是则结束流程,否则执行步骤508。步骤508:将当前VOP的下一个VOP最为更新后的当前VOP,返回步骤501。除上述两个实施例之外,本发明的实施例三中,指示信息也可以同时包括解码信息、帧类型和生成帧时的绝对时间,在这种情况下相当于是将上述实施例一和实施例二中的流程结合起来,即将步骤504和步骤505放到步骤405和步骤406之间执行,且步骤504中如果判断出当前填充过标准包头信息的RTP包不是当前VOP的第一个RTP包,继续执行步骤406。图6示出了上述本发明实施例中视频压缩数据的封装方法流程图,关于其中各个步骤的执行方式在前文中已详细介绍过,这里不再赘述。本发明的视频压缩数据的封装方法,可以在多种应用场合使用,以网络监控系统为例,本发明方法中的各个步骤均由网络前端在封装视频压缩数据时实现。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。1权利要求1、一种视频压缩数据的封装方法,其特征在于,将视频压缩数据与其指示信息封装在RTP包中。2、如权利要求l所述的方法,其特征在于,所述指示信息为视频压缩数据的解码信息;所述将视频压缩数据与其指示信息封装在RTP包中为将视频压缩数据及其解码信息封装在RTP包的载荷流字段中。3、如权利要求2所述的方法,其特征在于,所述视频压缩数据中包括关键帧和过渡帧,每个RTP包中最多封装一个关键帧或过渡帧;所述将视频压缩数据与其解码信息封装在RTP包的载荷流字段中为判断视频压缩数据中的当前帧是否为关键帧;如果是,将所述解码信息加到当前帧之前构成载荷,填充RTP包的标准包头信息,将载荷填充在RTP包的载荷流字段中,再将下一帧作为更新后的当前帧并返回执行所述判断的步骤,直到当前帧为视频压缩数据的最后一帧;否则,填充RTP包的标准包头信息,并将当前帧作为载荷填充在RTP包的载荷流字段中,再将下一帧作为更新后的当前帧并返回执行所述判断的步骤,直到当前帧为视频压缩数据的最后一帧。4、如权利要求3所述的方法,其特征在于,每个RTP包的载荷流字段填充信息的长度为最大传输单元MTU;所述填充RTP包的标准包头信息之前,进一步包括判断载荷的长度是否大于MTU;如果是,则将该长度除以MTU的结果作为当前帧需要封装的RTP包的数目,然后执行所述填充RTP包的标准包头信息的步骤,所述填充RTP包的标准包头信息为填充所有当前帧需要封装的RTP包的标准包头信息;否则,直接执行所述填充RTP包的标准包头信息的步骤,所述填充RTP包的标准包头信息为填充一个当前帧封装的RTP包的标准包头信息。5、如权利要求1所述的方法,其特征在于,预先在RTP包中设置扩展字段;所述指示信息为视频压缩数据的帧类型或绝对时间信息;所述将视频压缩数据与其指示信息封装在RTP包中为将视频压缩数据封装在RTP包的载荷流字段中,并将所述帧类型或绝对时间信息封装在所述扩展字段中。6、如权利要求5所述的方法,其特征在于,所述视频压缩数据中包括关键帧和过渡帧,每个RTP包中最多封装一个关键帧或过渡帧;所述将视频压缩数据封装在RTP包的载荷流字段中,并将所述帧类型或绝对时间信息封装在所述扩展字段中为填充RTP包的标准包头信息;在RTP包的扩展字段中填充指示信息;将当前帧作为载荷填充在RTP包的载荷流字段中,然后将下一帧作为更新后的当前帧并返回执行所述填充RTP包的标准包头信息的步骤,直到当前帧为视频压缩数据的最后一帧。7、如权利要求6所述的方法,其特征在于,每个RTP包的载荷流字段填充信息的长度为最大传输单元MTU;所述填充RTP包的标准包头信息之前,进一步包括判断载荷的长度是否大于MTU;如果是,则将该长度除以MTU的结果作为当前帧需要封装的RTP包的数目,然后执行所述填充RTP包的标准包头信息的步骤,所述填充RTP包的标准包头信息为填充所有当前帧需要封装的RTP包的标准包头信息;否则,直接执行所述填充RTP包的标准包头信息的步骤,所述填充RTP包的标准包头信息为填充一个当前帧封装的RTP包的标准包头信息。8、如权利要求4或7所述的方法,其特征在于,将载荷填充在RTP包的载荷流字段中之前进一步包括将当前帧按照所述长度除以MTU的结果分片;所述将载荷填充在RTP包的载荷流字段中为将当前帧的每一分片数据填充在当前帧需要封装的一个RTP包的载荷流字段中。9、如权利要求7所述的方法,其特征在于,当载荷的长度大于MTU时,所述在RTP包的扩展字段中填充指示信息之前,进一步包括判断当前填充过标准包头信息的RTP包是否为当前帧的第一个RTP包,如果是,执行在RTP包的扩展字段头中填充指示信息的步骤;否则,直接执行将当前帧填充在RTP包的载荷流字段中的步骤。全文摘要本发明公开了一种视频压缩数据的封装方法,将视频压缩数据与其指示信息封装在RTP包中。应用本发明,可以方便网络监控系统等特殊的应用场合对视频压缩数据的操作。文档编号H04N7/24GK101505420SQ20081018076公开日2009年8月12日申请日期2008年12月2日优先权日2008年12月2日发明者李福堂申请人:深圳市同洲电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1