H264
This is my study note of H.264.
H264功能结构
- 视频编码层(Vedio coding layer)
1
负责压缩编码视频数据的内容,主要包括帧内压缩、帧间压缩、变换量化、熵编码等。
- 网络抽象层
1
将VCL数据封装到NAL单元中,并提供头信息,保证数据适合信道和各种存储介质上的传输。
H264帧类型
H264结构中,一个视频图像编码后的数据叫做一帧,一帧图像由一个片或多个片组成,一个片由一个或多个宏块组成,一个宏块由16×16的yuv数据组成,H264编码的基本单位是宏块。
经过压缩的帧:
I帧
1
关键帧,采用帧内压缩技术。可以理解为这一帧数据完全保留,解码时只需要本帧数据就可以完成。
P帧
只参考前面以及处理好的帧。B帧
双向参考帧,压缩时即会参考前面的帧又会参考之后的帧。IDR帧
1
一个序列的第一个图像叫做IDR帧,IDR帧都是I帧。当解码器解码到IDR帧时,会清空参考帧队列,将已解码的数据全部输出或者抛弃,重新查找参数集,IDR之后的图像不会用IDR之前的图像来解码。
H264编码原理
H264核心的压缩算法是帧内压缩和帧间压缩。帧内压缩是生成I帧的编码,帧间压缩是生成B、P帧的编码。
帧内压缩
1
2
3
4
5
6
7
8
9空间压缩算法,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息。帧内一般采用有损压缩算法。
1.宏块划分
计算各宏块之间的像素,并将帧划分成组。
2.计算图像的运动矢量
在一帧中找到物体后,在相邻帧也找到对应的物体就可以计算物体的运动矢量了,在删除相同部分。只保留运动矢量后就得到了补偿数据。我们将补偿数据进行压缩保存就可以减少很多的数据量。帧间压缩
1
2
3
4
5
6
7
8
9时间压缩算法,比较时间轴上不同帧之间的数据进行压缩,帧间压缩一般为无损的。
1.宏块预测
对每个宏块可以进行9种模式的预测,找到最相近的一种预测模式。
2.图像残差
将原始图像与帧内预测后的图像相减得到残差值。GOP
1
通过将关联度高的帧划分为一组,例如:在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内,我们认为这样的图可以分到一组。
对残差数据做DCT变换
熵编码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风声向寂!
评论
ValineDisqus