NAL的基本特征

为了保证视频流在不同传输环境中能有效地传输,单纯的高压缩率是不够的,必须提供有效的方法,使视频流能够与传输协议无缝连接,才能应用到各种网络。在以前的标准中,MPEG标准包含系统层,同时制定了H.320或H.324等独立的标准来满足视频编码的网络适应性。然而,对于不同的通信系统来说,只有将网络适应性与视频编码紧密结合起来,才可能获得最佳的传输性能。因此在制定新一代国际视频编码标准H.264/AVC时就考虑了网络友好性,提出了网络抽象层NAL(Network Abstraction Layer)的概念。可根据实现的功能不同,将编码器分成两层:视频编码层VCL(Video Coding Layer)与网络抽象层NAL(Network Abstraction Layer)。

       NAL层作为VCL层与传输层的接口,主要负责VCL数据的打包、序列和图像的设置参数(parameter sets)传输、IDR(Instantaneous Decoding Refresh)等,使压缩后的数据能在不同网络传输。NAL层将视频编码数据抽象成NAL单元,根据不同的传输方式,进行NAL单元封装,H.264编码器分层结构图中的H.324M表示用于移动的H.324系统。

根据传输网络中数据交换方法的不同,有两种类型的NAL单元:
针对电路交换网,如H.320,MPEG.2等,提出字节流格式NAL单元。NAL层将视频编码数据封装成字节流格式的单元,每一个单元包含3个(或4个)字节的起始前缀,值0x000001

针对分组交换网,如RTP/IP或TCP/IP系统等,提出包传输NAL单元。NAL层将编码数据直接进行协议封装,而不必进行起始码填充。

        根据打包的数据类型不同,又可以将NAL单元分为VCL.NAL单元和非VCL.NAL单元。VCL.NAL单元包含视频残差编码数据,对其解码后能够重建图像。非VCL.NAL单元包含附加信息,如参数集和辅助增强信息(SEI:Supplemental Enhancement Information)等。

        其中参数集包含高层的语法元素,这些信息对解码而言非常重要。VCL.NAL单元解码必须参考参数集里的语法元素,主要有序列参数集和图像参数集。这些参数如果在传输中出错或丢失,将直接影响其它NAL单元的解码。通常这些参数集在VCL—NAL单元前传递,也可通过重复传输来提高其鲁棒性,防止数据丢失。在一些应用中,参数集可以和VCL.NAL单元在同一信道传输。在一些特殊环境下,可以采用比视频信道更可靠的传输机制来优先传递参数集。VCL层编码集中了近些年来视频编码方面的先进技术,并将它们很好结合起来,与以前的标准相比,在同等视觉质量的情况下可节省50%左右的码率。

        网络抽象,NAL负责使用下层网络的分段格式来封装数据,包括组帧、逻辑信道的信令定时信息的利用或发序列结束信号等。例如,NAL支持视频在电路交换信道上的传输格式,支持视频在Internet上利用RTP/UDP/IP传输的格式。NAL包括网络提取层的头信息、段结构信息和实际载荷信息,即上层的VCL数据。NAL提供适当的映射方法将头部信息和数据映射到传输层协议上,可以减少在分组交换传输种组帧和重同步所需要的资源开销。为了提高在不同特性的网络上定制VCL数据格式的能力,H.264的网络提取层在VCL和NAL之间定义了基于分组的接口规范、打包方式等,也包括了相应的信令内容。这样,高效率编码任务和网络友好性任务就由VCL和NAL分别完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux使用circos

1.在conda中安装bioconda conda install -c bioconda circos -y # 测试是否所有的module都安装好了 circos -module # 所有都显示OK则成功 ok 0.39 Font::TTF::Font ok 2.68 GD ok 0.2 GD::Polyline ... .... 2.检查模块是否齐全 circos -module 3.下…

下一步工作的一些思考和问题

前期PL和PS部分基本开发完成了,现在开始做界面交互集成的工作,总结一些思考和问题。 1,关于software cpu的计算时间,可能会比现在长。前期实验时是裸跑程序,加入操作系统时,由于系统的多任务,PS…

python numpy教程_Python中的Numpy入门教程

这篇文章主要介绍了 Python 中的 Numpy 入门教程,着重讲解了矩阵中的数组操作 , 需要的 朋友可以参考下 1 、 Numpy 是什么 很简单, Numpy 是 Python 的一个科学计算的库, 提供了矩阵运算的功能, 其一般与 Scipy 、 matplotlib 一…

jquery中的 jquery.contains(a,b)

