H264 是什么
H.264是 国际标准化组织 ( ISO )和 国际电信联盟 (ITU)共同提出的继MPEG4之后的 新一代 数字视频 压缩格式 。 H.264是ITU-T以H.26x系列为名称命名的 视频编解码技术 标准之一。
简单理解:是一个视频编解码技术。
H264 压缩比
条件:YUV 格式为 YUV420;分辨率为640*480;帧率为15;
则视频大小为:640*480*1.5*15*8 结果约为 55 MB;
H264 建议大小为 500kpbs,压缩比约 1/100;
H264 压缩技术
帧内压缩:解决的是空域数据冗余问题;通俗来讲,拍证件照片,背景都是蓝色,这个蓝色背景可以用很小的数据量来存储。
帧间压缩:解决的事时域数据冗余问题;通俗来讲,几秒内视频没有什么太大的变化,这样去存储第一帧视频,第二帧可以根据第一帧计算图片残差值来推断出来。残差值就是计算图片间不一样的地方。
整数离散余弦变换( DCT ),将空间上的相关性变为频域上无关的数据然后进行量化。通俗来讲,是改变数据的位置;比如图片有一张人脸,将人脸信息集中到某一位置,这样更有利于后面的无损压缩。
CABAC 压缩,根据上下文对数据进行压缩。
其中,帧内压缩和帧间压缩是有损压缩,DCT 和 CABAC是无损压缩。
宏块
宏块是视频压缩操作的基本单元。
无论是帧内压缩还是帧间压缩,它们都以宏块为单位。
H264 宏块划分
如下图,将左边左上角 8*8 区域进行切割,进行宏块划分,得到右边图片:
经过宏块划分,更有利于视频的编解码。
子块划分:下图左边是一块 16*16 大的宏块,右一图是 MPEG2 进行宏块划分,进行 8*8 划分为四个小的子块,划分较大,数据量很多;而 H264 将左边大的宏块划分为很多小的子块,如 4*8、 4*4、8*4 小的子块,如下面右二图,这样数据量会更少;
将宏块划分的越小,控制力就越强,一般适用于较为复杂的图片;如果图片是一张蓝色无内容图片,则将宏块划分的越大,速度越快。
宏块的尺寸