h264编码笔记(nal_ref_idc)

article/2025/9/27 22:58:51

一、nal_ref_idc定义

 X264关于nal_ref_idc的枚举定义:

          

nal_ref_idc不等于0时,规定NAL单元的内容包含一个序列参数集,或一个图像参数集,或一个参考图像条带,或一个参考图像的条带数据分割。
如果一个包含一个条带或条带数据分割的NAL 单元的nal_ref_idc等于0时,该条带或条带数据分割是一个非参考图像的一部分。
对于序列参数集或序列参数集扩展或图像参数集的NAL单元,nal_ref_idc不应等于0。当一个特定的图像的一个条带或条带数据分割NAL单元的nal_ref_idc等于0,该图像的所有条带或条带数据划分NAL单元都应该等于0。
IDR NAL单元的nal_ref_idc不应等于0,即nal_unit_type等于5的NAL单元。
所有nal_unit_type等于6、9、10、11或12的NAL单元其nal_ref_idc都应等于0。 

当nal_uint_type为1时,nal_ref_idc代表该帧是否被参考,若该帧没有被参考,nal_ref_idc则为0。

在视频传输过程中,对于P帧或者B帧的nal_ref_idc为0的帧,不进行数据恢复时,不会对后续视频有影响。

二、扩展应用

GOP#1第一帧是IDR帧,后面接着连续的三个B帧,再后面连着P帧,再接三个B帧,循环反复。
解码工作顺序:

1、解码I帧;2、解码第一个P帧;3 解码前三个B帧,这3个B帧依赖于 IDR帧和第一个P帧,IDR帧和第一个P帧解码完后,才解码前三个B帧,而B帧没有被任何其他帧参考。

这三个B帧的NAL头里面的nal_ref_idc字段就为0(NAL_PRIORITY_DISPOSABLE)。这三个B帧丢失,不会导致后续的P帧和B帧解析不出来,仅会掉帧。所以在音视频传输时,可以根据实际情况,权衡一下是否需要恢复。


http://chatgpt.dhexx.cn/article/2Z0XCuje.shtml

相关文章

H264裸码流 I/P/B帧对应NAL类型

1.NAL类型检测 nal类型检测非常容易,对照下表即可容易判断类型。 较常用nal类型包括:SPS(7)、PPS(8)、IDR(5)、SLICE(1)。 而nal_type嵌在码流数据的nal_header(size1Byte)中,占据据该字节的后五位bits。 nal_header…

H.264/H265的NAL解析

1、H.264的NAL解析 在有序字节流格式的H.264码流中,我们可以根据前缀起始码0x 00 00 01或0x 00 00 01获取到一个完整的NAL Unit所包含的的字节数据。H.264码流中的每一个NAL Unit的作用并不是相同的,而是根据不同的类型起不同的作用。因此将H.264的码流解…

查看264NAL信息工具

用easyice只可以查看TS包的帧类型。 google了一下,发现了这个工具HEVCBSAnalyzer https://github.com/latelee/HEVCBSAnalyzer 从git上下载下来,直接使用release文件夹下的工具,查看MP4 NAL信息,正常。

JDK1.9-final关键字

1.1 概述 学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,J…

H264 NAL 单元解析

1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据…

NAL分析

1.NAL头 2.NAL类型 5 IDR图像的片 7 序列参数集 ----- 8 图像参数集 NAL类型介绍 单一NALU的RTP包类型 组合的NALU的RTP包 分片NALU的RTP包 (1) (2)FU Header ---通过FU Header将分片的数据组合

H264 NAL单元简介

目录 一、H264 NAL头部 二、H264参数集 2.1 H264 SPS 2.2 H264 PPS 三、H264 Slice 五、H264参考帧管理方法 Elecard StreamEye​​​​​​​工具​​​​​​​ 编码时,一帧图片分为若干slice,编码以slice为单位进行,即slice之间编码…

H264(NAL简介与I帧判断) 扩展H265

原帖地址 1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表…

H.264——NAL Unit结构分析

目录 NAL Unit格式NAL Headernal_unit_type NAL BodyExtended Byte String Payload RBSP和SODB**问:RBSP是不是等同于原始语法元素值本身?**SODB:String Of Data Bits 结构关系 NAL Unit格式 这一部分在h.264标准文档的7.3节。 解释部分在h264标准文档的…

