基于帧率逐级自适应的视频编码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于帧率逐级自适应的视频编码
【摘要】传统帧率控制算法当场景持续的大运动量变化时,会有帧率波动过大、忽快忽慢的不连贯性而造成的闪烁感。为了解决这个问题,我们设计了基于帧率逐级自适应的算法,通过采用逐级自适应地调整目标帧率,以降低跳帧控制中的一次性跳帧数目,来达到帧率平稳以及图像质量提高的目的。
【关键词】码率;帧率;自适应;场景变换检测
1.引言
在多媒体通信系统中,以下因素直接影响视频图像质量。
1.1视频编码器的过高的输出码率会导致网络拥塞、丢包,而造成图像质量急剧下降;而过低的输出码率,也会导致图像质量下降和对网络资源的浪费。
1.2帧率的波动大小,也会直接影响到对图像效果的主观感受。如图1所示,横坐标为时间(单位:秒),纵坐标为帧率(单位:fps),最大帧率和最小帧率变化剧烈,如此连贯性不一致的现象会造成图像中运动的人或物体跳动和闪烁的主观感受。
因此,为了最终获得质量较高的视频图像,不仅要使编码器的输出码率尽可能的有效利用网络带宽资源,还要考虑输出图像帧率的波动大小。
图1 一般帧率变化曲线
目前现有的控制帧率波动的算法是,通过对场景变换的检测,实现图像在场景变换较小的时候进行跳帧,以便给场景变换较大时,分配较多比特进行编码,保证图像质量和连贯性。如下图所示:
图 2 本发明相关方案原理图
这种算法的缺点是。
1.2.1当场景持续的大运动量变化时,虽然存在某一瞬时的场景变化较小,但是由于时间过短,而没有可用来跳过的帧数,最终导致该算法会失效。
1.2.2实际网络的状况会存在可用网络带宽资源不恒定的情况,而该方案没有考虑网络自适应性能。
为了克服帧率波动过大、忽快忽慢的不连贯性而造成的闪烁感,我们设计了基于帧率逐级自适应的算法,这种算法同时兼顾了网络带宽自适应。
2.基于帧率逐级自适应的算法介绍
基于帧率逐级自适应的算法在码率适应于网络的基础上,通过采用逐级自适应地调整目标帧率,以降低跳帧控制中的一次性跳帧数目,来达到帧率平稳以及图像质量提高的目的。算法系统框架,如下图所示。
图3 编码器系统框架图
S301:预测当前网络可用带宽资源。
S302:编码器根据可用带宽、帧率调整情况,对码率控制参数进行初始化,包括目标帧率、目标码率,及每帧的目标帧长等。
S303:根据图像复杂程度的变化情况,预测图像将要跳帧的数目。这里可根据编码器输出视频码流的大小计算跳帧数目。
S304:根据当前可用网络带宽资源以及跳帧的数目获得需要调整帧率的级数,在这里帧率被分为若干级,便于逐级调整;根据需要调整的帧率级数获取需要更新的目标帧率。在网络状况较差,逐级降低编码器的目标帧率,这样相当于把一次的大的跳帧数均匀的分配到一段时间,以获取帧率的平稳,并且分配给每帧图像的目标码率增多,而提高了图像质量。
在网络状况良好时,不仅可以进行逐步提高码率,而且对帧率进行逐级向上调整。这样,帧率变化就不会像图1所示波动过大,相反,在场景持续地、大运动量变换地情况下,经过帧率自适应,就可以达到如下效果。
2.1图像帧率变换平稳,并且可以看出在逐级提高或者逐级下降。
2.2从主观效果上看,忽快忽慢以及闪烁的现象改善了,并且图像质量有所提高。
S305:把更新的目标帧率反馈给编码器的码率控制参数。
假设初始目标码率为1Mbps,初始帧率为25帧/s,则初始目标帧长为40Kbits。假设某一秒的第一帧图像比较复杂需要用200Kbits,为了使实际输出码率不超过1Mbps,需要跳4帧,即第7、8、9、10帧被挑过。而基于帧率逐级自适应算法,由于第一帧图像需要用200Kbits,则将目标帧率下调至20帧/s,则此时的目标帧长为50Kbits,为了不使输出码率超过1Mbps,要跳三帧,即第2、3、4帧被跳过,对第5帧进行编码。如果第5证也比较复杂需要用200Kbits,则需要在跳三帧,即第6、7、8帧被跳过。通过比较可以看出,传统算法需要一词跳4帧,而根据就基于帧率逐级自适应算法,一次跳帧会减少至3帧,以一次大的跳帧数被分配到一段时间内进行多次跳帧。
根据传统算法,如果2秒内跳10帧,这10帧均在第一秒内连续被挑过,而
第二秒没有跳帧,则第1秒和第2秒的帧率差别会很大;而基于帧率逐级自适应的算法,一次大的跳帧数被分配到一段时间内进行多次跳帧,结果是第1秒内跳6帧,第2秒内跳帧,则第1秒和第2秒的帧率差别不会太大。这显然可以减轻图像中运动的人或物体跳动和闪烁的主观感受。
3.帧率自适应模块实现方法
图4为帧率自适应模块原理图。
图4 帧率自适应原理图
S401:可用网络带宽和编码器内部码率控制跳帧数作为帧率自适应模块的输入。
S402:利用S401的输入,对编码器码率控制参数(目标帧率、目标码率)进行更新。图2所示的方案的目标帧率在一次通信过程中是固定的,跳帧数只用来决定哪些帧是否需要编码,对目标帧率无影响。而基于帧率逐级自适应算法中根据跳帧数对目标帧率作出调整,设定三个阈值,以判断和计算是否需要调整当前目标帧率。
S403:连续若干次判断跳帧数是否均大于第一个设定值,如果符合就下调帧率一级。
S404:连续若干次判断跳帧数是否均小于第二个设定值,如果符合就上调帧率一级。
S405:连续若干次判断跳帧数是否均小于第三个设定值,如果符合就保持当前帧率
S406:输出根据上述帧率级数计算得到的目标帧率。
4.结束语
图5是采用了帧率逐级自适应算法后的帧率变化曲线。从下图可以看出,这种算法使视频编码器在基于网络带宽自适应的基础上,图像帧率平稳,图像清晰度提高,连贯性增强。
图5 帧率自适应效果■
【参考文献】
[1]吴坚等.一种视频编码方法和视频编码器.CN200810247551_2.2008.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文