移动平台上基于H.264的实时音视频压缩文献综述

 2022-10-27 10:28:45

文献综述(或调研报告):

视频直播及视频监控是当今互联网通信迅猛发展下日益成熟并且越来越深入人心的产品。随着第四代移动通信的发展以及移动平台的不断智能化与功能全面化,视频直播以及视频监控也从复杂的计算机设备移植到移动平台。在移动平台中,Android作为基于Java的嵌入式操作系统,运行在Linux内核之上,系统小巧而且拥有全特征,同时因为其开源的特点赢得了大多数的移动平台占比。

语音通讯、视频直播和点播系统是Android平台提供的重要功能,这些功能的实现都涉及到流媒体的采集与编解码以及音视频的推流取流,其中,流媒体数据的编解码是实现上述功能的基础。

我们采取H.264作为流媒体编解码方式。与以往的视频编码标准相比,H.264使用了更加精细的分像素运动矢量、和新一代的环路滤波器,并且创造了多参考帧和帧内预测等新的压缩技术[1],所以其压缩性能得到了很大提高,同时系统也变得更加的完善。实现在Android平台上的H.264编码的方式有两种:软编码和硬编码。

所谓软编码即应用ffmpeg x264的开源代码,用android-ndk进行编译后,对android返回的YUV12数据进行编码,是利用CPU进行编码的一种方式。这种编码方式的视频编码模块采取了最全面的FFmpeg视频编码[2],大大提高了系统编码的灵活性,但由于Android系统和FFmpeg的编程语言不同,编码的实现需要通过JNI调用技术来实现,这种编码方式也存在一定的复杂性。

相较于主要依靠CPU的软编码,硬编码将大部分的编码工作交给GPU来成。早期硬编码主要通过MediaRecoder类下的音频采集子类,视频采集子类来完成采集编码的工作[3],如今在Android不断发展的今天,MediaCodec担任起了硬编码的主要工作。我们知道Android平台从Android4.1 版本开始提供MediaCodec类接口来支持H.264/AVC 编码。这种新接口在逐渐发展中得到越来越多的使用,虽然有可能面临一些编码上的问题,比如MediaCodec指定颜色编码格式不匹配时,将导致程序运行终止,但在指定终端上,我们可以采取扫描匹配颜色格式,再将MediaCodec的编码的颜色格式设置成该格式[4],通过这种方法来修正编码。

尽管我们采取的软编码或者硬编码都是基于H.264的编码方式,但并不代表H.264的编码方式没有需要改进的地方。正如我们所了解到的,H.264具有更好的压缩性能以及面向网络传输的“友好性”,但随之而来的是运算复杂度的大幅度增加。我们可以通过改进运动估计算法[5],优化帧内预测模式选择[6]的方法改进H.264编码。

我们同时可以采取主动跳帧的方法提升视频压缩比,降低传输码率。主动跳帧策略,即在缓存区并未达到空间上限的80%时[7],为了保留一些信息量较高,相对重要的图像,而主动跳过一些跟上一帧图像相关度较高,相对来说并不十分重要的图像。通过主动跳帧,可以有效的降低缓存区充盈度。这时主动跳帧判断策略就显得尤为重要。比如我们知道B帧(双向预测的帧间压缩算法),相比I帧,P帧,压缩率最高,所以当B帧流量比网络可处理的要大时,我们需要利用主动跳帧来减少带宽需求并平滑编码视频流。这里我们可以利用一个新的马尔可夫模型[8]来预测B帧的大小来判断是否跳帧。

一般的主动跳帧将缓冲区占有率和图像复杂度作为判断跳帧的依据。然而,图像复杂度虽然可以反映序列的运动剧烈程度,但不能完全刻画相邻帧的时域相关性,从而影响视频编码质量。针对这一问题,周全等人首先用相对复杂度代替复杂度,从而更好地反映当前帧与前面帧的时域联系[9],然后提出比特因子的概念,从缓冲区、相对复杂度、比特因子三方面综合给出跳帧条件。这样可以在降低码率提高压缩比的同时平滑视频并且减少连续跳帧。

这些改进算法是我们可以在进行设计时进行思考的,虽然可能实现不了这些优化,但对于我们理解h.264编码也是大有裨益的。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。