3G网络和智能手机的迅速普及推动了移动互联网的发展,为安防网络从局域网扩展到移动互联网提供了条件。通过对移动互联网的上行带宽和下行带宽的实测可以知,512 Kbps是一个有效而且可靠的带宽值,如果能够在这个带宽值限制条件下实现高清视频的传输,必将可以推动移动监控应用的普及。本文介绍了FPGA在实现高清低码流视频编码中的作用以及如何具体实现。
概述
安防摄像机的分辨率和码流是正关联的,进入高清时代后,码流就在2Mbps以上,比以前D1时代要高3倍以上,这么大的码流在100M/1000M的局部网络传输是没有任何问题的,硬盘存储的代价也可以接受;但是如果想在互连网和3G网络上传输高清视频,低码流的要求就凸现出来了。
首先是高清视频上传到互联网的问题,目前最普及最便宜的上传技术是ADSL,上传速度为512Kbps,用3G也能上传,CDMA2000的上传速度为1.8 Mbps,由于无线传输的理论峰值和实际连续平均值有相当的差距,所以可以估算在几百Kbps之内;其次是高清视频从互联网下载到显示终端的问题,ADSL的下载速度一般可以在4 Mbps以上,在家里用3G从网上下载1个几十MB的文件,TD-SCDMA的下载速度大约为430Kbps,CDMA2000的下载速度大约为720Kbps,WCDMA的下载速度大约为1120Kbps。
综上所述,高清视频如果想方便而又经济地在互联网和3G网络得到应用,512Kbps的平均码流是合适的。高清视频在互联网和3G网络的应用中还有一个问题,就是网络实时带宽的波动比较大, 在这种环境下传输的视频其平均码流越低,视频的质量就越有保证。
目前现状是高清视频720p的码流一般在2Mbps以上,1080p的码流在4Mbps以上,要大幅度降低码流,需要从几个方面考虑。
H.264编码器与FPGA
视频压缩编码是最有效降低码流的方法,目前H.264是编码器的首选标准。H.264编码算法很复杂,采用了很多方法来降低编码码流。一般来说,视频由连续的帧组成,编码后的帧主要有I帧、P帧和B帧。I帧的编码不依赖其他帧,只利用帧内的像素进行各种预测来降低编码码流;P帧利用当前帧和以前的帧做参考,利用帧内的像素和帧间的像素进行各种预测来降低编码码流;B帧利用当前、以前和后面的帧做参考,利用帧内的像素和帧间的像素进行各种预测来降低编码码流。
从实用角度讲,P帧和B帧对降低编码码流的贡献最大,因为在监控应用中,P帧和B帧相对I帧的比例可以很大;而其中B帧作用更加明显:不仅可以利用前后参考帧来增加预测的准确性,而且B帧的解码结果还可以不作为参考帧,这样又可以通过适当降低B帧编码质量来降低编码码流,于是B帧的码流又可以比P帧少很多。B帧除了比P帧多了后向参考帧可以用外,所采用的预测方法和P帧是一样的,所以后面我们只考虑I帧和P帧,分别讨论FPGA在预测和变换结果的量化环节所起的作用。
预测—FPGA在并行处理上的优势
I帧所采用的预测方法是相对简单的,而且在P帧和B帧都可以采用,所以I帧的所有预测方法都应该全部实现;P帧的预测方法非常复杂,H.264编码器的大部分工作量都在这里。P帧的预测目的就是找到当前宏块在参考帧的位置(可以将宏块分成几部分来匹配),而且匹配精度是1/4像素,准确的匹配可以最大限度减少编码。
为了减少工作量,一般是先进行整数像素的搜索匹配,然后才是1/2和1/4像素的最后匹配,要想提高搜索匹配的成功率,参考帧数量、搜索范围和匹配次数都是很关键的。一般来说,参考帧多或者搜索范围大都需要比较多的匹配次数。
由于硬件实时性和流水线的要求,P帧的预测都要在固定的单位时间内完成,在很短的时间内要想实现尽可能多的匹配次数,并行处理是唯一的选择,FPGA在并行处理上体现了优越性,可以实现同时多个位置的匹配,像一些小菱形的4点或者3点匹配,就可以同时计算出3~4点的SAD,比逐点计算快3~4倍。另外,多个参考帧也可以并行处理,同时得到不同参考帧的最小SAD;并行处理是可以大大提高匹配次数,但是也需要大量的内部存储器和逻辑资源,需要从整个设计的总体资源来考虑。