H264 是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码
方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像
画面中,一般有差别的像素只有 10%以内的点,亮度差值变化不超过 2%,而色度差值的变
化只有 1%以内。所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧
A,随后的 B 帧就不编码全部图像,只写入与 A 帧的差别,这样 B 帧的大小就只有完整帧
的 1/10 或更小!B 帧之后的 C 帧如果变化不大,我们可以继续以参考 B 的方式编码 C 帧,
这样循环下去。这段图像我们称为一个序列(序列就是有相同特点的一段数据),当某个
图像与之前的图像变化很大,无法参考前面的帧来生成,那我们就结束上一个序列,开始
下一段序列,也就是对这个图像生成一个完整帧 A1,随后的图像就参考 A1 生成,只写入
与 A1 的差别内容。
在 H264 协议里定义了三种帧,完整编码的帧叫 I 帧,参考之前的 I 帧生成的只包含差
异部分编码的帧叫 P 帧,还有一种参考前后的帧编码的帧叫 B 帧。
H264 采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成 I 帧的算法,帧间压缩是
生成 B 帧和 P 帧的算法。
序列的说明
在 H264 中图像以序列为单位进行组织,一个序列是一段图像编码后的数据流,以 I 帧
开始,到下一个 I 帧结束。
一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。
H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧
队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,
如果前一个序列出现重大错误,在这里可以获得重新同步的机会。IDR 图像之后的图像永
远不会使用 IDR 之前的图像的数据来解码。
一个序列就是一段内容差异不太大的图像编码后生成的一串数据流。当运动变化比较
少时,一个序列可以很长,因为运动变化少就代表图像画面的内容变动很小,所以就可以
编一个 I 帧,然后一直 P 帧、B 帧了。当运动变化多时,可能一个序列就比较短了,比如
就包含一个 I 帧和 3、4 个 P 帧。
三种帧的说明
1、I 帧
I 帧:帧内编码帧 ,I 帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要
本帧数据就可以完成(因为包含完整画面)
I 帧特点:
1)它是一个全帧压缩编码帧。它将全帧图像信息进行 JPEG 压缩编码及传输;
2)解码时仅用 I 帧的数据就可重构完整图像;
3)I 帧描述了图像背景和运动主体的详情;
4)I 帧不需要参考其他画面而生成;
5)I 帧是 P 帧和 B 帧的参考帧(其质量直接影响到同组中以后各帧的质量);
6)I 帧是帧组 GOP 的基础帧(第一帧),在一组中只有一个 I 帧;
7)I 帧不需要考虑运动矢量;
8)I 帧所占数据的信息量比较大。
评论0