音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介

=================================================================

音视频入门基础:H.264专题系列文章:

音视频入门基础:H.264专题(1)------H.264官方文档下载

音视频入门基础:H.264专题(2)------使用FFmpeg命令生成H.264裸流文件

音视频入门基础:H.264专题(3)------EBSP, RBSP和SODB

音视频入门基础:H.264专题(4)------NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介

音视频入门基础:H.264专题(5)------FFmpeg源码中 解析NALU Header的函数分析

音视频入门基础:H.264专题(6)------FFmpeg源码:从H.264码流中提取NALU Header、EBSP、RBSP和SODB

音视频入门基础:H.264专题(7)------FFmpeg源码中 指数哥伦布编码的解码实现

音视频入门基础:H.264专题(8)------H.264官方文档的描述符

=================================================================

一、引言

AnnexB 格式的H.264码流的NALU去掉0x000001或0x00000001的起始码后,其第一个字节为占用 1 位的forbidden_zero_bit + 占用 2 位 的nal_ref_idc + 占用 5 位的nal_unit_type。它们加起来刚好8位,也就是1个字节,一般被我们称为NALU Header(NAL Unit Header):

二、forbidden_zero_bit

根据《音视频入门基础:H.264专题(1)------H.264官方文档下载》下载的H.264官方文档《T-REC-H.264-202108-I!!PDF-E.pdf》,第63页:

forbidden_zero_bit 的值应为0。
根据第308页:

如果forbidden_zero_bit 的值为1,说明比特流语法出错了,字节对齐可能已经丢失,此时可以丢弃所有的比特流数据,直到之后检测到字节对齐。

三、nal_ref_idc

nal_ref_idc的取值范围为0到3,值越高表示它对应的NALU越重要。当解码器在解码处理不过来的时候,可以丢掉nal_ref_idc为0的NALU。一般来讲,如果解码时某个NALU被其它Slice所依赖,说明该NALU比较重要。如果该NALU不需要被其它Slice依赖,说明该NALU不重要。

根据H.264官方文档《T-REC-H.264-202108-I!!PDF-E.pdf》,第11页:

非参考图片就是:nal_ref_idc为0的图片,它不会被其它图片用作帧内预测。

根据《T-REC-H.264-202108-I!!PDF-E.pdf》,第13页:

参考图片就是:nal_ref_idc不为0的图片。解码过程中被后续的图片用于帧内预测。

根据第64页:

Sequence parameter set(sps)、 Picture parameter set(pps)、 Coded slice of an IDR picture(IDR SLICE)的nal_ref_idc不能为0(一般值是3)。 Supplemental enhancement information (补充增强信息SEI)、 Access unit delimiter(分隔符)、 End of sequence(序列结束符)、 End of stream(码流结束符)、 Filler data(填充数据)的nal_ref_idc应为0。
参考:《 设置encode PPS和SPS
nal_ref_idc value for the last frame in GOP when B frame is there for x264 encoding
Breif Description of nal_ref_idc Value in H.246 NALU

四、nal_unit_type

nal_unit_type表示NALU 的类型,见《T-REC-H.264-202108-I!!PDF-E.pdf》,第65页:

相关推荐
linux_cfan4 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
赛博仓鼠5 小时前
秋叶ComfyUI 3.2整合包实测:Python 3.13+Torch 2.13全栈升级,一键跑通MiniMax H3(附完整部署)
ai·ai作画·aigc·音视频
乐橙开放平台7 小时前
从「多套客户端」到一套开放能力:乐橙视频监控能力复盘
笔记·物联网·自动化·音视频·智能家居
linux_cfan12 小时前
videojs v10 源代码系列解读:13 · 能力型媒体契约:`Media` 的组合接口
前端·javascript·音视频
勤劳X码农13 小时前
2026年TTS工具技术测评:7款方案实测,从免费额度到API集成全解析
人工智能·音视频·实时音视频
m0_6145235514 小时前
Log视频导入发灰,先查颜色链
音视频·视频编辑
linux_cfan1 天前
17 · 引擎适配器全景:HLS/DASH/Vimeo/Mux/Cast
前端·javascript·音视频
音视频牛哥1 天前
视频编码的终局不是“更省码率”:从 H.266、AV2 到 AI 编解码的下一场竞争
音视频·h.266·rtsp h.266·h.266编解码·rtp h.266·rtp vvc·ai编解码
程序员老陆1 天前
WHIP 与 WHEP:WebRTC 直播的标准化入口与出口
ffmpeg·音视频·webrtc·whip·whep
linux_cfan1 天前
16 · `custom-media-element`:属性拦截与转发
前端·javascript·音视频