jquery.contains(a,b) 判断元素 a中是否包含 b 元素: 源码: contains isNative(docElem.contains) || docElem.compareDocumentPosition ?function( a, b ) {var adown a.nodeType 9 ? a.documentElement : a,bup b && b.parentNode;return a bup || !!( bup &a…

【Mysql】数据库主从搭建-基于docker

后台可回复【1024】即可获取相关宝藏内容分享 :) 为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突…

塑料封装可靠性问题浅析

塑料封装可靠性问题浅析 摘 要: 塑料封装器件在现在的封装产业中具有无可比拟的优势,诸如成本、可靠性、尺寸以及重量等.但是还是有相当一部分人对于塑封器件的可靠性持怀疑态度.文章的目的就是使读者能够更深入地了解到塑封器件的可靠性,尤其是在塑封器件应用于高…

java创建对象new后面为啥可以传入参数_你有认真了解过自己的“Java对象”吗?渣男...

对象在 JVM 中是怎么存储的对象头里有什么?作为一名 Javaer,生活中的我们可能暂时没有对象,但是工作中每天都会创建大量的 Java 对象,你有试着去了解下自己的“对象”吗?我们从四个方面重新认识下自己的“对象”创建对…

【技术+某度面经】Jenkins 内容+百度面经分享

后台可回复【1024】即可获取相关宝藏内容分享 :) Q1: Jenkins是什么?? A:Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 今天文章分为两部分 :) PART1 Jenkins技术分享 / PART2 关…

xcode多工程联编 - 详细教程

2019独角兽企业重金招聘Python工程师标准>>> 一、创建workspace (MyProject)放入MyProject文件夹内 二、先 打开workspace 创建app1工程 点击next之后注意选择 workspace 同理创建app2 或者更多的工程 完成之后的工作 重新打开workspace的样子 三、使用pod 库 首先…

动态规划入门 合并石子 COGS1660 石子合并

1660. 石子合并(加强版) ★★ 输入文件:stone3.in 输出文件:stone3.out 简单对比时间限制:1 s 内存限制:256 MB 【题目描述】 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定…

python实现百钱买百鸡

个人博客点这里 Python语言基础(百元买百鸡) 需求分析 百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单: 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱, 用100文钱买一百只鸡,其中公鸡,母鸡…

实数是不是python数据类型_python 基本数据类型

一、数据类型及操作 #整数类型,和数学中整数的一样,可正可负 *十进制:210 *二进制:以0B或者0b开头:0b1010 *八进制:以0O或者0o开头:0o123 *十六进制:以0x或者0X开头:0x9a…

python之用循环实现五子棋小程序

在python中我们学过流程控制中的循环结构,现在我们来进行一个小应用的练习 本程序是通过循环控制结构来实现五子棋小程序的 游戏规则 五子棋的规则如下: 对局双方各执一色棋子。空棋盘开局。黑先、白后,交替下子,每次只能下一子。棋子下在棋盘的空白点…

Principle of Computing (Python)学习笔记(7) DFS Search + Tic Tac Toe use MiniMax Stratedy

1. Trees Tree is a recursive structure. 1.1 math nodes https://class.coursera.org/principlescomputing-001/wiki/view?pagetrees 1.2 CODE无parent域的树 http://www.codeskulptor.org/#poc_tree.py class Tree:"""Recursive definition for tree…

C#线程篇---Task(任务)和线程池不得不说的秘密

我们要知道的是,QueueUserWorkItem这个技术存在许多限制。其中最大的问题是没有一个内建的机制让你知道操作在什么时候完成,也没有一个机制在操作完成是获得一个返回值,这些问题使得我们都不敢启用这个技术。 Microsoft为了克服这些限制&…

关于编译FFMPEG的初级教程

关于编译FFMPEG的初级教程1.首先我们要下载相关工具,这里不多说,大家按照我的地址去下载文件就好了 MINGW下载地址:http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1.exe?download 然后在下载MSYS :http://prdownloads.…

电子科学与技术相关索引汇总

电子科学与技术相关索引汇总 关于安装deepinwindow10双系统有时没有声音的问题关于deepin系统安装design compiler的问题解答基于51单片机的交通灯控制设计基于物联网的智能垃圾桶设计基于FPGA 的8b10b编解码电路前端电路设计金属磁记忆传感器封装集成电路版图与工艺课程设计之…

【百度面试】闸机测试场景

面试被问到这一题思路想法: 自己找了相关内容充实自我。内容分享如下: 随着人脸识别技术的成熟,闸机行业大量应用人脸识别算法,只因现今的人脸识别算法也已经能够保证识别率、识别速度、误识率和拒识率等各项指标的优异性&#x…

前后端分离项目如何部署_前后端分离项目,如何解决跨域问题?

跨域资源共享(CORS)是前后端分离项目很常见的问题,本文主要介绍当SpringBoot应用整合SpringSecurity以后如何解决该问题。01 什么是跨域问题?CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同…