基本介绍


h264是类似于mpeg4的一种压缩算法,只不过h264更加高级,压缩率更高,使用更方便、更灵活。h264具有这些优点得益于他的设计。h264是分层设计,分为VCL层和NAL层,其中VCL是为了表示视频数据的内容,NAL层则是为了格式化数据,方便存取。一个NAL单元如下:




前一个字节为NAL头,头之后是NAL体(RBSP部分),即压缩后的视频数据。对于每个NAL中body是什么数据的内容,通过header中nal_unit_type(5bit)决定,详见下表:



一个h264文件是由NAL序列组成的,为了区分单个的NAL,在生成NAL序列中,往每个NAL单元前添加一个起始编码前缀'0x00 00 00 01'。

官方资料如下:



码流分析

下面我们通过一段h264的视频码流的分析,充分理解一下h264:



上图中红色线画出来的"00 00 00
01"就是NAL起始码前缀,起始码前缀之后就是NAL头,我们可以看到这里的NAL头分别有'09'、'27'、'28'、'25' 我们以'27'为例说明一下

'27' 的二进制代码为:'0010 0111'

第一位为'0',说明该NAL单元正确,第2、3位为'01',剩下的5位为:'00111',即7,通过表7-1,我们可以知道这个NAL单元中的数据为序列参数集。

h264在网络传输中是以NALU序列存在的,图示如下:



福利

h264介绍详细的博客:
http://www.iosxxx.com/blog/2017-08-09-%E4%BB%8E%E9%9B%B6%E4%BA%86%E8%A7%A3H264%E7%BB%93%E6%9E%84.html

<http://www.iosxxx.com/blog/2017-08-09-%E4%BB%8E%E9%9B%B6%E4%BA%86%E8%A7%A3H264%E7%BB%93%E6%9E%84.html>

h264官方文档:《T-REC-H.264-200305-S2PDF-E.pdf》

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信