经过 H264 编码过后,会输出 H264 码流。拿到码流后,可以保存为文件,也能进行传输。
H264 码流分层
NAL 层,视频数据网络抽象层;作用:方便在网络上传输视频流。
如果出现丢包,重传,乱序。接收端通过判断 NAL 层,可以判断出上述的情况,然后进行相应的处理。
VCL 层,视频数据编码层;这里面就是帧内编码,帧间编码与熵编码。
VCL 结构关系如下图,图片最上面是一帧一帧数据,一帧数据是由一个或多个 slice 组成,每个片是由多个宏块组成,每个宏块由多个子块组成。
码流的基本概念
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 单元
整个码流分层: