参考标准文档:7.3和7.4节

一、NAL Unit结构

  • NAL Unit:

    • NAL Unit = NAL Header + NAL Body
  • NAL Header:一个字节,包括:
    • forbidden_zero_bit:规定必须为0禁止位,1 bit;
    • nal_ref_idc:第2和3位,主要表示NAL的优先级。当该值为正时,表示当前NAL Unit中包含了SPS、PPS和作为参考帧的Slice等重要数据,2bit
    • nal_unit_type:5bit,表示NAL Unit的类型,包括VCL层和非VCL层的多种数据类型。常见的nal_unit_type取值有:7表示SPS,8表示PPS,5表示IDR帧,1表示非IDR帧等

二、NAL Unit的有效负载数据及其封装

在NAL Header之后,NAL Unit的其余部分,即NAL Body包含了有效负载数据的封装。从NAL Body到实际的语法元素的码流自外向内共3层封装:

第一层:EBSP——扩展字节序列载荷

EBSP全称为Extended Byte String Payload,等同于NAL Body的数据本身。在EBSP中包含了一个特殊的字节0x03,表示防止竞争校验字节:

  • emulation_prevention_three_byte:设置该值的目的是为了防止NAL Body内部出现于NAL Unit起始码0x 00 00 01或0x 00 00 00 01冲突。
  • 当内部的连续4字节数据出现了下列情况时:
    0x 00 00 00
    0x 00 00 01
    0x 00 00 02
    0x 00 00 03
  • 在两个0字节之后会插入值为3的一个字节,形成下列情况:
    0x 00 00 03 00
    0x 00 00 03 01
    0x 00 00 03 02
    0x 00 00 03 03
  • 在进行解析时需要将附加的03字节去掉,得到RBSP数据。

第二层:RBSP——原始字节序列载荷

  • RBSP全称为Raw Byte Sequence Payload

    • 相当于NAL Body去掉03字节之后的数据,是对原始的语法元素码流进一步处理后产生的数据
    • 相比于原始的语法元素码流,RBSP在末尾添加了rbsp_trailing_bits()部分,其主要目的是字节对齐
    • 每个rbsp_trailing_bits()包括一个1bit和若干个0bit,0bit的个数不定,以实现字节的对齐。
      例如: xxx 11010000 //后面的10000是为了对齐,如果不对齐会导致后面所有的都存在对齐问题(编码之后的数据并不是字节对齐的)

第三层:SODB——数据字节流

  • SODB全称为String Of Data Bits

    • 表示H.264的语法元素编码完成后的实际的原始二进制码流。SODB通常不能保证字节对齐,所以需要逐层向上封装

六、NAL Unit解析相关推荐

  1. NAL Unit解析

    NAL Unit结构解析 NAL Unit包含NAL Header 和 NAL Body NAL Header: 一个字节,包括: forbidden_zero_bit: 0禁止位,1bit: nal ...

  2. H.264——NAL Unit结构分析

    目录 NAL Unit格式 NAL Header nal_unit_type NAL Body Extended Byte String Payload RBSP和SODB **问:RBSP是不是等同 ...

  3. H264 NAL 单元解析

    1.NAL全称Network Abstract Layer, 即网络抽象层.          在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面( ...

  4. Jmeter Web 性能测试入门 (六):Jmeter 解析 response 并传递 value

    解析response中的内容,并把获取到的value传递到后续的request中,常用的方法就是在想要解析response的request上添加后置处理器 本章介绍两种常用的组件 BeanShell ...

  5. 第六章 PX4-Sensors解析

    版权声明:本文为博主原创文章,未经博主允许不得转载.  第六章 PX4-Sensors解析 这一章节并不难,也很容易理解,但是这一章节有几个函数需要我们去理解一下,所以这里我们这里写一章来说明一下 ...

  6. C语言第六次作业指针,c语言第六次作业解析

    <c语言第六次作业解析>由会员分享,可在线阅读,更多相关<c语言第六次作业解析(36页珍藏版)>请在人人文库网上搜索. 1.c 语言第六次作业解析第六次作业:指针(以下题目如无 ...

  7. Android[中级教程]第六章 XML解析之SAX解析器

    Android[中级教程]第六章 XML解析之SAX解析器 分类: Android中级2011-10-06 01:52 125人阅读 评论(1) 收藏 举报 接上一章,这一章我们就来学习SAX解析器, ...

  8. H.264 NAL层解析(0x00000001,编码,打包,NALU)

    文章参考自:https://blog.csdn.net/wudebao5220150/article/details/13810671 1.引言 H.264的主要目标: 1.高的视频压缩比 2.良好的 ...

  9. hashmap中用红黑树不用其他树_HashMap面试专题:常问六题深入解析

    引言 其实我很早以前就想写一篇关于HashMap的面试专题.对于JAVA求职者来说,HashMap可谓是集合类的重中之重,甚至你在复习的时候,其他集合类都不用看,专攻HashMap即可. 然而,鉴于网 ...

最新文章

  1. [AHOI2005]约数研究
  2. 中国700万程序员不够用怎么办?我们去问了北大谢涛,顶会ASE最有影响力论文奖首批华人得主...
  3. linux改变工作目录命令,linux命令:cd命令,改变当前的工作目录
  4. mac homebrew
  5. java 从未导入_Java 8的10个您从未听说过的功能
  6. [OpenJudge 3066]随机序列
  7. C# 使用SqlDataReader方式使用数据做查询的例子
  8. 中国电信天翼网关路由器后台登录useradmin用户忘记密码的解决方法默认密码管理员密码工作人员密码
  9. 微信公众号禁止分享功能
  10. GEEer成长日记二:Modis_NDVI逐日和逐月时间序列分析
  11. 竖流式沉淀池三角堰计算_一种辐流式沉淀池的双侧堰出水构造的制作方法
  12. 华为HCIE证书含金量
  13. [zt]给你的Mp4大换血,精选Touch里3年收集的900多首歌,经典不忍去的最新近流行的,与你共享~~...
  14. 【征稿】第三届电子、信息与计算技术前沿国际会议(ICFEICT 2023)
  15. 这是我见过最牛逼的Shell脚本!
  16. 免费SVN、Git项目托管主机及网站介绍
  17. android人脸识别——HowOld测测你的年龄和性别
  18. c语言题库及答案免费下载,C语言题库(含答案)
  19. 武汉计算机考研好的学校排名,武汉排名前十的考研学校
  20. 关于学习JavaScript!

热门文章

  1. RFC1662_PPP in HDLC-like Framing_HDLC协议
  2. 仿写百度(百度一下 你就知道)搜索页面
  3. 4、web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
  4. STM32CubeMX开发教程(1)— 安装教程
  5. ld-linux.so查找共享库的顺序
  6. Very fast template matching(非常快的模板匹配)
  7. 如何用人工智能破解罗一笑事件的“道德绑架”困局?
  8. Chrome浏览器图片不显示怎么办 解决方法分享
  9. mysql 整理碎片_mysql 如何去整理表数据,碎片整理
  10. PTA--文件--函数题--写文章--C语言