APP下载

新的可快速切入的H.264/AVC视频编码方法

2013-08-13曾嘉亮钟似玢

电视技术 2013年5期
关键词:码流视频流编码器

曾嘉亮,钟似玢

(1.汕头职业技术学院机电工程系,广东 汕头 515078;2.中山大学计算机应用研究所,广东 广州 510006)

在视频直播、视频会议等多终端应用中,将新加入的观众从发出切入请求,到真正开始收看视频的时间间隔,称为切入时间。

在传统的H.264/AVC[1]多终端视频系统中,最长切入时间是由图像组(Group Of Pictures,GOP)的长度决定的。GOP越长,切入时间被延长的概率就增大;而长时间等待势必严重影响用户体验。一个简单的解决方法为缩短GOP的长度。这样做可以解决切入时间过长的问题,但与此同时也导致了压缩效率下降的负面效果。

经过进一步研究发现一个较好的解决方案:利用H.264/AVC 标准所提供的多参考帧机制[1-4],在编码时令特定的 P 帧(Predictively coded picture[2])成为长期参考帧,并对编码服务器进行相应设置,既能解决切入时间过长的问题,又降低了对压缩效率的影响。

1 传统视频系统切入等待的问题及其简易解决方法

在多终端视频系统中,由于新加入的观众必须在得到一个I(Intra)帧之后,才能正常收看视频,而通常一个GOP只有第一帧是I帧,因此,传统编码方案中,最长切入时间由GOP的长度决定。另一方面,为提高编码效率,编码器一般会将GOP的长度设置尽可能大,这就增加了切入时间延长的概率。可见,在传统视频系统中,切入时间和编码效率是一对矛盾。

1.1 传统的多客户端视频系统的切入等待问题

1.1.1 服务器编码发送码流S

假设服务器端编码和发送的视频流GOP长度为100帧,整个视频共200帧,则服务器需要发送的码流记为S,如图1所示。

图1 码流S

图1中,字母I,P表示各帧的编码类型,下标的数字表示各帧在视频流中的编码和显示顺序。I0~P99表示同一GOP中连续的100帧图像,各帧上方带箭头的线段表示各帧间的参考关系。其中,I0的编码预测模式为帧内模式,对它解码不需参考其他帧;P1~P99的预测模式为帧间模式,因此每个P帧都被一个箭头所指,箭头的源端即该P帧的参考帧。

在码流S中,各个P帧的默认参考帧都是其前面的一帧。这也是传统H.264/AVC编码器的典型编码方案。

1.1.2 新观众

新观众是指当编码服务器已经处于编、发码流S的状态时,才向服务器请求接收视频流的客户端。

由于P帧的解码必须依赖于本GOP的I帧,因此,在传统的系统中,无论新观众何时发出切入视频流的请求,都必须等候S的下一个GOP的I帧到达,才能正确地解码和显示视频流的后继内容。

将新观众从服务器接收的、能正确解码的视频流记为码流N。显然,N是S的一个子集。由于新观众可能随时发出切入视频流的请求,因此不同的新观众收到N的情况千差万别。假设某个新观众在图1所示码流S的P3处发出切入视频流的请求。由于已经错过了第一个GOP的I帧(I0)的广播,因此该观众所得到的码流N如图2所示。

图2 码流N

假设图1、图2对应的应用中帧率为10 f/s(帧/s),则新观众从发出切入请求,到正常收看视频,需等待将近10 s。

可见,在传统的视频系统中,从概率上讲,新观众的等候时间与GOP的长度有关——GOP越长,新观众等候的时间可能也越长。

1.2 切入等待问题的简易解决方法

1.2.1 方法概述

针对1.1节所述问题,一个简单的解决方法是缩短GOP的长度。即在编码帧数相同的情况下,增加输出码流中I帧的数目。

例如,对于1.1节所述情况,采用此方法解决切入等待问题的一种方案如图3所示。

图3 码流S′

图3中,码流S’的GOP长度缩短为20。若沿用1.1.2的假设:新观众在码流S’的P3处发出切入视频流的请求。由于S’每隔20帧就有一个I帧,因此该观众得到的码流N’如图4所示。

图4 码流N′

同1.1.2,设图3、图4 对应的应用帧率为10 f/s,则新观众从发出切入请求,到正常收看视频,最多只需等待2 s,最长等待时间缩短为图1、图2所示情况的20%。换言之,切入速度提高了5倍。可见,这种方法简单易行,并且对于缩短切入时间效果显著。

1.2.2 简易方法的缺点

上述简易方法虽然可以有效缩短切入时间,但同时也存在着编码效率降低的硬伤。下面通过一个对比实验来说明这一缺点。

该实验采用开源编码器对3个测试视频分别采用前文所述的2种方法进行编码,为便于表述,下文将1.1节所述方法记为T1,1.2节所述方法记为T2。

实验中,T1和T2的共同设置如下:

1)3 个编码对象均为 CIF[3](Common Intermediate Format)格式、200 帧;

2)帧率均为10 f/s;

3)输出目标码率均设为100 kbit/s;

T1和T2的编码设置只有一点不同,即T1的GOP长度是100,而 T2是20。

实验结果记见表1。

表1 T1,T2对比实验数据表

表1 中,Y -PSNR[3](Peak Signal to Noise Ratio)是压缩图像亮度分量的峰值信噪比。3组压缩结果的YPSNR相差不超过1.36%,说明2种方法压缩结果的图像质量基本相同。较之T1,T2虽将切入时间缩短了80%,但其压缩码流最多比T1增大了9.62%,即T2的压缩效率明显低于T1。

根据H.264/AVC的技术原理,同样的一帧图像,将其编为I帧的输出码流将远远大于编为P帧。可见,导致T2编码效率明显低于T1的根本原因是——I帧过于频密。因此,要解决T2编码效率低下的问题,关键在于降低I帧的密度。这正是本文提交的方法所解决的问题。

2 一种新的可快速切入的H.264/AVC视频编码方法

如前文所述,T2已经解决了切入等待的问题,其缺陷在于编码效率低,根源则是I帧过于密集。

研究发现,利用H.264/AVC标准所提供的多参考帧和内存管理控制操作机制,辅以编码服务器端的相应设置,就可以用一种特殊的P帧代替T2中的多数I帧,从而既解决了切入等待问题,又保证了编码效率。

2.1 相关术语

2.1.1 多参考帧

H.264/AVC的多参考帧机制,允许待编码图像在进行帧间预测时参考多个之前已编码的图像。该机制将参考帧分为长期参考和短期参考两类:长期参考帧可用于预测其后相隔多帧的图像,需要一直驻留在参考帧队列;短期参考帧最多只能对其后面的5帧进行预测[5],因此在参考帧队列中停留的时间极短。

对于只含I,P帧的码流,编码时只需要一个参考帧队列 list0[3]。

引入多参考帧机制的本意是提高压缩效率。但在本文提交的方法中,这一机制被创新性地应用,其作用变为将新观众切入视频流时所必需的最近的一帧保留在参考帧队列中,以实现快速切入。

2.1.2 内存管理控制操作

内存管理控制操作(Memory Management Control Operation,MMCO)是H.264/AVC提供的一组命令集,编码器通过该命令集来指示解码器对参考帧队列进行相应操作。

2.2 新方法的编码思路和步骤

2.2.1 编码思路

针对T2编码效率低的问题根源,新方法的主要思路是:将T2中为了减少切入时间而插入的I帧,全部用指定为长期参考帧的P帧来取代。

按照这一思路,图3所示的码流可以用新方法重新编码为图5所示码流S″。

图5 码流S″

对比图3和图5,很容易看出两种方法的关键区别:

1)T2为减少切入时间而增加的 I20,I40,…,I180等 I帧,在新方法中被P20,P40,…,P180等P帧所取代。

2)在图5 中,I0,P20,P40,…,P180被指定为长期参考帧。例如,图5中I0和P20下方带箭头的长线,表明I0为P20的参考帧。这些长期参考帧的作用是帮助新观众快速切入视频流,因此下文将其称为切入帧。

2.2.2 编码端实施步骤

图6、图7分别说明了利用新方法实现图5所示码流S″的过程中,编码器对参考帧列表list0的控制过程,以及编码服务器的输出缓冲区数据的变化情况。

下面结合图6和图7,给出新编码方案实现码流S″的具体步骤[3-5]:

1)编码前,设置参考帧数目为2。

2)编码I0时,使用MMCO指令通知解码器:I0为长期参考帧,如图6中(a)所示;并将I0的压缩码流存入编码服务器的输出缓冲区,如图7中(a)所示。

3)编完P1后,通过MMCO指定其为短期参考帧,推入参考帧队列list0的位置[0]处,并将I0推入list0的位置[1]处,如图6中(b)所示;同时将P1存入编码服务器的输出缓冲区,如图7中(a)所示。

