一种基于H.264视频报文类型的不等差错传输保护方法与流程

文档序号:12378897阅读:154来源:国知局
一种基于H.264视频报文类型的不等差错传输保护方法与流程
本发明属于网络视频传输技术,特别是一种基于H.264视频报文类型的不等差错传输保护方法。
背景技术
:网络视频业务虽然得到了广泛的应用和巨大的发展,但是,由于视频传输应用的种种特殊性,此中仍然存在许多亟待解决和完善的问题。现有视频编码方式为获得高压缩率,通常采用基于变换编码和运动补偿框架,利用运动估计以及运动补偿来消除帧间的时间冗余,利用变换编码和量化操作消除帧内的空间冗余。以上方法的实现依赖于大量的帧间、帧内预测编码,伴随而来的是数据之间的严重依赖性,这就使得网络视频流对分组丢失、时延、抖动等网络特性非常敏感。因此,对网络中的视频数据进行前向纠错,采用一定的方式进行差错保护,产生一定量的冗余信息以抵抗网络环境恶化造成的视频质量损伤,是非常有必要的。网络中的视频数据包携带不同的视频数据,而这些视频数据因视频内容、编码方式等特性,又具有不同的重要性,因而其受到网络状况影响而造成的质量损伤又有着明显的差别。视频的关键部分即使丢失非常少量的数据,也可能造成视频质量的明显下降;而不重要的部分即使丢失较多数据,也不会造成严重的视频质量下降。因此,在进行差错保护时,针对网络视频数据报文进行重要性分级,并根据不同等级的重要性进行不等差错保护,是一种解决问题的有效途径。在这种应用需求下,针对网络的丢包特性提出一种视频数据包重要性衡量标准,成为首要且必要的问题。邢成文等人的国家发明专利[文献1:一种基于无速率调制的立体视频传输方法,CN104394401A]针对H.264/MVC格式视频进行研究,仅就视频编码的基本层和增强层区分视频报文的重要性,对报文内容的重要性划分不够精细。因此,亟需一种分级方式对视频报文的重要性进行有效的划分。视频在压缩编码时会造成视频质量的损伤,被称为编码损伤。由于视频编码的方式有很多,可调控的参数也很多,通过这些不同的方式及参数编码得到的视频流损伤程度不同,其码率也不同。输出码率越高,视频损伤越小,传输开销则越大;反之,输出码率越低,视频损伤越大,传输开销则越小。无线网络的带宽 资源非常有限,且有可能出现较大波动。石东新等人的国家发明专利[文献2:一种系统不等差错保护的Raptor码方法,CN104320147A]采用喷泉码中的Raptor码对网络数据进行不等差错保护,但是由于喷泉码本身复杂度较高,造成的时延比较大,不适用于实时视频传输系统,且在某段数据进行Raptor码编码后,若解码失败,受到保护的源数据全部无效,应对比较高的丢包率时性能会大幅衰减。董育宁等人的国家发明专利[文献3:基于不等差错保护的实时视频通信方法,CN103067719A]针对H.264/AVC视频序列的图像组(GroupofPictures,GOP)结构进行了重要性分级,采用前向纠错技术对各个视频码流构成的分组进行保护,对于传输中的失真,采用错误隐藏方式在解码端进行恢复,不改变视频编码的速率,因此在信道带宽变化时,可能因带宽过大造成带宽资源的浪费,或由于带宽不足而造成严重的拥塞丢包,并且,这种方法需要前向纠错和错误隐藏共同作用,即对视频应用系统的发送端和接收端都进行改动,错误隐藏也会造成一定时延。因此,如何分配有限的带宽资源用于传输视频码流和冗余信息,以最大程度地复原视频信息,降低编码、传输带来的视频质量损伤,是一个非常重要的问题。技术实现要素:本发明的目的在于提供一种基于H.264视频报文类型的不等差错传输保护方法,能够实现视频流的不等差错保护,得到最佳的视频传输质量。实现本发明目的的技术解决方案为:一种基于H.264视频报文类型的不等差错传输保护方法,首先按照实际网络丢包环境度量H.264视频报文不同类型的重要性并依此对视频流内容进行分级,即通过解析视频流,按照视频分组的帧类型和图像组GOP位置进行分级;然后建立线性编码的冗余带宽优化分配模型;在此基础上调整信源编码和信道编码的码率,信道编码采用线性编码对视频流进行不等差错保护,寻找视频质量衰减的最低值对应的信道带宽分配比例,得到网络随机丢包率为1%至10%之间的接收端接收到的最佳视频质量。本发明与现有技术相比,其显著优点为:(1)采用基于帧类型和GOP位置的视频报文重要性分级方式,得到视频报文的重要性比例,并针对网络丢包率研究其重要性,分级方法更加合理,更加符合实际网络环境。(2)采用线性编码对 码流进行保护,建立基于线性编码的冗余带宽优化分配模型,得到不同丢包率下不同重要性分级的冗余带宽分配比例,接收端恢复视频质量有明显提高,使得无线网络视频流在随机丢包环境下得到更好的保护。(3)在确定不等差错保护方法的基础上,解决网络带宽在信源编码与线性编码之间的码率分配问题,得到最优的分配比例,能够使用较少的带宽完成视频流的较好保护,是一种效率高、实时性好、适用范围广的保护方法。下面结合附图对本发明作进一步详细描述。附图说明图1是模拟控制丢包率的流程图。图2是本发明基于帧类型和GOP位置的不等差错保护的流程图。具体实施方式本发明基于H.264视频报文类型的不等差错传输保护方法,包括三个部分:基于帧类型和GOP位置的H.264视频流重要性分级、基于线性编码的冗余带宽优化分配模型建立和信源信道编码带宽的分配,具体实施过程为:1、对H.264视频流进行基于帧类型和GOP位置的重要性分级首先,通过解析码流区分不同数据包所携带报文的不同类型:在压缩的H.264视频流中,视频帧按照生成方式和参考性分为I帧、P帧、B帧三种基本类型,并以GOP为独立编码单位。I帧采用帧内编码方式,即不参考其他帧进行编码;P帧为前向预测编码,参考帧可以是I帧、P帧,并按照编码顺序进行播放;B帧采用双向预测编码,可参考播放顺序在其之前、之后的I帧、P帧(B帧本身一般不具有参考性)。所以,在H.264视频流中,I帧的错误会造成参考它生成的P、B帧的错误,而P帧的错误会造成参考它生成的B帧的错误,B帧的错误则不会影响其他帧(因其不具有参考性)。从参考性的角度可以看出,I帧的重要性高于P帧,而P帧的重要性高于B帧。而在每个GOP中,第一帧为I帧;P帧参考I帧以及GOP位置在其之前的P帧生成,位置较前的P帧具有更高的参考性,因此P帧按其GOP位置由前至后重要性依次降低;而B帧则参考I帧和P帧生成,由于B帧本身不具有参考性,因此其位置与其重要性无关。其次,将H.264视频流按照帧类型和GOP位置分为不同的重要性等级,I 帧数据为一级,B帧数据为一级,P帧数据按照其GOP位置由前向后重要性依次降低,分为不同的重要性等级。解析视频流,按照上述分级方法分级,根据各重要性等级视频分组丢失对视频质量的影响,得到其丢失率与视频质量衰减之间为线性关系,I帧分组重要性高,B帧分组重要性低,P帧分组按其GOP位置由前向后重要性递减。再次,对不同的报文类型独立控制丢包,得到丢包率与视频质量衰减之间的关系。在对H.264视频流进行基于帧类型和GOP位置的重要性分级时,首先要通过解析码流区分不同数据包所携带报文的不同类型,然后对不同的类型独立控制丢包,确定其丢包率与视频质量衰减之间的关系。H.264视频由网络抽取层NAL(NetworkAbstractLayer,NAL)单元组成,NAL单元分为NAL头和原始字节序载荷(RawByteSequencePayload,RBSP),类型为视频数据条带的RBSP又分为条带头(SliceHeader)和条带数据(SliceData),视频报文的帧类型(I、P、B帧)存储在NAL头中,而其GOP位置号可由SliceHeader和序列参数集(SequenceParameterSet,SPS)、图像参数集(PictureParameterSet,PPS)共同解析得知。H.264视频流在进行网络传输时,封装为UDP包,在传输层进行分片传输,传输层进行分片的最大长度为MTU,MTU是指最大传输单元(MaximumTransmissionUnit,MTU),网络丢包也是以此为单位进行的。因此,为模拟真实的网络丢包现象,在采用X264编码器进行视频编码时,即按照MTU大小限制进行分片编码,亦即每个NAL单元大小不超过MTU,实现应用层视频分组到网络数据包的一对一映射。由此,由此控制丢弃视频分组即可模拟控制丢包率。在此基础上,对不同重要性等级的视频分组数目进行统计,按照丢包率设置产生随机数列,选择丢弃数目为当前等级视频分组数目与丢包率的乘积的视频分组,即可得到不同丢包率下不同重要性等级的视频分组独立丢包带来的视频质量衰减;控制丢包时,首先解析H.264视频流得到视频分组的帧类型和GOP位置,对视频分组按照内容为I帧数据、B帧数据和不同GOP位置的P帧数据进行分级;统计视频序列中各分级视频分组的数目并对其进行标号,按照丢包率得到应丢失的分组数目并在当前分级的总分组数中产生标号的随机数列,将随机数列中标号的分组丢弃,重复多次并将均值作为结果。丢包率设定为1%到10%,每1% 步进。最后,采用FFmpeg进行解码后得到恢复视频,将恢复视频的质量与原始视频质量对比,采用峰值信噪比(PeakSignalNoiseRatio,PSNR)评价方法评估视频质量;再将视频直接进行编码和解码,并与原始视频对比,得到解码视频的质量。对解码视频和恢复视频质量求差,抵消视频的压缩失真,得到随机丢包造成的传输失真。由此,可得到不同等级视频分组丢包率与视频质量衰减之间的关系曲线,并将不同等级丢包造成的视频质量衰减差别作为其所需冗余码率占总冗余带宽比例的参照。由此可得各等级视频分组丢失率与视频质量衰减之间呈线性关系,各等级因其重要性不同具有明显不同的斜率。上述过程的具体流程参见图1。信源编码采用X264编码器,对码流使用FFmpeg解码器进行一次本地解码,得到本地受损视频。再将H.264码流进行解析,识别NAL单元报文内容的感知重要性等级,统计不同类型(帧类型、GOP位置)NAL单元(即视频分组)的数目;按照所设定的丢包率产生随机序列,独立地随机丢弃每个类型的NAL单元;对受损的264视频流采用FFmpeg进行视频解码后,根据各NAL单元在264视频流中的序列顺序,采用复制前一帧的方法补偿丢失的帧,得到配准后的受损YUV视频;将本地YUV受损视频和受损YUV视频分别以源视频为参考视频进行PSNR评价,得到本地评价结果和丢包评价结果,求差值得到其PSNR衰减,得到网络丢包造成的视频质量损伤。2、建立基于线性编码的冗余带宽优化分配模型线性编码的原理是将m个源数据块经过一定的线性组合生成n个冗余数据块,将m+n个数据块共同发送至接收端,接收端只要接收到其中的任意m个数据块,即可通过其线性关系将m个源数据块正确恢复。基于视频分组的线性编码的原理是将m个源分组经过线性组合生成n个冗余分组,将由源分组和冗余分组组成的m+n个分组共同发送至接收端,当解码器能正确接收到中的任意m个以上分组,即丢失分组数不大于n时,m个源视频分组可以完全恢复;当解码器正确接收到的分组数小于m,则将其中的冗余分组全部丢弃,仅将源分组进行解码。根据上述基于分组的线性编码的原理,以不同重要性分级视频分组丢包率与接收端视频质量衰减的线性关系为参照,可以建立冗余带宽优化分配模型。设视频流按照报文重要性被分级为t个等级,第j级源分组数目为mj,冗余 分组数为nj,分组的丢包-视频质量衰减曲线斜率为kj,则设在网络丢包率为p的条件下,第j级单个源分组丢失的概率为其自身丢失,并且本等级内其余mj+nj-1个分组中丢失数目(丢失数目为i)大于nj-1的总概率为pr,j,可表示为pr,j=p·Σi=njmj+nj-1Cmj+nj-1ipi(1-p)mj+nj-1-i]]>其中是指概率。则当前条件下的总视频失真为ΔPSNR=Σj=0t-1kjpr,j=Σj=0t-1kjp·Σi=njmj+nj-1Cmj+nj-1ipi(1-p)mj+nj-1-i]]>因此,冗余码率分配问题可以表示为如下优化问题minΣj=0t-1[kjpΣi=njmj+nj-1Cmj+nj-1ipi(1-p)mj+nj-1-i]Σj=0t-1nj=nnj≥0]]>其中n为冗余分组数目,为信道总冗余带宽与源视频分组最大长度(近似为MTU)的比值。优化问题的解通过搜索求得,可得到不同丢包率条件下,信道带宽不同冗余比例时各重要性等级所需的最优化冗余添加比例。例如,将LiveVideoDatabase标准视频库中的tr.yuv视频按照“IBBBBBPBBBBBPBBBBBPBBBBBPBBBBBP”的GOP结构采用X264分片编码为源视频流用于测试,则其按照重要性分级方法可分为I、B、P1、P2、P3、P4;当信道带宽为1000kbps时,设定冗余带宽为信道带宽的10%,对上述优化模型求解可得不同丢包率下各重要性分级的冗余添加码率与总冗余码率的比例如表1所示,采取线性编码对视频分组进行保护时即以表中比例为参照。表110%冗余时测试视频不同等级视频序列冗余量占信道总冗余量比例3、信源信道编码带宽的分配信源编码与信道编码(本发明中为线性编码)均需消耗一定的带宽,信源编码码率越高,则送至网络的源视频质量越高;信道编码码率越高,则可为网络中的视频提供越好的保护。在带宽有限的条件下,而过高的信源编码码率会导致信道编码码率过低,无法抵抗丢包对视频质量带来的严重影响;过高的信道编码码率会导致信源编码码率过低,源视频质量过低。因此,在信道总带宽一定的条件下,调整信源编码和信道编码的码率,寻找最优的分配比例,最优的分配比例是指视频质量衰减的最低值对应的分配比例。具体实现方法为首先确定不等差错的保护方法,然后在信道总带宽一定的条件下,在1%至10%(每1%步进)网络丢包率下改变信源编码和信道编码的码率,信源编码码率从网络总带宽的80%变化至100%(每2%步进);通过如图2的测试得到在1%至10%丢包率条件下的最佳信源信道码率分配比例。对tr.yuv视频进行测试,最佳信源信道码率分配比例分布如表2所示。其中Rtotal为信道总带宽,Rs为信源编码码率,Rr为信道编码码率。表2不同丢包率下最佳信源信道编码码率分配分布经过上述测试验证,本发明中的不等差错保护方法在10%以内的丢包率条件下,消耗10%以内的网络带宽有效降低接收端恢复视频的失真,提供较好的视频传输质量保证。而且,本发明具有很好的实时性和可移植性,适用于不同的网络,可有效用于实际应用。对于任何视频,均可以在一定时间内通过分析得到其压缩特性并据此提供良好的保护,有效提高恢复视频质量。其中,不等差错保护的具体流程参见图2。其中,视频编码采用X264编码器,视频解码采用FFmpeg解码器。除视频条带之外的其他类型分组包含重要信息,不进行丢包,直接经过单独的通道使用socket进行UDP打包送至接收端,此通道命名为ELSE通道;各重要性等级的视频分组则按照冗余带宽优化分配模型所分配得到的冗余分组添加比例进行线性编码,并使用socket进行UDP打包发送,各通道按照所传输的视频分组类型命名为I通道(用于传输I分组),P1,P2,……,Pn(用于传输各GOP位置的P分组)。对除ELSE通道之外的其他通道数据包进行随机丢包;经过丢包后的视频分组送至接收端后进行线性解码,并按照其视频序列顺序进行排序,采用FFmpeg进行解码得到恢复YUV视频。YUV视频经过编码生成H.264视频流,后者经过解码生成YUV视频。评价时,仍然以原始YUV视频为参考计算恢复YUV视频的PSNR值,得到视频压缩与丢包造成的总失真。经测试可知,在基于帧类型和GOP位置的视频报文重要性分级研究基础上的线性编码不等差错保护策略较之均等保护、基于帧类型的保护方法性能有明显的提高。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1