H.264解析(一)


1、什么是封装格式、编码标准?

对于一段视频,其实就是一张张的图片,以30帧/S的速度播放,在人眼看来就是连续的一段影像。 那么视频就一组图片的合集。
但是由于相机直接拍摄出来的图片很大,以1080P的ARGB_8888的图片为例,单张图片的存储大小:1920x1080x4=7.9M,如果以图片原有质量打包成最终的视频,那么1S的视频就是7.9Mx24=189.6M,看1S的视频需要消耗189.6M的流量,在现在4G普及的时代也是无法接受的,尤其是直播流行的当下。

那么视频编码技术就出来了,视频编码针对的是视频压缩技术,有不同的技术标准,如H264。而视频封装指的是视频打包技术,如mp4、avi等等。

视频编码流程

对照上图,相机连续拍摄出来的图片以H264的形式,被压缩编码成视频帧,然后视频帧以MPEG的形式打包成最终的生日会.mp4。

封装格式:MP4、RMVB、FLV、AVI

编码标准:H.264、MPEG-2

视频像素数据:YUV420P、RGB、ARGB

补充说明图片的色彩模式: bitmap色彩模式

上图是Android Bitmap.java+Bitmap.Config中对于色彩模式的支持力度:

ALPHA_8:只有透明度,没有色彩,每个像素点占8位(1字节)

RGB_565:R=5,G=6,B=5,没有透明度,共占(5+6+5=)16位(2字节)

ARGB_4444:A=4,R=4,B=4,G=4,共占(4+4+4+4=)16位(2字节)

ARGB_8888:A=8,R=8,G=8,A=8,共占(8+8+8+8=)32位(4字节)

对于一张720x480的图片,色彩模式时ARGB_8888,占存储大小是:720x480x4=1.31M。 所以在Android平台开发,加载Bitmap时,可以结合当前ImageView对Bitmap质量的要求,适当降低色彩模式。

2、H.264发展

视频编码发展史

视频编解码技术有两套标准,H.261、国际电联(ITU-T)的标准H.263、H.263+等;还有ISO 的MPEG标准Mpeg1、Mpeg2、Mpeg4等等。H.264/AVC是两大组织集合H.263+和Mpeg4的优点联合推出的最新标准,最具价值的部分无疑是更高的数据压缩比。在同等的图像质量条件下,H.264的数据压缩比能比H.263高2倍,比MPEG-4高1.5倍。

H.264/AVC标准是由ITU-T和ISO/IEC联合开发的,定位于覆盖整个视频应用领域,包括:低码率的无线应用、标准清晰度和高清晰度的电视广播应用、Internet上的视频流应用,传输高清晰度的DVD视频以及应用于数码相机的高质量视频应用等等。

ITU-T给这个标准命名为H.264(以前叫做H.26L),而ISO/IEC称它为MPEG-4 高级视频编码(Advanced Video Coding,AVC),并且它将成为MPEG-4标准的第10部分。既然AVC是当前MPEG-4标准的拓展,那么它必然将受益于MPEG-4开发良好的基础结构(比如系统分层和音频等)。很明显,作为MPEG-4高级简洁框架(Advanced Simple Profile,ASP)的MPEG-4 AVC将会优于当前的MPEG-4视频压缩标准,它将主要应用在具有高压缩率和分层次质量需求的方向。

H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1。低码率(Low Bit Rate)对H.264的高的压缩比起到了重要的作用,和MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅的图像,正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。