7. H264码流
- H264码流分层
- NAL层(网络抽象层)
用于在网络上传输视频流,当数据流在网路传输时,会出现延迟,丢包,乱序重复包等问题。当有了NAL层,就可以有纠错能力。 - VCL层(视频数据编码层)
将帧内编码,帧间编码,熵编码后的数据打包在一起,组成VCL层。
- 码流基本概念
- SODB(String Of Data Bits)
二进制数据串,原始数据比特流,长度不一定是8的倍数,故需要补齐。它是由VCL层产生的。 - RBSP(Raw Byte Sequence Payload 按字节存储的原始数据)
SODB + trailing bits
算法是如果SODB最后一个字节不对齐,则补1和多个0 - NALU
NAL Header(1B) + RBSP
MB:表示宏块
mb_type:宏块类型
mb_pred:宏块预测值
coded residual:宏块残差值
- H264的码流格式
-
Annexb格式
用于在文件中保持。每帧都以 Start code + NALU 组成
Start code:00000001或000001开头 -
RTP格式
用于网络传输,每帧都是RTP 包,即NALU单元。
- H264中的profile和level
- SPS重要参数
(1) H264 profile
对视频压缩特性的描述,Profile越高,就说明采用了越高级的压缩特性。
(2) H264 Level
level是对视频的描述,level越高,视频的码率,分辨率,fps越高。
(3)分辨率
(4)帧相关
-
帧数 log2_max_frame_num_minuts4
指明了COP中的帧的数量。 -
参考帧数 max_num_ref_frames
为解码器设置缓冲区大小 -
显示帧序号 pic_order_cnt_type
计算显示顺序
(5)帧率
- PPS
- Slice Header