《新一代视频压缩编码标准H.264》
- 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帧
- 帧slice:
硬件编码,一般每一帧都只有一个slice
如果软件编码可以多线程编码:这样的话一个帧可能分成几个slice
(这样解码端也可以多线程解码,提升编解码速度)
注意: 每个slice都包含NALU头
- MP4的h264和h264的区别
<<MP4的H264与H264区别.docx>>
MP4的h264:
ffmpeg读取mp4中的h264数据,并不能直接得到NALU, 其前4个字节表示的是nalu的长度,从第五个直接开始才是nalu的数据,所以直接将前4个字节替换为0x00 0x00 0x00 0x01即可得到标准的nalu数据。
对于mp4的h264:
《新一代视频压缩编码标准H.264》
最新推荐文章于 2022-09-04 20:56:14 发布