H264编码详细说明

  • 格式:doc
  • 大小:77.00 KB
  • 文档页数:2

序列、图像(存储单元)、宏块、像素

一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264

引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。

 I帧(帧内编码帧)是一种自带全部信息的独立帧,无需参考其它图像便可独立进行解码。视频序列中的第一个帧始终都是I帧。I帧可以用来实现快进、快退以及其它随机访问功能。如果新的客户端将参与查看视频流,编码器将以相同的时间间隔或者根据要求自动插入I帧。I帧的缺点在于它们会占用更多的数据位,但I帧不会产生可觉察的模糊现象。

 P帧(帧间预测编码帧)需要参考前面的I帧和/或P帧的不同部分才能进行编码。与I帧相比,P帧通常占用更少的数据位,但其缺点是,由于P帧对前面的P和I参考帧有着复杂的依赖性,因此对传输错误非常敏感。

 B帧(双向预测编码帧)需要同时以前面的帧和后面的帧作为参考帧。不是参考帧,不会造成解码错误的扩散。运算比较复杂,CPU占用较高。

I、B、P各帧是根据压缩算法的需要人为定义的,它们都是实实在在的物理帧。一般来说,I帧的压缩率是7(跟JPG差不多),P帧是20,B帧可以达到50。

网络打包、网络抽象层单元(NALU)、片

NALU的网络打包:

(1) 额外开销要少,使MTU尺寸在100~64k字节范围都可以;

(2) 不用对包内的数据解码就可以判别该包的重要性;

(3) 载荷规范应当保证不用解码就可识别由于其他的比特丢失而造成的包不可解码;

(4) 支持将NALU分割成多个RTP包;

(5) 支持将多个NALU汇集在一个RTP包中。

 灵活宏块次序 (FMO) 可以通过设置宏块次序映射表(MBAmap)来任意地指配宏块到不同的片组,FMO模式打乱了原宏块顺序,降低了编码效率,增加了时延,但增强了抗误码性能。划分图像的模式各种各样,主要的有棋盘模式、矩形模式等。

 数据划分 (DP) 使得一个片中的宏块数据重新组合,把宏块语义相关的数据组成一个划分,由划分来组装片。在H.264中有三种不同的数据划分。

A 头信息划分:包含片中宏块的类型,量化参数和运动矢量,是片中最重要的信息。

B 帧内信息划分:包含帧内CBPs和帧内系数,帧内信息可以阻止错误的蔓延。

C 帧间信息划分:包含帧间CBPs和帧间系数,通常比前两个划分要大得多。

流控、纠错

B帧从前向后丢掉,P帧从后向前丢掉。