1 编码格式
1.1 H.264的制定过程和应用场合
在制订完最初的H.263标准之后,ITU-T的视频编码专家组(VCEG)将开发工作分为两部分:一部分称之为“短期(short-term)”计划,目的是给H.263增加一些新的特性(这一计划开发出了H.263+和H.263++);另一部分被称为“长期(long-term)”计划,其最初的目标就是要制定出一个比当时其他的视频编码标准效率提高一倍的新标准。这一计划在1997年开始,其成果就是作为H.264前身的H.26L(起初叫H.263L)。在将近2001年底,由于H.26L优越的性能,ISO/IEC的MPEG专家组加入到VCEG中来,共同成立了联合视频小组(JVT),接管了H.26L的开发工作。这个组织的目标是:“研究新的视频编码算法,其目标是在性能上要比以往制定的最好的标准提高很多。”
这一标准正式成为国际标准是2003年3月在泰国Pattaya举行的JVT第7次会议上通过的。由于该标准是由两个不同的组织共同制定的,因此有两个不同的名称:在ITU-T中,它的名字叫H.264;而在ISO/IEC中,它被称为MPEG-4的第10部分,即高级视频编码(AVC)。
1.2 H264 NAL
H264的NALU码流有两种,一种是以前导码开头(00000001)开头,以结束码(00000000)结尾的的NALU流,这种码流ffmpeg是可以正确的解压。而另一种打包格式的NALU,以一个4字节数开头(这个数是一个大端格式的,数值是该NALU实际负载长度),后面跟NALU负载。
1.3 H264 slice
H264和Mpeg4相比有点:更高压缩性能(同样视频质量前提下,更高的压缩比)和更可靠的网络传输能力()。
1帧图像可以被编码为多个slices,一个slices可以包含1个到多个宏块。
其中slice的类型有5种,对于