首页 > 其他分享 >H264的RBSP类型之AUD

H264的RBSP类型之AUD

时间:2022-11-08 10:39:08浏览次数:92  
标签:AUD H264 SODB NALU 图像 RBSP type 字节


AUD从哪来

Access Unit Delimiter访问单元分隔符

以TS文件为例,下面开始剥洋葱~

  1. TS由一个一个188字节的TS数据包组成。有PCR和包计数(0-15)
  2. 去掉TS包头,根据TS包的PID过滤,承载数据组成的就是PES流(打包的原始流),PES由一个个不定长的PES包组成。里面有PTS/DTS,
  3. 去掉PES头信息得到ES(基本码流),也就是H264流或者AAC流,或者…
  4. H264由一个个NAL-网络提取层组成。
  5. NAL是有起始码和一个一个NALU-网络提取层单元组成。
  6. NALU由NALU包头和RBSP组成。包头占一个字节,最后5位指定了后面的BRSP的类型。当类型为9时,代表AUD,也就是Access Unit Delimiter访问单元分隔符。

AUD 的语法

基本还是NALU头+RBSP,下面是其RBSP定义

access_unit_delimiter_rbsp( ) {  
primary_pic_type 3 bit
rbsp_trailing_bits( )
}

rbsp_trailing_bits 是填充字节,也就是为了对齐1个字节,先填充1bit1,再填充若干bit0。填充前叫做SODB-数据比特串,填充后叫做RBSP-原始字节序列载荷。

AUD 的意义

AUD 是分解符,也就是AUD之间是一个完整的帧。
primary_pic_type 指明了这个帧的类型。

primary_pic_type

可能会出现在基本编码图像中的 slice_type 值

0

I

1

I, P

2

I, P, B

3

SI

4

SI, SP

5

I, SI

6

I, SI, P, SP

7

I, SI, P, SP, B

这部分为了帮助理解,看下面百科内容。

实例

00 00 00 01 09 10

00 00 00 01 为NAL起始码
09 说明类型为9,也就是AUD。
10 说明后面跟的是I帧

以下摘自百度百科:

地址:​​https://baike.baidu.com/item/%E5%9B%BE%E5%83%8F%E5%B8%A7​

H.264 是一次概念的革新,它打破常规,完全没有 I 帧、P帧、B 帧的概念,也没有 IDR 帧的概念。对于 H.264 中出现的一些概念从大到小排序依次是:序列、图像、片组、片、NALU、宏块、亚宏块、块、像素。

这里有几点值得说明:
(1)、在 H.264 协议中图像是个集合概念,顶场、低场、帧都可以称为图像(本文后面内容用到图像概念时都是集合概念,不再重复说明)。因此我们可以知道,对于 H.264 协议来说,我们平常所熟悉的那些称呼,例如:I 帧、P 帧、B 帧等等,实际上都是我们把图像这个概念具体化和细小化了。我们在 H.264 里提到的“帧”通常就是指不分场的图像;
(2)、如果不采用 FMO(灵活宏块排序) 机制,则一幅图像只有一个片组;
(3)、如果不使用多个片,则一个片组只有一个片;
(4)、如果不采用 DP(数据分割)机制,则一个片就是一个 NALU,一个 NALU 也就是一个片。否则,一个片由三个 NALU 组成(即标准“表7-1”中 nal_unit_type 值为 2、3、4 的三个 NALU 属于一个片);
(5)、以上所述的片和 NALU 的大小关系并不是抽象概念上的从属关系。从概念的从属关系上来看,NALU其实又是片的一个集合概念,例如:标准“表7-1”中 nal_unit_type 值为 5 的 NALU 包括 I 片或者 SI 片。
一幅图像根据组成它的片类型来分,可以分为标准“表7-5”中的 8 种类型。我们平常应用中所最常见到的其实是这些类型的特例。例如:我们平常所谓的“I 帧”和“IDR 帧”,其实是 primary_pic_type 值为 0 的图像,我们平常所谓的“P帧”其实是 primary_pic_type 值为 1 的图像的特例,我们平常所谓的“B帧”其实是 primary_pic_type 值为 2 的图像的特例。
一幅图像根据概念来分可以分为两种:IDR 图像和非 IDR 图像。一幅图像是否是 IDR 图像是由组成该图像的 NALU 决定的,如果组成该图像的 NALU 为标准“表7-1”中 nal_unit_type 值为 5 的 NALU,则该图像为 IDR 图像,否则为非 IDR 图像。

以下来自转载

转载地址:​​javascript:void(0)​​

H.264 的功能分为两层:视频编码层(VCL, Video Coding Layer)和网络提取层(NAL,Network Abstraction Layer)。VCL 数据即编码处理的输出,它表示被压缩编码后的视频数据序列。

VCL存在三种封装形式:SODB, RBSP, EBSP.

SODB:数据比特串,即编码后的最原始的数据;

RBSP:原始字节序列载荷,即在SODB的后面添加了trailing bits,即一个bit 1和若干个bit 0,以便字节对齐;

