1.NAL 概述

NAL 全称 Network Abstract Layer,即网络抽象层。在 H.264/AVC 视频编码标准中,整个系统框架被分为 了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容, 而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。 现实中的传输系统是多样化的,其可靠性,服务质量,封装方式等特征各不相同,NAL 这一概念的提出 提供了一个视频编码器和传输系统的友好接口,使得编码后的视频数据能够有效地在各种不同的网络环境 中传输。

2.NAL 单元

NAL 单元是 NAL 的基本语法结构,它包含一个字节的头信息和一系列来自 VCL 的称为原始字节序列载荷 (RBSP)的字节流。头信息中包含着一个可否丢弃的指示标记,标识着该 NAL 单元的丢弃能否引起错误 扩散,一般,如果 NAL 单元中的信息不用于构建参考图像,则认为可以将其丢弃;最后包含的是 NAL 单 元的类型信息,暗示着其内含有效载荷的内容。 送到解码器端的 NAL 单元必须遵守严格的顺序,如果应 用程序接收到的 NAL 单元处于乱序,则必须提供一种恢复其正确顺序的方法。

3.NAL 实现编解码器与传输网络的结合

NAL 提供了一个编解码器与传输网络的通用接口,而对于不同的网络环境,具体的实现方案是不同的。 对于基于流的传输系统如 H.320、MPEG 等,需要按照解码顺序组织 NAL 单元,并为每个 NAL 单元增加 若干比特字节对齐的前缀以形成字节流;对于 RTP/UDP/IP 系统,则可以直接将编码器输出的 NAL 单元 作为 RTP 的有效载荷;而对于同时提供多个逻辑信道的传输系统,甚至可以根据重要性将不同类型的 NAL 单元在不同服务质量的信道中传输。

4.结论

为了实现编解码器良好的网络适应性,需要做两方面的工作:第一、在 Codec 中将 NAL 这一技术完整而 有效的实现;第二、在遵循 H.264/AVC NAL 规范的前提下设计针对不同网络的最佳传输方案。如果实现 了以上两个目标,所实现的就不仅仅是一种视频编解码技术,而是一套适用范围很广的多媒体传输方案, 该方案适用于如视频会议,数据存储,电视广播,流媒体,无线通信,远程监控等多种领域。

NALU 类型

标识 NAL 单元中的 RBSP 数据类型,其中,nal_unit_type 为 1, 2, 3, 4, 5 的 NAL 单元称为 VCL 的 NAL
单元,其他类型的 NAL 单元为非 VCL 的 NAL 单元。
• 0:未规定
• 1:非IDR图像中不采用数据划分的片段
• 2:非IDR图像中A类数据划分片段
• 3:非IDR图像中B类数据划分片段
• 4:非IDR图像中C类数据划分片段
• 5:IDR图像的片段
• 6:补充增强信息(SEI)
• 7:序列参数集(SPS)
• 8:图像参数集(PPS)
• 9:分割符
• 10:序列结束符
• 11:流结束符
• 12:填充数据
• 13:序列参数集扩展
• 14:带前缀的NAL单元
• 15:子序列参数集
• 16–18:保留
• 19:不采用数据划分的辅助编码图像片段
• 20:编码片段扩展
• 21–23:保留
• 24–31:未规定

NAL 在多媒体传输、存储系统中的应用

NAL 的头占用了一个字节,按照比特自高至低排列可以表示如下:
0AABBBBB
其中,AA 用于表示该 NAL 是否可以丢弃(有无被其后的 NAL 参考),00b 表示没有参考作用,可丢弃,如 B slice、SEI 等,非零——包括 01b、10b、11b——表示该 NAL 不可丢弃,如 SPS、PPS、I Slice、P Slice 等。 常用的 NAL 头的取值如:

0x67: SPS
0x68: PPS
0x65: IDR
0x61: non-IDR Slice 0x01: B Slice
0x06: SEI
0x09: AU Delimiter

由于 NAL 的语法中没有给出长度信息,实际的传输、存储系统需要增加额外的头实现各个 NAL 单元的定界。 其中,AVI 文件和 MPEG TS 广播流采取的是字节流的语法格式,即在 NAL 单元之前增加 0x00000001 的同步 码,则从 AVI 文件或 MPEG TS PES 包中读出的一个 H.264 视频帧以下面的形式存在:

00 00 00 01 06 ... 00 00 00 01 67 ... 00 00 00 01 68 ... 00 00 00 01 65 ...
SEI 信息            SPS            PPS             IDR Slice

而对于 MP4 文件,NAL 单元之前没有同步码,却有若干字节的长度码,来表示 NAL 单元的长度,这个长度 码所占用的字节数由 MP4 文件头给出;此外,从 MP4 读出来的视频帧不包含 PPS 和 SPS,这些信息位于 MP4 的文件头中,解析器必须在打开文件的时候就获取它们。从 MP4 文件读出的一个 H.264 帧往往是下面的形式 (假设长度码为 2 字节):

    00 19 06 [... 25 字节...] 24 aa 65 [... 9386 字节...]SEI 信息                    IDR Slice

