基于画面组单元时序控制算法的H.264实时流关键帧预处理
摘 要:
网络带宽特别是上行带宽受限情况下,基于H.264高压缩率的网络音视频通话或视频会议普遍会出现不同程度的丢包现象,从而造成流媒体播放的花屏等质量问题,影响视频通话或视频会议的效果。针对上述问题,提出了基于关键帧预处理的实时流媒体播放质量控制方法。该方法采用单元时序控制算法对视频关键坏帧进行实时侦测和取舍,进而减少花屏情况。使用该方法将降低后处理计算的时空成本,并提高流媒体播放的流畅性。通过原始帧播放、后处理播放、关键帧预处理播放3种处理方法的实验对比,证明基于播放单元时序控制算法的实时流媒体播放器,不但明显提高了播放的流畅性,播放后处理的计算复杂度也降低了40%以上。结果表明,该方法对提高播放质量、减少花屏情况有着突出的效果。
关键词:
H.264;实时流媒体;关键帧预处理;时序控制算法;画面组单元
0 引言
在实时流媒体中,视频数据的完整性决定着视频的播放质量。视频数据在不同网络环境下会有不同程度的缺失,这会导致视频图像质量的下降(也就是常说的花屏),即便使用H.264进行视频压缩也会发现这样的情况。现在主流的流媒体播放器通过后处理方式对画面图像进行优化,但是都没有彻底解决花屏问题。尤其在低带宽下,花屏问题非常突出。所以,提高实时流媒体的播放质量是解决花屏问题的核心。
基于这个问题,本文主要从两个方面对视频数据缺失原因进行分析:1)对实时流媒体数据传输流程中四个步骤的数据缺失进行分析;2)对画面组(Group Of Pictures, GOP)中的关键帧与非关键帧的缺失问题进行分析,其中GOP表示一组连续的画面,一个GOP中包含一个关键帧和多个非关键帧[1]。在此基础上,本文创新地提出了关键帧预处理机制,引入花屏与卡屏以及花屏与卡屏之间平衡的概念,并通过此机制提出GOP单元时序控制算法对视频的关键坏帧进行实时侦测和取舍。该算法在保持视频流畅的基础上尽量丢弃花屏帧,这极大降低了后处理计算的时空成本和硬件设备的性能要求。最后,本文通过3种播放器的对比实验来证明关键帧预处理播放器不但明显提高了视频的清晰度和流畅性,而且使后处理的计算复杂度也有很大的降低。
1 相关工作
1.1 实时流播放中的数据缺失
实时流媒体技术中运用了实时传输协议(Realtime Transport Protocol, RTP)、实时传输控制协议(Realtime Transport Control Protocol, RTCP)和实时流协议(RealTime Streaming Protocol, RTSP)等协议来支持实时流媒体的传输[2-3]。在实时流媒体图像数据从传输到呈现的流程主要由4部分组成:数据通信、解包、解码和呈现。
1)数据通信。数据通信主要工作是完成RTP包从服务端到显示端的传输。传输RTP包可以有TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)两种传输方式,而大多数实时流媒体使用UDP传输,所以低带宽下将不可避免地出现数据抖动(丢包、重传、顺序颠倒)。这就导致了数据的顺序性和完整性缺失。
2)解包。解包的主要工作是解析RTP包,得到RTP包中的原始媒体数据[4]。每一个数据包都将被解析并组合,输出相应的媒体原始数据。对于数据包抖动问题,此过程中将会丢弃过时数据包,以保留图像数据的流畅性以及实时性。
3)解码。解码的主要工作是使用特定的标准或格式将压缩的图像数据还原成相应的完整图像数据。本文主要分析的是H.264标准。在低带宽下,原始数据采集可能会有不同程度的缺失,这将导致图像数据不完整问题;在解码时,不完整数据无法还原成完整的图像数据,所以会导致帧图像不完整。
4)呈现。当解码完成之后,完整图像数据会进行后处理以优化图像数据,例如消除块效应等,最后进行呈现。此过程中,虽然后处理可以优化图像数据,但也无法解决因图像缺失而导致的图像质量低下问题,在低带宽下尤其明显。
1.2 图像帧缺失对画面的影响
在视频压缩中,每一个图像帧是代表了一幅静止的图像。而在实时流媒体中,为了尽可能减少网络传输带宽,原始数据会通过各类算法被尽可能地压缩。在H.264中也是如此,H.264中的图像帧主要分为两种:关键帧与非关键帧[5-6]。
定义1 关键帧与非关键帧。关键帧即为I帧,是一帧画面的完整保留,而非关键帧即为非I帧。在解码时,本帧数据就可解出完整画面[7]。I帧是有固定的传送时间,且一个关键帧属于一个GOP单元,单元内所有非关键帧都要依赖I帧压缩数据,所以关键帧的完整性将直接影响图像质量。如果关键帧缺失,会导致在GOP时间内图像必然会有很大程度的下降;如果关键帧完整,则在GOP时间内大部分视频图像稳定[8-10]。可以看出,关键帧的缺失会直接影响视频效果。
2 GOP单元时序控制算法
2.1 关键帧预处理机制
引入关键帧的预处理将会直接改善视频上述问题。而这个预处理主要的处理逻辑就是如何利用花屏与卡屏的平衡进行丢帧才能得到最理想的播放效果。
定义2 花屏与卡屏。花屏与卡屏指的是在实时流媒体视频播放中两种常见的显示故障。
当帧图像不完整时,图像会有出现常色不同的条纹、斑点,或位置颠倒、错乱和扭曲等情况,为花屏[11-12];而前一图像和下一图像间有短时间卡顿致使播放不连贯,为卡屏。而花屏与卡屏之间可以通过丢弃不完整帧进行转换。当遇到关键帧缺失时,如果将此关键帧所属的一个GOP单元内的所有帧丢弃,那么此花屏部分将被屏蔽,呈现时将不会看到花屏,但由此操作之后,这个GOP单元所在时间内将不会有新画面呈现,卡屏问题就会显现。所以,如果能在花屏与卡屏之间找到平衡,使在保持视频流畅度的基础上尽量丢弃花屏帧,那么视频播放将会达到理想的效果。
定义3 花屏与卡屏的平衡。花屏与卡屏的平衡指的是一种稳定状态,使在低带宽下根据用户对视频的体验程度对花屏和卡屏作相应控制,使流媒体视频播放尽量保持流畅度,尽量丢弃花屏帧,到达一个理想的效果。
换句话说,产生花屏问题的是图像帧的完整度不高,而产生卡屏问题的是连续性不高。由此,如果将完整度和连续度使用算法和逻辑进行平衡,找到这样的稳定状态,那么就可以优化出最好的播放效果。要达到这样的平衡关系,则需要引入两种平衡,分别是GOP单元组平衡和GOP连续性平衡。
1)GOP单元组平衡。GOP单元组平衡指在一组GOP单元内,通过权衡该组的连续性和完整度,使其视频效果达到最优的一种稳定状态。
在低带宽下,关键帧将会出现不同程度的缺失,那么缺失程度也将影响一个GOP图像质量。在一组GOP内,如果花屏效果不明显,卡屏效果明显,如若将接下来的GOP进行保留提高播放流畅性,但如果花屏效果明显,卡屏效果不明显,如若丢弃接下来的GOP将会提高播放的质量。
2)GOP连续性平衡。GOP连续性平衡指在一个播放时间段内,通过对所有已播放帧的缺失度权衡,在全局上达到最优的一种稳定状态。
在视频播放一段时间之后,播放器可以统计此段时间的播放质量和播放的流畅性。这有助于对整个播放过程进行全局的把控。当预知整个播放质量不高时,怎可以调整预处理的丢帧量,从而达到较好的播放效果。
怎样运用GOP单元组平衡与GOP连续性平衡来达到花屏和卡屏的平衡,进而达到最好的播放效果,是GOP单元时序控制算法需要完成的任务。
2.2 单元时序控制算法的相关变量
1)GOP标记单元。一个GOP标记单元主要标识本GOP单元是否可以进行播放呈现。GOP标记单结构中主要有标记参数:单元有效性标记。当GOP标记单元被标记为有效时,则本GOP的关键帧和非关键帧都会进行播放呈现;反之则全部丢弃。
2)标记单元时序队列。队列主要对标记单元组进行时序控制和有效性控制。队列结构中主要包含以下参数:GOP标记单元队列、队列容量、无效单元数。其中:队列有一个最大容量,即队列中所容纳的固定数量的GOP。
3)播放区间。播放区间主要工作是记录一段时间内的各种帧计数和其缺失度累计和,而后其他参数主要参与丢帧算法的运算。
4)缺失度(Deficiency, D)。缺失度是一帧中帧信号缺失数量与帧信号完整数量之比。缺失度表示帧的完整程度。当在低带宽下时,图像缺失就比较明显,则缺失度较高。
5)卡顿度(Frameskip, F)。卡顿度指在一个GOP单元组内,无效单元数与队列容量之比。卡顿度表示该时间段内图像呈现的流畅程度。当在低带宽下,丢帧明显,则卡顿度较高。
6)丢帧度(Discarding Defective Frames, DDF)。丢帧度衡量当前帧是否需要丢弃。给定3个权值,分别是:缺失度权值(P1)、卡顿度权值(P2)和连续性权值(P3)。其中缺失度权值是反映关键帧缺失度的比重,卡顿度权值是反映一组GOP卡顿指标的比重,连续性权值是反映在一个播放区间帧平均缺失度指标的比重。若设一个播放区间内的一已播放关键帧的缺失度为KDi,共M个;一个已播放非关键帧缺失度为NKDj,共N个,i, j=1,2,…,则丢帧度计算可用式(1)表示:
DDF=D*P1+F*P2+∑Mi=1KDi+∑Nj=1NKDjM+N*P3(1
7)相关阈值。该算法中主要考虑3个阈值,分别为关键帧缺失度阈值、卡顿度阈值和丢帧阈值。其中,关键帧缺失度阈值是关键帧的缺失度上限值。在一个GOP中,如果关键帧缺失度超过缺失度阈值,则认为此GOP存在较大的缺失度。卡顿度阈值即是GOP间的卡顿上限值,即在一组GOP内,如果丢弃数量达到卡顿度阈值上限,则认为此视频播放有较大卡顿。丢帧阈值即是丢弃GOP的可行性上限。如果当计算值超过此上限值,则视为可丢弃帧,可以进行丢弃。在算法中,缺失度、卡顿度、丢帧度权值的确定决定了流媒体视频播放的侧重程度。当带宽越低,丢帧计算量越大,则权值的影响效果越明显。如果缺失度权值大于其他两个权值,则卡屏几率就会增加,但图像质量也会有所提高;如果卡顿度权值大于其他两个权值,那么虽然图像质量会下降,但保证了流畅度;当连续性权值大于其他两个权值,那么播放质量将从整体缺失度出发,再决定是否丢帧。
2.3 GOP单元时序控制算法
当播放器每次解码完一个图像帧之后,就将进行关键帧预处理。其算法核心就是基于花屏与卡屏的平衡来判断当前帧是否允许放行播放。GOP单元时序控制算法如下所示。
3 关键帧预处理实验
3.1 实验环境
实验平台采用Intel Core i53230M 2.6GHz处理器、4GB内存、320GB SATA硬盘,操作系统为Windows 7,所有算法采用C++语言实现,并在VS(Visual Studio)环境下编译。
本次实验将选取处于低带宽环境下的流媒体源作为实验室对象,分别使用3种不同类型的播放处理(原始播放、后处理播放、关键帧预处理播放)连续播放30min。原始图像播放不对实时流媒体作任何处理,仅仅是通过数据通信、解包、解码、呈现的步骤直接播出实时流;后处理播放会通过后处理来优化图像效果并播放;关键帧预处理播放会在后处理优化的步骤之前加入GOP单元时序控制预处理,然后再进行播放。
实验针对同一实时流媒体源采用3种播放方法同时进行播放,整理出3种播放方法的平均CPU使用率、平均内存使用情况、预处理丢帧情况以及3组播放图像质量效果。
3.2 实验结果
通过以上实验,3种播放器的平均CPU使用和平均内存使用情况率如图1~2所示。
3.3 实验分析
通过对实验,原始播放、后处理播放、关键帧预处理播放3种播放方式的平均CPU使用率和平均内存使用情况进行对比,可以得出在同等时间内,3种播放方式的平均CPU使用率分别约为1%~2%、5%、3%,其平均内存使用情况分别约为6MB、9~10MB、6~6.5MB。关键预处理播放器的平均CPU使用率比直接进行后处理的播放器降低了2%左右,平均内存使用降低了3MB左右。
对关键帧预处理播放器播放统计发现,随着GOP数量的增加,问题关键帧和问题非关键帧量成倍增加,通过预处理算法,在预处理中丢帧量约为总问题帧量的64%,这大大减轻了后处理播放中对问题帧的处理压力,与后处理播放方式相比,其计算复杂度降低了40%以上。
通过以上图像对比结果可知原始播放器与后处理播放器的效果相近,当遇到低带宽的情况时,花屏严重。关键帧预处理播放器可明显感觉到图像质量有很大的提升,最差质量的对比效果尤为突出。对3种播放方式在相同时间内的图像质量进行统计分析发现,关键帧预处理播放器大部分图像质量都位于中等,大大超过了其他两者;而且最差质量的概率也远远低于两者。
关键帧预处理播放器通过关键帧预处理算法,对问题关键帧和问题非关键帧进行过滤,合理丢帧,在花屏与卡屏之间进行有效的平衡控制,降低后处理计算的时空压力,降低对流媒体播放的CPU、内存等关键硬件设备的性能要求;同时提高视频播放流畅性,保证在低带宽下达到最优的视频观看效果。
4 结语
本文主要针对实时流媒体在低宽带下的图像质量低下问题,通过分析数据缺失原因,创新地提出了H.264关键帧预处理机制,并引入花屏与卡屏的平衡概念,通过GOP单元时序控制算法,在保持视频流畅度的前提下尽量丢弃花屏帧,使播放质量得以最大幅度的优化。该算法极大降低了后处理时空成本和对硬件性能的要求,保证了在低带宽下达到最优的视频观看效果。
在提高播放端播放质量的基础上,后续工作中还需要对流媒体的采集端进行更深入的质量控制。基于带宽流量,采集端可采用初始化分辨率自降机制来优化在此网络环境中的传输数据的大小;同时,采集端对码率以及帧率的调整同样可以优化流媒体播放质量。这有待于进一步改进和更高效可行的播放质量控制方法的探索。
参考文献:
[1]
尹超超,龙昭华,谢显中.H.264实时视频通信终端的研究与实现[J].电视技术,2011,35(3):53-56.(YI C C, LONG S H, XIE X Z. Research and implementation of realtime video communication terminal based on H.264 [J]. Video engineering, 2011, 35(3): 53-56.)
[2]
AHMAD I, WEI X, SUN Y, et al. Video transcoding: an overview of various techniques and research issues [J]. IEEE transactions on multimedia, 2005, 7(5): 793-804.
[3]
宋彬,周宁兆,常义林,等.H.264帧内预测快速算法[J].西安电子科技大学学报,2006,31(8):32-34.(SONG L, ZHOU N Z, CHANG Y L, et al. A fast intraprediction algorithm in H.264 frame [J]. Journal of Xidian university, 2006, 33(1): 15-18.)
[4]
周敬利,金毅,余胜生,等.基于H.264视频编码技术的研究[J].华中科技大学学报(自然科学版),2003,31(8):32-34.(ZHOU J L, JIN Y, YU S S, et al. Research of video coding technology based on H.264 [J]. Journal of Huazhong university of science and technology (nature science edition), 2003, 33(1): 32-34.)
[5]
WIEGAND T, SULLIVAN G J, BJONTEGAARD G, et al. Overview of the H.264/AVC video coding standard [J]. IEEE transactions on circuits and systems for video technology, 2003, 13(7): 560-576.
[6]
SULLIVAN G J, TOPIWALA P N, LUTHRA A. The H.264/AVC advanced video coding standard: overview and introduction to the fidelity range extensions [C]// SPIE Applications of Digital Image Processing XXVII. Bellingham, WA: SPIE, 2004: 454-474.
[7]
VETRO A, CHRISTOPOULOS C, SUN H. Video transcoding architectures and techniques: an overview [J]. IEEE signal processing magazine, 2003, 20(2): 18-29.
[8]
魏聪颖,牛建伟,吉海星,等.基于实时流媒体传输系统的H.264组包算法研究[J].计算机科学,2007,34(8):41-44.(WEI C Y, NIU J W, JI H X, et al. H.264 packetization algorithm research based on realtime stream media transportation system [J]. Computer science, 2007, 34(8): 41-44.)
[9]
SUN H, ZHENG S, YANG H. Field coherence based error concealment method for H.264 frame loss [J]. Video engineering, 2011, 35(21): 12-15.
下一篇:浅谈输煤程控系统的选择