H.264码流解析
这一篇内容旨在对H.264码流中的一些概念做简单了解。
1、概念了解
VCL
:Video Coding Layer视频编码层,它是H.264(AVC)编码中的核心,负责视频数据的编码工作。VCL层会应用一系列的图像压缩技术,如预测编码、变换编码、量化、熵编码等,将原始视频数据压缩成二进制比特流,压缩生成的比特流也被称为原始数据比特流SODB(String of Data Bits)
。
NAL
:Network Abstraction Layer网络抽象层,将SODB打包封装便于网络传输,里面有如下内容需要做了解:
-
网络传输一般是以字节为单位,但是SODB的长度不一定是整数字节,所以第一步是要把SODB扩充为整数字节,扩充后的数据被称为
RBSP(Raw Byte Sequence Payload)
。扩充方式是在SODB的末尾添加一个比特位1
,如果数据仍不是整数字节,则在末尾添加比特位0,直到数据变成整数字节。-
假设我们原始的SODB是一个7位的二进制数据1001100,将它转化为RBSP时,我们会首先在尾部添加1得到10011001,长度变成8,所以不需要再添加0。
-
如果原始的SODB是一个10位的二进制数据1001100110,将它转化为RBSP时,我们会首先在尾部添加1得到10011001101,长度变成11,需要再添加5个0,最后的RBSP为100110011
-