H.264为解决不同应用中的网络传输的差异。定义了两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,网络提取层(NAL:Network AbstractionLayer)负责以网络所要求的恰当的方式对数据进行打包和传送(如图所示: 标准的整体框架)。
标准的整体框架
基本层次(Baseline Profile):该层次使用了H.264的除了B-Slices,CABAC以及交织编码模式外所有的特性。该层次主要使用于低时延的实时应用场合。
主要层次(Main Profile):包含Baseline profile的所有特性,并包括了B-slices,CABAC以及交织编码模式。它主要针对对时延要求不高,当压缩率和质量要求较高的场合。
扩展层次(Profile X):支持所有Baseline profile的特性,但不支持CABAC以及基于宏块的自适应帧场编码。该层次主要针对的时各种网络视频流传输方面的应用。
分层设计 H.264的算法在概念上可以分为两层:视频编码层负责高效的视频内容表示,网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。在VCL和NAL之间定义了一个基于分组方式的接口,打包和相应的信令属于NAL的一部分。这样,高编码效率和网络友好性的任务分别由VCL和NAL来完成。
VCL层包括基于块的运动补偿混合编码和一些新特性。与前面的视频编码标准一样,H.264没有把前处理和后处理等功能包括在草案中,这样可以增加标准的灵活性。
NAL负责使用下层网络的分段格式来封装数据,包括组帧、逻辑信道的信令、定时信息的利用或序列结束信号等。例如,NAL支持视频在电路交换信道上的传输格式,支持视频在Internet上利用RTP/UDP/IP传输的格式。NAL包括自己的头部信息、段结构信息和实际载荷信息,即上层的VCL数据。(如果采用数据分割技术,数据可能由几个部分组成)。
h264 不仅有视频压缩,还有传输的信息。所以如果按照标准h264,可以直接对h264流解码播放视频,很多厂家都会在h264上打上自己的私有头,使得别的厂家在使用终端的时候必须使用sdk,增加很多开发工作。