对P2~P19,编码器重复P1的步骤,如图6中(c)所示:新的短期参考帧覆盖先前位于list0[0]处的短期参考帧,并保持I0的位置list0[1]不动。不过,P2~P19无须放入编码服务器的输出缓冲区。

4)编码P20时,指定其参考I0,并设置P20为长期参考帧,P20编码完成后,便覆盖掉I0,存入list0的位置[1],如图6中(d)和(e)所示;此外,P20也需要存入编码服务器的输出缓冲区,如图7中(a)所示。

5)对于P21~P39帧,编码器重复执行步骤3),如图6中(f)所示。

其余步骤可按上述5步进行类推后得出。

2.2.3 解码端的切入步骤

仍然用1.1.2节的假设进行举例说明:新观众在码流S″的P3处发出切入视频流的请求。

编码服务器收到切入请求,就将输出缓冲区中的I0和P1发送给新观众,等待下一个切入帧P20到达后,就将压缩码流源源不断地送出,该观众得到的码流N″如图8所示。

图8 码流N″

图9说明解码器如何根据MMCO指令来管理参考帧队列,正确、快速地进行切入。

图9 新观众的解码器对参考帧队列list0的控制

由上述过程不难理解,图7将非切入帧P1缓存起来发送给新观众的目的是让解码器利用P1将I0推入list0[1]位置。

至此,新方法实现了对任意时刻新观众切入请求的快速响应。

3 实验结果

为便于表述,将第2节所述新方法记为PP。对开源编码器按照第2节所述内容进行相应修改,实现PP的编码程序。PP编码器生成的码流N″,可以直接用开源解码器进行正确解码。本实验以1.2.2所述实验为基础。

T1,T2和PP的共同设置是:

1)3个编码对象均为CIF格式、200帧;

2)帧率均为10帧/秒;

3)输出目标码率均设为100 kbit/s。

T1,T2和PP三者的不同设置是:

1)T1的GOP长度是100;

2)T2的GOP长度是20;

3)PP的GOP长度是100,而切入帧的间隔是20。

实验结果记见表2。

由图2、图4、图9可知,T2和PP的切入速度都是T1的5倍。

由表2可知:1)图像质量方面:由Y-PSNR数据可知三种方法的图像质量基本相同;2)码流大小方面,PP输出的码流比T1不但没有增加,甚至还减小了,而T2的码流比T1最多增大了9.62%。

综上所述,新方法是在保持与T1相同的压缩效率的情况下,将切入速度提高为T1的5倍。

4 结论

本文提出一种新的可快速切入H.264/AVC视频的编码方法,该方法通过H.264/AVC标准所提供的多参考帧和内存管理控制操作等机制得以实现。

表2 PP,T1和T2对比数据表

理论分析及实验结果表明:现有的H.264/AVC解码器,不须任何修改,就可直接解码由新方法生成的码流;并且新方法在压缩效率不变的情况下可将切入速度提高5倍以上。

本方法还允许更为深入的灵活设置。例如,切入帧的间隔可以不固定,任何新观众发出切入请求时,就将当时的待编码帧指定为切入帧,这就允许视频编码服务器即时响应新观众的请求,使得切入时间趋近于0。

可见,本文所提交的方法以极低的代价实现了视频编码服务器对用户需求的快速响应能力。

[1]Joint Draft ITU-T Rec.H.264 ISO/IEC 14496-10/Amd.3 scalable video coding[EB/OL].[2012-07-14].http://ip.hhi.de/imagecom_G1/savce/downloads/H.264-MPEG4-AVC-Version8-FinalDraft.pdf.

[2]WIEGAND T,SULLIVAN G J,BJONTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(7):560-576.

[3]RICHARDSON I E G.H.264 and MPEG-4 video compression[EB/OL].[2012-07-14].http://ishare.iask.sina.com.cn/f/9982600.html.

[4]RICHARDSON I E G.H.264_MPEG-4 Part 10 white paper[EB/OL].[2012-07-14].http://www.vcodex.com.

[5]钟似玢,曾嘉亮.一种视频压缩方法:中国,200810216851.4[P].2008-10-15.

猜你喜欢

码流视频流编码器
融合CNN和Transformer编码器的变声语音鉴别与还原
边缘实时视频流分析系统配置动态调整算法研究
数字电视TS码流协议简要分析
基于视频流传输中的拥塞控制研究
高清网络摄像机图像延迟分析及解决方案
基于FPGA的同步机轴角编码器
铁路货场智能大门集装箱全景图像采集方法研究
应用旋转磁场编码器实现角度测量
美国视频流市场首现饱和征兆
基于数字信号处理的脉冲编码器