![755cbd63d29ec20e3210b1f204c60cc9.png](https://i-blog.csdnimg.cn/blog_migrate/badb44287674a3d9dd519e322846af01.jpeg)
前言
H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的。随着 x264/openh264以及ffmpeg等开源库的推出,大多数使用者无需再对H264的细节做过多的研究,这大降低了人们使用H264的成本。
但为了用好H264,我们还是要对H264的基本原理弄清楚才行。今天我们就来看看H264的基本原理。
H264概述
![64ec7679d0c71cdc97d19040d7a85298.png](https://i-blog.csdnimg.cn/blog_migrate/5deadd59b2898d90fb0ab6e5a20f4ce3.png)
H264压缩技术主要采用了以下几种方法对视频数据进行压缩。包括:
- 帧内预测压缩,解决的是空域数据冗余问题。
- 帧间预测压缩(运动估计与补偿),解决的是时域数据冗徐问题。
- 整数离散余弦变换(DCT),将空间上的相关性变为频域上无关的数据然后进行量化。
- CABAC压缩。
经过压缩后的帧分为:I帧,P帧和B帧:
- I帧:关键帧,采用帧内压缩技术。
- P帧:向前参考帧,在压缩时,只参考前面已经处理的帧。采用帧音压缩技术。
- B帧:双向参考帧,在压缩时,它即参考前而的帧,又参考它后面的帧。采用帧间压缩技术。
除了I/P/B帧外,还有图像序列GOP。
- GOP:两个I帧之间是一个图像序列,在一个图像序列中只有一个I帧。如下图所示:
![0f8f8d9c077734fa1bd3606e8dd2c39a.png](https://i-blog.csdnimg.cn/blog_migrate/74310e3ddee463d1eb66b9d6a5789648.jpeg)
下面我们就来详细描述一下H264压缩技术。
H264压缩技术
H264的基本原理其实非常简单,下我们就简单的描述一下H264压缩数据的过程。通过摄像头采集到的视频帧(按每秒 30 帧算),被送到 H264 编码器的缓冲区中。编码器先要为每一幅图片划分宏块。
以下面这张图为例:
![8f034448f3453fd44189a6d957c2c1de.png](https://i-blog.csdnimg.cn/blog_migrate/caf433483f93d29c32a3cb24a0dbf90e.jpeg)
划分宏块
H264默认是使用 16X16 大小的区域作为一个宏块,也可以划分成 8X8 大小。