《新一代视频压缩编码标准H.264》

《新一代视频压缩编码标准H.264》

 

  1. NALU: 网络抽象单元

 

VCL  video coding layer       视频编码层

NAL  network abstraction layer  网络提取层

VCL:核心算法引擎,块,宏块及片的语法级别的定义

 

我们平时的每帧数据就是一个NAL单元(sps pps除外)

 

00 00 00 01分割之后的下一个字节就是NALU类型,有些以00 00 01分隔

 

 

 

举例:

00 00 00 01 67  SPS

00 00 00 01 68  PPS

00 00 00 01 65  I帧

 

 

 

SPS PPS可以在发帧数据之前只发一次,也可以每帧的头部都带sps pps,还可以只在I帧头部加sps pps。(一般sps pps只发一次即可, 每帧都发也没必要)

 

 在实际的H264数据帧中,往往帧前面带有00 00 00 01 00 00 01分隔符,一般来说编码器编出的首帧数据为PPS与SPS,接着为I帧

 

 

 

  1. 帧slice:

硬件编码,一般每一帧都只有一个slice

如果软件编码可以多线程编码:这样的话一个帧可能分成几个slice

(这样解码端也可以多线程解码,提升编解码速度)

注意: 每个slice都包含NALU头

 

  1. MP4的h264和h264的区别

<>

MP4的h264:

ffmpeg读取mp4中的h264数据,并不能直接得到NALU, 其前4个字节表示的是nalu的长度,从第五个直接开始才是nalu的数据,所以直接将前4个字节替换为0x00 0x00 0x00 0x01即可得到标准的nalu数据。

 

对于mp4的h264:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Linux)