EBSP:扩展字节序列载荷,即在RBSP的基础上添加了仿校验字节0x03.—-annexb

二、联系、区别与作用

SODB是编码收的原始数据,经过封装后为RBSP,RBSP是NAL单元的数据部分的封装格式。在NAL内部为了防止与起始码竞争,从而引入填充字节0x03,这样便形成了EBSP。

1、RBSP的形成过程

如果SODB的内容是空的,那么RBSP的内容也是空的;

否则,RBSP的第一个字节取自SODB的第1到第8个比特,RBSP字节内部按照从左到右从高到低的顺序排列。以此类推,RBSP中的每个字节都直接取自SODP的相应比特。RBSP的最后一个字节包含SODB的最后几个比特,以及trailing bits。其中,trailing bits的第一个比特为1,其余的比特为0,保证字节对齐。最后,在结尾添加0x0000,即CABAC ZERO WORD,从而形成RBSP。

2、EBSP的形成过程

NALU数据+起始码就形成了AnnexB格式,起始码包括两种,0x00000001和0x000001。为了不让NALU的主体与起始码之间产生竞争,在对RBSP进行扫描时,如果遇到连续的两个0x00字节,则在该两个字节后面添加一个0x03字节。在解码的时候将该0x03字节去掉,也成为脱壳操作。

通过该种方式形成EBSP,这需要将近两倍的整帧图像码流大小。为了减少存储器需求,在每个macroblock结束后,即检查该macroblock的SODB的起始码竞争问题,并保留SODB的最后两个字节的零字节个数,以便与下一个macroblock的SODB的开始字节形成连续的起始码竞争检测。对一帧图像的最后一个macroblock,先添加结尾停止bit,在检查起始码竞争。

注:起始码包括两种情况,即4字节和3字节。在SPS、PPS和Access Unit的第一个NALU使用4字节起始码,其余情况均使用3字节起始码。

起始码:如果NALU 对应的Slice 为一帧的开始,则用4 字节表示,即0x00000001;否则用3 字节表示,0x000001。


标签:AUD,H264,SODB,NALU,图像,RBSP,type,字节
From: https://blog.51cto.com/u_13316945/5831964

相关文章

  • h264格式
    H264介绍H264,同时也是MPEG-4的第十部分,是由ITU-T视频编码专家组和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组提出的高度压缩数据视频编码器标准(引用自被堵百科)。H264编......
  • linux学习笔记-auditd
    auditdauditd.conf#目录或这个目录中的日志文件。log_file=/var/log/audit/audit.log#日志所属组log_group=root#审计应采用多少优先级推进守护进程。必须......
  • audition 2021 for Mac(au2021)v14.2直装版mac/win
    audition2021直装版哪里可以下载使用呢?AdobeAuditionCC2021ForMac是一款专业数字音频编辑软件,提供先进的音频混音、编辑和效果处理功能,专为音频和视频专业人员设计。......
  • msys中出现configure:error:GStreamer1.0audiorequestedbutnotfoundfo_F_hawk189_新浪
    在windows下使用msys编译spice-gtk源码。出现:checkingforGSTAUDIO...noconfigure:error:GStreamer1.0audiorequestedbutnotfound安装gstreamer后仍......
  • QAudioOutput函数说明
    提供接口,送PCM到输出设备;  接口: 1构造析构:QAudioOutput/~QAudioOutput()2获取设备缓冲大小,就是在不会被覆盖的情况下,你可以向QIODevice一次性送多少字节int ......
  • Adobe Audition(Au)2023软件安装包下载及安装教程
    AdobeAudition(Au)2023软件简介:AdobeAudition2023是一个专业音频编辑和混合环境,前身为CoolEditPro。AdobeAudition专为在照相室、广播设备和后期制作设备方面工作的音频......
  • 运用索引快速删除aud$表6个月前的审计记录
    文档课题:运用索引快速删除aud$表6个月前的审计记录.应用场景:最近在生产库发现定时Job执行删除aud$表6个月前的记录需要1.5小时,该表大小30g,总记录数0.12billion.真是有点耗......
  • VS2022关于ClaudiaDE插件设置背景图片不生效问题
    博主使用的是VS2022,在安装了ClaudiaDE插件后想修改wallpaper的壁纸   结果修改后没有反应最后去GitHub上将ClaudiaDE的版本修改后就成功了......
  • 使用 Windows Core Audio APIs 进行 Loopback Recording 并生成 WAV 文件
    参考文档COMCodingPracticesAudioFileFormatSpecificationsCoreAudioAPIsLoopbackRecording#include<iostream>#include<fstream>#include<vector>#......
  • FreeSwitch报错AUDIO RTP REPORTS ERROR: [Bind Error!
    之前弄了,注册用户在公网映射通过,但电话网关一般在同一内网,没多注意。今日有个项目,特殊云,电话用户和网关均在同一侧,不在freeswitch服务端端于是报了个错,电话无法外呼出去......