H.264 中的 NAL 技术相关推荐

  1. H.264中的NAL技术

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

  2. 视频基础知识:浅谈视频会议中H.264编码标准的技术发展

    浅谈视频会议中H.264编码标准的技术发展 浅谈视频会议中H.264编码标准的技术发展 数字视频技术广泛应用于通信.计算机.广播电视等领域,带来了会议电视.可视电话及数字电视.媒体存储等一系列应用,促 ...

  3. 【H.264/AVC视频编解码技术详解】八、 熵编码算法(2):H.264中的熵编码基本方法、指数哥伦布编码

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  4. H.264中的SPamp;amp;SI帧技术简述

    H.264中的SP&SI帧技术简述 1           应用背景(详细可见文献[1,2])        流间切换.随机接入.错误恢复.快进快退.拼接 2           SP/SI帧 ...

  5. 八、H.264中的熵编码基本方法、指数哥伦布编码

    GitHub代码地址:点击这里 本节视频免费 1. H.264中的熵编码基本方法 在成功从NAL Unit中获取到语法元素的码流之后,接下来就是对语法元素的码流进行解析.根据我们在前面的博文中所讲述的 ...

  6. 八、 熵编码算法(2):H.264中的熵编码基本方法、指数哥伦布编码

    由于种种问题,哈夫曼编码并没有作为一种实际应用的技术使用到实际编码算法中:本节看下H.264中实际使用的熵编码算法:指数哥伦布编码 在H264官方标准文档的第九章由说明 一.H.264中熵编码基本方法 ...

  7. H.264中IDR帧和I帧区别

    IDR(Instantaneous Decoding Refresh)--即时解码刷新.       I和IDR帧都是使用帧内预测的.它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I ...

  8. H.264 中很有用的一些概念

    Q:PSNR 峰值信噪比 是根据它来取qp是不是? A:不是 和QP没有直接关系但是QP的选择会影响到PSNR Q: 如果不用率失真最优化,为什么选择SATD+delta×r(mv,mode)作为模式 ...

  9. H.264中的一些易混淆概念

    Q:PSNR 峰值信噪比 Q:是根据它来取qp是不是? A:不是, 和QP没有直接关系, 但是QP的选择会影响到PSNR Q: 如果不用率失真最优化, 为什么选择SATD+delta×r(mv,mod ...

最新文章

  1. 关于commonjs,AMD,CMD之间的异同
  2. figma下载_在Figma上进行原型制作的各种触发选项
  3. 研究综述 | 知识图谱划分算法研究综述
  4. 人工智障学习笔记——深度学习(1)神经网络
  5. 数组的遍历 java
  6. 补习系列(19)-springboot JPA + PostGreSQL
  7. Mangos源码分析(15):游戏对象的实现
  8. 筛选数据库_快速研读国外专利,轻松筛选核心技术…研发人必看6大数据库实用功能盘点!...
  9. 二叉搜索树的创建和比较
  10. 数据类型 --生成器
  11. 为什么网站总显示服务器不能创建对象,IE浏览器出现“Automation 服务器不能创建对象”解决教程...
  12. 计算机领域国际期刊,科学网—计算机国际期刊zz - 黄红星的博文
  13. 网站打开速度的查询 测试
  14. 【激光SLAM, ROS】激光畸变的校正
  15. 大数据开发好找工作么?还能入行么?
  16. MATLAB代码:新能源接入的电力市场主辅联合出清 出清模型以考虑安全约束的机组组合模型(SCUC)和经济调度模型(SCED)组成
  17. vue.cli3.0版本的用axios调用本地JSON数据报404解决方法
  18. 智能手机的中文输入法统计
  19. 国内电子计算机最牛的三所大学,我国理工类大学排名:为大家讲解我国最牛的三所理工类大学...
  20. 织梦网站巧用标签实现图片自动Alt功能,强化织梦seo效果

热门文章

  1. 远程控制软件Todesk声音解决方案
  2. Java输出某一年的日历(可改成输出某年某月的日历)
  3. 网页端HTML使用MQTTJs订阅RabbitMQ数据
  4. java 环境变量 linux_怎么配置java环境变量 linux
  5. java水浒征兵回合制_跨服神兵 Q版回合制网游 竞技新篇章——《大话水浒》官方网站——超梦幻回合制网游...
  6. android 长按缩放拖动_Android实现手势滑动多点触摸缩放平移图片效果
  7. 2022-2028全球与中国牙科氧化锆材料市场现状及未来发展趋势
  8. Python+Vue计算机毕业设计高校称职评审系统0odk8(源码+程序+LW+部署)
  9. js Uncaught SyntaxError: Unexpected token , in JSON at position xxx at JSON.parse问题解决
  10. 从程序员之死看 IT 人士如何摆脱低情商诅咒