经过 H264 编码过后,会输出 H264 码流。拿到码流后,可以保存为文件,也能进行传输。

H264 码流分层

NAL 层,视频数据网络抽象层;作用:方便在网络上传输视频流。

如果出现丢包,重传,乱序。接收端通过判断 NAL 层,可以判断出上述的情况,然后进行相应的处理。

VCL 层,视频数据编码层;这里面就是帧内编码,帧间编码与熵编码。

VCL 结构关系如下图,图片最上面是一帧一帧数据,一帧数据是由一个或多个 slice 组成,每个片是由多个宏块组成,每个宏块由多个子块组成。

H264码流_原始数据

码流的基本概念

SODB ( String Of Data Bits):二进制数据串

  原始数据比特流,单位是为,一个字节为8位,它长度不一定是8的倍数,所以要补齐。由 VCL 层产生;

RBSP ( Raw Byte Sequence Payload ):按字节存储的原始数据

  SODB + trailing bits ;如果 SODB 最后一个字节不对齐,则补1和多个0;

NALU :NAL单元

  NALU = NAL Header + RBSP

H264 码流 = NALU+NALU+NALU+...

NAL 单元

H264码流_原始数据_02

整个码流分层:

H264码流_码流_03