h264码流及h265码流结构分析,NAL头类型分析

视频编码标准规定了编码后码流的语法语义,也就阐明了从比特流提取语法元素并进行解释的方法,也就是视频的解码过程。 1.h264码流结构解析: H.264/AVC(Advanced Video Coding) 的功能分为两层:视频编码…

H264/AVC NAL单元和解码

在264中,NAL是以NALU(NAL unit)为单元来支持编码数据在基于包交换技术网络中的传输的;它定义了符合传输层或存储介质需求的数据格式,同时提供头信息,从而提供了视频编码与外部世界的接口。网络层和传输层的…

获取NAL_UNIT的RBSP数据

从NAL UNIT中对rbsp获取的原理如图所示&#xff0c;此为NAL UNIT解析的架构图 头文件 #ifndef __NAL_UNIT_H__ #define __NAL_UNIT_H__#include <stdio.h>typedef struct Nal_Unit_Fops {int (*find_nal_unit_data)(FILE *file);int (*find_nal_unit_head)(char (*Q…

H.264——解析NAL Unit数据

目录 原理分析代码实现.c.h 效果 原理 视频编解码——NAL Unit结构分析 分析 1、首先去掉起始码得到NALU实际数据2、分离出NALU中一个字节的header 1bit禁止位、2bitNRI、5bitTYPE 3、解析剩余NALU的body部分 EBSP去除03->RBSP 代码实现 .c #include "LUX_TEST_…

H265/HEVC编码NAL的单元的介绍

一、引言 与H.264/AVC 类似&#xff0c;H265/HEVC也采用视频编码层&#xff08;Video Coding Layer&#xff0c;VCL&#xff09;和网络适配层&#xff08;Network Abstract Layer, NAL&#xff09;的双层结构&#xff0c;以适应不同网络环境和视频应用。网络适配层的主要任务是…

六、NAL Unit解析

参考标准文档&#xff1a;7.3和7.4节 一、NAL Unit结构 NAL Unit: NAL Unit NAL Header NAL Body NAL Header&#xff1a;一个字节&#xff0c;包括&#xff1a; forbidden_zero_bit&#xff1a;规定必须为0禁止位&#xff0c;1 bit;nal_ref_idc&#xff1a;第2和3位&#…

VCL和NAL

VCL和NAL 1.VCL只关心编码部分,重点在于编码算法以及特定硬件平台的实现,VCL输出的是编码后的纯视频流信息,没有任何冗余头信息。 NAL关心是是VCL的输出纯视频流如何被表达和封包以利于网络传输。 封包目的别人知道怎么传输和解码 (1)SODB:string of Data Bits (2)RBSP…

h264 NAL解析

目录 1 AVCC与Annex-B标准 2 slice 2.1 slice header 3 elecard工具解析示例 H.264标准中&#xff0c;视频流是由NAL(Network Abstraction Layer)单元组成的&#xff08;简称NALU&#xff09;&#xff0c;每个NALU中可能是IDR图像、SPS、PPS、non-IDR图像等。 1 AVCC与Ann…

H264(NAL简介与I帧判断)

http://blog.csdn.net/jefry_xdz/article/details/8461343 1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中&#xff0c;整个系统框架被分为了两个层面&#xff1a;视频编码层面&#xff08;VCL&#xff09;和网络抽象层面&#xff08;NA…

H.264(NAL简介与I帧判断)

H.264(NAL简介与I帧判断) 1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中&#xff0c;整个系统框架被分为了两个层面&#xff1a;视频编码层面&#xff08;VCL&#xff09;和网络抽象层面&#xff08;NAL&#xff09;。其中&#xff0c;前者负责…

NAL(网络自适应层)

&#xff08;1&#xff09;整个系统框架被分为了两个层面&#xff1a;视频编码层面&#xff08;VCL&#xff09;和网络抽象层面&#xff08;NAL&#xff09;。其中&#xff0c;前者负责有效表示视频数据的内容&#xff0c;而后者则负责格式化数据并提供头信息&#xff0c;以保证…