【音视频技术】AVC H264的一些基本概念和知识点

AVC(Advanced Video Coding 高级视频编码)
视频编解码技术有两套标准,H.261、国际电联(ITU-T)的标准H.263、H.263+等;还有ISO 的MPEG标准Mpeg1、Mpeg2、Mpeg4等等。H.264/AVC是两大组织集合H.263+和Mpeg4的优点联合推出的最新标准,最具价值的部分无疑是更高的数据压缩比。在同等的图像质量条件下,H.264的数据压缩比能比H.263高2倍,比 MPEG-4高1.5倍。
H.264/AVC标准是由ITU-T和ISO/IEC联合开发的,定位于覆盖整个视频应用领域,包括:低码率的无线应用、标准清晰度和高清晰度的电视广播应用、Internet上的视频流应用,传输高清晰度的DVD视频以及应用于数码相机的高质量视频应用等等。
ITU-T给这个标准命名为H.264(以前叫做H.26L),而ISO/IEC称它为MPEG-4 高级视频编码(Advanced Video Coding,AVC),并且它将成为 MPEG-4标准的第10部分。既然AVC是当前MPEG-4标准的拓展,那么它必然将受益于MPEG-4开发良好的基础结构(比如系统分层和音频等)。很明显,作为MPEG-4高级简洁框架(Advanced Simple Profile,ASP)的MPEG-4 AVC将会优于当前的MPEG-4视频压缩标准,它将主要应用在具有高 压缩率和分层次质量需求的方向。

H.264中一些比较实用的知识:

H264最大的好处就是网络的友好性,用于在互联网流媒体、监控、直播等多数行业内,H264虽然非常复杂,但一般项目实施中是不会涉及到和编码算法相关的工作的(如果需要编码h264的话可以了解一下x264和ffmpeg),基本上只了解h264的NALU相关的协议就够用了。

H264原始码流是一个接一个的NALU(网络抽象层单元)租成的,每个单元之间是由 0x00 0x00 0x00 0x01 或者 0x00 0x00 0x01分割而成的,紧接着就是NALU的单元头和数据体:


forbidden_bit(1bit):禁止位

nal_reference_bit:优先级 

nal_unit_type:NALU的类型:

可以使用这个算法直接得出 type = nalubuf[4] & ((1 << 5) - 1);

和NALU相关的知识点总结:

(1)SPS和PPS是连续对出现的,后面可能紧跟着IDR片,也有可能是SEI(补偿增强信息单元),网上说使用ffmpeg编码yuv成h264时 SPS和PPS后面紧跟着的IDR,我没有检测过,我用Hi3516硬编码SPS和PPS后面紧跟着的是SEI。

(2)H264码流封装成视频文件时比如FLV,SEI单元和SEI单元后面的第一帧一同处理。

(3)AVC编码中的IPB帧概念相对应的是nalutype的1~5,单纯靠nalutype判断不出来IPB帧的类型,详细的可以看这篇大神的文章H264的I/P/B帧类型判断(一)》

以后想到什么再加吧暂时只想到这么多。

猜你喜欢

转载自blog.csdn.net/u013008311/article/details/80249586