H.264码流结构解析

合集下载

H264详解

H264详解

h.264详解:什么是H.264编码H.264是什么格式2009-04-24 12:53一、H.264与其他标准的比较1.1在画质上H.264概述随着市场的需求,在尽可能低的存储情况下获得好的图像质量和低带宽图像快速传输已成为视频压缩的两大难题。

为此IEO/IEC/和ITU-T两大国际标准化组织联手制定了新一代视频压缩标准H.264。

1.2在编码上H.264和以前的标准一样,也是DPCM加变换编码的混合编码模式。

但它采用“回归基本”的简洁设计,不用众多的选项,获得比MEPG-4好得多的压缩性能;H.264加强了对各种信道的适应能力,采用“网络友好”的结构和语法,有利于对误友和丢包的处理;H.264应用目标范围较宽,可以满足不同速率、不同解析度以及不同传输(存储)场合的需求。

1.3在技术上H.264标准中有多个闪光之处,如统一的VLC符号编码,高精度、多模式的位移估计,基于4块的整数变换、分层的编码语法等。

这些措施使得H.264得算法具有很高的编码效率,在相同的重建图像质量下,能够比H.263节约50%左右的码率。

H.264的码流结构网络适应性强,增加了差错恢复能力,能够很好地适应IP和无线网络的应用。

1.4在传输上H.264能以较低的数据速率传送基于联网协议(IP)的视频流,在视频质量、压缩效率和数据包恢复丢失等方面,超越了现有的MPEG-2、MPEG-4和H.26x视频通讯标准,更适合窄带传输。

1.5在算法上MPEG-1标准视频编码部分的基本得法与H.261/H.263相似,也采用运动补偿的帧间预测、二维DCT、VLC游程编码等措施。

此外还引入了帧内帧(I)、预测帧(P)、双向预测帧(B)和直流帧(D)等概念,进一步提高了编码效率。

在MPEG-1的基础上,MPEG-2标准在提高图像分辨率、兼容数字电视等方面做了一些改进,例如它的运动适量的精度为半像素;在编码运算中(如运动估计和DCT)区分“帧”和“场”;引入了编码的可分级性技术,如空间可分级性、时间可分级性和信噪比可分级性等。

RTP协议全解(H264码流和PS流)-2015-4-22

RTP协议全解(H264码流和PS流)-2015-4-22

RTP协议全解(H264码流和PS流)写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析,其中借鉴了很多文章,我都列在了文章最后,在此表示感谢。

互联网的发展离不开大家的无私奉献,我决定从我做起,希望大家支持。

原创不易,转载请附上链接,谢谢/chen495810242/article/details/392073051、RTP Header解析图11) V:RTP协议的版本号,占2位,当前协议版本号为22) P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。

3) X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头4) CC:CSRC计数器,占4位,指示CSRC 标识符的个数5) M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。

6) PT: 有效荷载类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。

7) 序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。

这个字段当下层的承载协议用UDP的时候,网络状况不好的时候可以用来检查丢包。

同时出现网络抖动的情况可以用来对数据进行重新排序,序列号的初始值是随机的,同时音频包和视频包的sequence是分别记数的。

8) 时戳(Timestamp):占32位,必须使用90 kHz 时钟频率。

时戳反映了该RTP报文的第一个八位组的采样时刻。

接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。

9) 同步信源(SSRC)标识符:占32位,用于标识同步信源。

该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。

10) 特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。

H264编解码协议详解

H264编解码协议详解

H264编解码协议详解H.264编解码协议,也被称为AVC(Advanced Video Coding),是一种广泛应用于视频压缩的标准。

它是一种基于帧的压缩算法,可以将高质量的视频数据以较低的比特率传输和存储。

以下是H.264编解码协议的详细解释:1.压缩结构H.264使用了多种技术来实现高效率的视频压缩。

它使用了预测编码、变换编码和熵编码等多种技术。

预测编码通过利用帧间和帧内的冗余性,对视频进行空间和时间上的预测。

变换编码则通过对预测误差进行离散余弦变换(DCT),在频域上进行编码。

最后,熵编码使用了熵编码表将变换后的数据进行进一步的压缩。

2.帧结构H264将视频数据划分为一系列的帧,每个帧包含了许多宏块(macroblock)。

其中,关键帧(I帧)是完全独立的帧,它包含了视频的全局信息。

预测帧(P帧)和双向预测帧(B帧)则通过对前一帧和前后一帧进行预测来进行编码。

P帧只依赖前一帧,而B帧则依赖前后两帧。

这种结构可以进一步提高视频压缩的效率。

3.量化参数H.264使用量化参数对预测误差进行编码。

量化参数决定了每个预测误差值的精度,较大的量化参数会导致更高的压缩率,但也会导致较大的失真。

编码器和解码器可以通过动态调整量化参数来平衡压缩率和失真。

4.帧间预测帧间预测是H.264压缩的核心技术之一、它通过对前后帧的像素进行比较,预测当前帧的像素值。

如果在帧间没有大的运动,那么预测误差就会较小,从而达到更好的压缩效果。

帧间预测有多种模式,包括帧间直接模式(inter-direct mode)、帧间双向模式(inter-bidirect mode)和帧间skip模式(inter-skip mode)等。

5.熵编码H.264使用了基于上下文的自适应变长编码(CAVLC)和基于上下文的自适应二进制算术编码(CABAC)两种熵编码技术。

CAVLC主要用于编码量化系数和运动矢量等数据,而CABAC主要用于编码预测模式和其他语法元素。

H.264编码技术简介.

H.264编码技术简介.

H.264编码技术简介摘要:本文介绍了H.264编码基本概况,技术特点,并与其他标准进行了比较。

简单介绍了H.264视频编码标准的几个关键技术,并针对目前H.264在监控领域的应用做了讲解。

目录摘要: (1)一.引言 (2)二. H.264视频编码基本概况 (2)2.1 什么是H.264编码? (2)2.2 720P H.264高清成市场主流 (2)2.3 H.264 视频编码标准状况 (2)2.4 H.264 视频编码技术先进性 (3)2.5 H.264的核心竞争力是什么? (5)2.6 Main Profile (6)三、H.264与其他标准的比较 (6)3.1H.264与其他标准的比较 (6)3.2 H.264的技术特点 (8)3.2.1 分层设计 (8)3.2.2 高精度、多模式运动设计 (8)3.2.3 帧内预测功能 (8)3.2.4 4×4块的整数变换 (8)3.2.5 统一的VLC (8)3.3 H.264的主要特点 (9)四、关键技术 (10)五、H.264在监控的应用 (12)5.1 TOYA SDVR 7IV 系统简介 (12)5.2 TOYA SDVR 7IV 系统主要特点 (12)5.3 主要技术规格 (13)5.4 系统功能 (13)5.5 TOYA SDVR 7IV系统应用 (13)六、H.264的总体优缺点 (14)七、小结 (15)八、参考文献 (16)一.引言随着社会的不断进步和多媒体信息技术的发展,人们对信息的需求越来越丰富,方便、快捷、灵活地通过语音、数据、图像与视频等方式进行多媒体通信已成不可或缺的工具。

其中视觉信息给人们直观、生动的形象,因此图像与视频的传输更受到广泛的关注。

然而,视频数据具有庞大的数据量,以普通的25帧每秒,CIF格式(分辨率为352×288)的视频图像为例,一秒钟的原始视频数据速率高达3.8M字节。

不对视频信号进行压缩根本无法实时传输如此庞大的数据量,因此,视频压缩技术成为研究热点。

数字视频压缩技术H264详解

数字视频压缩技术H264详解

数字视频压缩技术H264详解一个基于分组方式的接口,打包和相应的信令属于NAL的一部分。

这样,高编码效率和网络友好性的任务分别由VCL和NAL来完成。

VCL层包括基于块的运动补偿混合编码和一些新特性。

与前面的视频编码标准一样,H.264没有把前处理和后处理等功能包括在草案中,这样可以增加标准的灵活性。

NAL负责使用下层网络的分段格式来封装数据,包括组帧、逻辑信道的信令、定时信息的利用或序列结束信号等。

例如,NAL支持视频在电路交换信道上的传输格式,支持视频在Internet上利用RTP/UDP/IP传输的格式。

NAL包括自己的头部信息、段结构信息和实际载荷信息,即上层的VCL数据。

(如果采用数据分割技术,数据可能由几个部分组成)。

(2)高精度、多模式运动估计H.264支持1/4或1/8像素精度的运动矢量。

在1/4像素精度时可使用6抽头滤波器来减少高频噪声,对于1/8像素精度的运动矢量,可使用更为复杂的8抽头的滤波器。

在进行运动估计时,编码器还可选择“增强”内插滤波器来提高预测的效果。

在H.264的运动预测中,一个宏块(MB)可以按图2被分为不同的子块,形成7种不同模式的块尺寸。

这种多模式的灵活和细致的划分,更切合图像中实际运动物体的形状,大大提高了运动估计的精确程度。

在这种方式下,在每个宏块中可以包含有1、2、4、8或16个运动矢量。

在H.264中,允许编码器使用多于一帧的先前帧用于运动估计,这就是所谓的多帧参考技术。

例如2帧或3帧刚刚编码好的参考帧,编码器将选择对每个目标宏块能给出更好的预测帧,并为每一宏块指示是哪一帧被用于预测。

(3)4某4块的整数变换H.264与先前的标准相似,对残差采用基于块的变换编码,但变换是整数操作而不是实数运算,其过程和DCT基本相似。

这种方法的优点在于:在编码器中和解码器中允许精度相同的变换和反变换,便于使用简单的定点运算方式。

也就是说,这里没有“反变换误差”。

变换的单位是4某4块,而不是以往常用的8某8块。

【知识点】H264,H265硬件编解码基础及码流分析

【知识点】H264,H265硬件编解码基础及码流分析

【知识点】H264,H265硬件编解码基础及码流分析前⾔⾳视频开发需要你懂得⾳视频中⼀些基本概念,针对编解码⽽⾔,我们必须提前懂得编解码器的⼀些特性,码流的结构,码流中⼀些重要信息如sps,pps,vps,start code以及基本的⼯作原理,⽽⼤多同学都只是⼀知半解,所以导致代码中的部分内容虽可以简单理解却不知其意,所以,在这⾥总结出了当前主流的H.264,H.265编码相关的原理,以供学习.1. 概览1.1. 为什么要编码众所周知,视频数据原始体积是巨⼤的,以720P 30fps的视频为例,⼀个像素⼤约3个字节,如下所得,每秒钟产⽣87MB,这样计算可得⼀分钟就将产⽣5.22GB。

数据量/每秒=1280*720*33*3/1024/1024=87MB因此,像这样体积重⼤的视频是⽆法在⽹络中直接传输的.⽽视频编码技术也就因运⽽⽣.关于视频编码原理的技术可以参考本⼈其他⽂章,这⾥不做过多描述.1.2. 编码技术经过很多年的开发迭代,已经有很多⼤⽜实现了视频编码技术,其中最主流的有H.264编码,以及新⼀代的H.265编码,⾕歌也开发了VP8,VP9编码技术.对移动端⽽⾔,苹果内部已经实现了如H.264,H.265编码,我们需要使⽤苹果提供的VideoToolbox框架来实现它.1.3. 编码分类软件编码(简称软编):使⽤CPU进⾏编码。

硬件编码(简称硬编):不使⽤CPU进⾏编码,使⽤显卡GPU,专⽤的DSP、FPGA、ASIC芯⽚等硬件进⾏编码。

优缺点软编:实现直接、简单,参数调整⽅便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常⽐硬编码要好⼀点。

硬编:性能⾼,低码率下通常质量低于硬编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基本等同于软编码。

iOS系统中的硬编码苹果在iOS 8.0系统之前,没有开放系统的硬件编码解码功能,不过Mac OS系统⼀直有,被称为Video ToolBox的框架来处理硬件的编码和解码,终于在iOS 8.0后,苹果将该框架引⼊iOS系统。

H.264视频编码标准分析和算法优化

H.264视频编码标准分析和算法优化

H.264编码标准的分析和算法优化一、研究背景:随着社会的不断进步和多媒体信息技术的发展,人们对信息的需求越来越丰富,方便、快捷、灵活地通过语音、数据、图像与视频等方式进行多媒体通信已成不可或缺的工具。

其中视觉信息给人们直观、生动的形象,因此图像与视频的传输更受到广泛的关注。

然而,视频数据具有庞大的数据量,以普通的25帧每秒,CIF格式(分辨率为352×288)的视频图像为例,一秒钟的原始视频数据速率高达3.8M字节。

不对视频信号进行压缩根本无法实时传输如此庞大的数据量,因此,视频压缩技术成为研究热点。

随着近几年来视频图像传输领域的不断扩展,以往的标准己经难于适应不同信道的传输特征及新兴的应用环境。

为此,ISO/IEC&ITU-T共同开发了最新视频编码标准H.264/AVC。

相对以前的视频编码标准,H.264集成了许多新的视频压缩技术,具有更高的压缩效率和图像质量。

在同等的图像质量条件下,H.264的数据压缩比是应用于当前DVD系统MPEG-2的2~3倍,比MPEG-4高1.5~2倍,并且具有更好的网络友好性。

但是H.264高压缩比的代价是编码器计算复杂度大幅度地提高。

因此在保持编码效率几乎不变的同时尽可能提高编码速度是H.264/AVC视频编码标准能否得到广泛应用的关键。

在上述研究背景下,本文深入探讨了H.264/AVC标准,分析了编码器主要耗时模块的工作原理,提出三种降低H.264/AVC高计算复杂度的优化算法――快速帧内预测模式选择算法、快速帧间预测模式选择算法以及快速运动估计算法。

实验结果表明:本文所提快速算法都可大幅度地降低H.264编码器的计算复杂度,并且保持基本不变的编码效率。

二、新一代视频编码标准H.264简介:编码标准演进过程:H.261 MPEG-1 MPEG-2 H.263 MPEG-4从视频编码标准的发展历程来看,视频编码标准都有一个不断追求的目标:在尽可能低的码率(或存储容量)下获得尽可能好的图像质量。

H.264视频编码介绍资料

H.264视频编码介绍资料
• H263++在H263+基础上增加了3个选项,增强码流在恶劣信道上的抗 误码性和编码效率。 • 选项U—增强型参考帧选择,提供增强的编码效率和信道错误再生能 力。 • 选项V—数据分片选择,提供增强型的抗误码能力(特别是在传输过程 中本地数据被破坏的情况下),通过分离视频码流中DCT的系数头和 运动矢量数据,采用可逆编码方式保护运动矢量。 • 选项W—在H263+的码流中补充信息,保证增强型的反向兼容性。
H.264解码器
H.264采用的新技术
• H.264标准中诸如帧间预测、变换、量化、熵编码等基本功能模块与 前几个标准(MPEG-1, MPEG-2, MPEG-4, H.261, H.263)并无太大 • • • • • • • 区别,变化主要体现在功能模块的具体细节上。 分层设计 帧间预测编码 帧内预测编码 整数变换 量化处理 熵编码 环路滤波
TTS图解
• 如图所示,搜索步骤如下:
– 第一步:从搜索起点开始,以最大搜索 长度的一半为步长,在周围距离步长的 8个点处进行块匹配计算并比较,图中 用正方形表示,1号为该次搜索最优点。 – 第二步:将步长减半,中心点移到上一 步的最小匹配点,重新在周围距离步长 的8个点处进行块匹配计算并比较,图 中用圆形表示,2号为该次搜索最优点。 – 第三步:在上一步得到的最小匹配点的 中心及周围8个点处找出最匹配点,该 点即为所求,图中用菱形表示,3号为 该次搜索最优点
块的搜索与匹配
• 搜索起点的选择很重要。 • 块搜索算法:
①全搜索法FS ②三步搜索法TTS ③菱形搜索法DS ④六边形搜索法 注:有不少对上述方法的改进及新方法。
• 块匹配准则:
①最小绝对差MAD ②最小均方误差MSE ③归一化互相关函数NCCF ④求和绝对误差SAD

H264(NAL简介与I帧判断)

H264(NAL简介与I帧判断)

H264(NAL简介与I帧判断)1、NAL全称Network Abstract Layer, 即⽹络抽象层。

在H.264/AVC视频编码标准中,整个系统框架被分为了两个层⾯:视频编码层⾯(VCL)和⽹络抽象层⾯(NAL)。

其中,前者负责有效表⽰视频数据的内容,⽽后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。

因此我们平时的每帧数据就是⼀个NAL单元(SPS与PPS除外)。

在实际的H264数据帧中,往往帧前⾯带有00 00 00 01 或 00 00 01分隔符,⼀般来说编码器编出的⾸帧数据为PPS与SPS,接着为I帧……如下图:2、如何判断帧类型(是图像参考帧还是I、P帧等)?NALU类型是我们判断帧类型的利器,从官⽅⽂档中得出如下图:我们还是接着看最上⾯图的码流对应的数据来层层分析,以00 00 00 01分割之后的下⼀个字节就是NALU类型,将其转为⼆进制数据后,解读顺序为从左往右算,如下:(1)第1位禁⽌位,值为1表⽰语法出错(2)第2~3位为参考级别(3)第4~8为是nal单元类型例如上⾯00000001后有67,68以及65其中0x67的⼆进制码为:0110 01114-8为00111,转为⼗进制7,参考第⼆幅图:7对应序列参数集SPS其中0x68的⼆进制码为:0110 10004-8为01000,转为⼗进制8,参考第⼆幅图:8对应图像参数集PPS其中0x65的⼆进制码为:0110 01014-8为00101,转为⼗进制5,参考第⼆幅图:5对应IDR图像中的⽚(I帧)所以判断是否为I帧的算法为:(NALU类型 & 0001 1111) = 5 即 NALU类型 & 31 = 5⽐如0x65 & 31 = 5帧格式H264帧由NALU头和NALU主体组成。

NALU头由⼀个字节组成,它的语法如下:+---------------+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|F|NRI| Type |+---------------+F: 1个⽐特.forbidden_zero_bit. 在 H.264 规范中规定了这⼀位必须为 0.NRI: 2个⽐特.nal_ref_idc. 取00~11,似乎指⽰这个NALU的重要性,如00的NALU解码器可以丢弃它⽽不影响图像的回放,0~3,取值越⼤,表⽰当前NAL越重要,需要优先受到保护。

h264 Nalu 详解

h264 Nalu 详解

h264 Nalu 详解1.引言H.264的主要目标:1.高的视频压缩比2.良好的网络亲和性解决方案:VCL video coding layer 视频编码层NAL network abstraction layer 网络提取层VCL:核心算法引擎,块,宏块及片的语法级别的定义NAL:片级以上的语法级别(如序列参数集和图像参数集),同时支持以下功能:独立片解码,起始码唯一保证,SEI以及流格式编码数据传送VCL设计目标:尽可能地独立于网络的情况下进行高效的编解码NAL设计目标:根据不同的网络把数据打包成相应的格式,将VCL产生的比特字符串适配到各种各样的网络和多元环境中。

NALU头结构:NALU类型(5bit)、重要性指示位(2bit)、禁止位(1bit)。

NALU类型:1~12由H.264使用,24~31由H.264以外的应用使用。

重要性指示:标志该NAL单元用于重建时的重要性,值越大,越重要。

禁止位:网络发现NAL单元有比特错误时可设置该比特为1,以便接收方丢掉该单元。

2.NAL语法语义NAL层句法:在编码器输出的码流中,数据的基本单元是句法元素。

句法表征句法元素的组织结构。

语义阐述句法元素的具体含义。

分组都有头部,解码器可以很方便的检测出NAL的分界,依次取出NAL进行解码。

但为了节省码流,H.264没有另外在NAL的头部设立表示起始位置的句法元素。

如果编码数据是存储在介质上的,由于NAL是依次紧密相连的,解码器就无法在数据流中分辨出每个NAL的起始位置和终止位置。

解决方案:在每个NAL前添加起始码:0X000001在某些类型的介质上,为了寻址的方便,要求数据流在长度上对齐,或某个常数的整数倍。

所以在起始码前添加若干字节的0来填充。

检测NAL的开始:0X000001和0X000000我们必须考虑当NAL内部出现了0X000001和0X000000解决方案:H.264提出了“防止竞争”机制:0X000000——0X000003000X000001——0X000003010X000002——0X000003020X000003——0X00000303为此,我们可以知道:在NAL单元中,下面的三字节序列不应在任何字节对齐的位置出现0X0000000X0000010X000002Forbidden_zero_bit =0;Nal_ref_idc:表示NAL的优先级。

H.264基本档次码流解析的专用处理器设计

H.264基本档次码流解析的专用处理器设计
计 了 ASP A piain S e ic Itgae rc so ) 理 I ( p l t p cf ne rtd Po es r处 c o i 器 。该 处 理 器是 H.6 2 4基 本 档 次 解 码 器[的组 成 部 分 , 4 1 它 采 用 软 硬 件 联 合设 计 的 方 法 ,通 过 在 处理 器 内核 中 加 入
tme fse h n re i s a tr t a te —ba e s fwa e o u in. s d ot r s l to
【 e o d 】A I K y w rs SP;C V C;E p G lm o i ;H2 4A C AL x — oo b cdn g . /V 6
1 引 言
H2 4视 频 压 缩 标 准广 泛 应 用 于 移 动 通 信 、 V、 . 6 I 视 频 会 议 、 互 视 频 等 领 域 。 . 4标 准 的高 编 码 效 率 是 通 交 H2 6
过 采 用 一 系 列 新 编 码 方 法 获 得 的I 1这 些 工 具 主要 包 括 】,
插 值精度达 到 1 / 素 且 预 测 块 大 小 可 变 的运 动 预 测 、 4像
帧 内 预测 、 数 DC 整 T变 换 、 块 边 界 效 应 滤 波 器 以 及 上 去 下 文 自适 应 变 长 编 码 ( o tx d pie aibe L n t C ne tA a t V r l e gh v a
i s rp sd f e i p o o e . T e h r w r e o i g mo u e c n d c d n y o n b t sr a p r c ce An h r pa e o e o e s mb l i t m e y l . i — e d t e p o o e e in i 0

H264 NAL层解析

H264 NAL层解析
编码视频序列
一个编码视频序列由一串连续的存储单元组成,使用同一序列参数集。每个视频序列可独立解码。编码序列的开始是即时刷新存储单元(ID R)。IDR是一个I帧图像,表示后面的图像不用参考以前的图像。一个NAL单元流可包含一个或更多的编码视频序列。
RTP协议:
实时传输协议(Real-time Transport Protocol,RTP)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(单播)或者 一对多(multicast,多播)的网络环境中实现传流媒体数据的实时传输。RTP通常使用UDP来进行多媒体数据的传输,但如果需要的话可以使用 TCP或者ATM等其它协议,整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议。实时流协议(Real Time Streaming Protoco l, RTSP)最早由Real Networks和Netscape公司共同提出,它位于RTP和RTCP之上,其目的是希望通过IP网络有效地传输多媒体数据。
存储单元:
一组指定格式的NAL单元称为存储单元,每个存储单元对应一个图像。每个存储单元包含一组VCL NAL单元,组成一个主编码图像,VCL NAL单元 由表示视频图像采样的像条所组成。存储单元前面可以加一个前缀,分界存储单元,附加增强信息(SEI)(如图像定时信息)也可以放在主编 码图像的前面。主编码图像后附加的VCL NAL单元,包含同一图像的冗余表示,称为冗余编码图像,当主编码图像数据丢失或损坏时,可用冗余 编码图像解码。
边界定位。还有一种可选特性,在字节流中增加附加数据,用做扩充发送数据量,能实现快速边界定位,恢复同步 Case2:IP网络的RTP打包封装 分组打包的规则
(1)额外开销要少,使MTU尺寸在100~64k字节范围都可以; (2)不用对分组内的数据解码就可以判别该分组的重要性; (3)载荷规范应当保证不用解码就可识别由于其他的比特丢失而造成的分组不可解码; (4)支持将NALU分割成多个RTP分组; (5)支持将多个NALU汇集在一个RTP分组中。 RTP的头标可以是NALU的头标,并可以实现以上的打包规则。 一个RTP分组里放入一个NALU,将NALU(包括同时作为载荷头标的NALU头)放入RTP的载荷中,设置RTP头标值。为了避免IP层对大分组的再一 次分割,片分组的大小一般都要小于MTU尺寸。由于包传送的路径不同,解码端要重新对片分组排序,RTP包含的次序信息可以用来解决这一问 题。 NALU分割 对于预先已经编码的内容,NALU可能大于MTU尺寸的限制。虽然IP层的分割可以使数据块小于64千字节,但无法在应用层实现保护,从而降 低了非等重保护方案的效果。由于UDP数据包小于64千字节,而且一个片的长度对某些应用场合来说太小,所以应用层打包是RTP打包方案的一 部分。 新的讨论方案(IETF)应当符合以下特征: (1)NALU的分块以按RTP次序号升序传输; (2)能够标记第一个和最后一个NALU分块; (3)可以检测丢失的分块。 NALU合并 一些NALU如SEI、参数集等非常小,将它们合并在一起有利于减少头标开销。已有两种集合分组: (1)单一时间集合分组(STAP),按时间戳进行组合; (2)多时间集合分组(MTAP),不同时间戳也可以组合。 NAL规范视频数据的格式,主要是提供头部信息,以适合各种媒体的传输和存储。NAL支持各种网络,包括: 1.任何使用RTP/IP协议的实时有线和无线Internet 服务 2.作为MP4文件存储和多媒体信息文件服务 3.MPEG-2系统 4.其它网 NAL规定一种通用的格式,既适合面向包传输,也适合流传送。实际上,包传输和流传输的方式是相同的,不同之处是传输前面增加了一个起始 码前缀 在类似Internet/RTP面向包传送协议系统中,包结构中包含包边界识别字节,在这种情况下,不需要同步字节。 NAL单元分为VCL和非VCL两种 VCL NAL单元包含视频图像采样信息, 非VCL包含各种有关的附加信息,例如参数集(头部信息,应用到大量的VCL NAL单元)、提高性能的附加信息、定时信息等 参数集:

解码器流程图 Visuo H.264(JM12.2)

解码器流程图 Visuo H.264(JM12.2)

H.264(JM12.2)解码流程理解版本: 1时间:2010.2-2010.3邮件:zjhzchen@主要包括以下两个方面:1.解码标准原理2.JM代码中的解码流程一、H.264解码标准解码器功能框图如下:解码器功能框图详细的解码流程如下:详细的解码流程二、JM12.2的解码主控流程解码总流程帧解码流程(decode one frame)解码一帧的流程读一个片(read_new_slice)解码IDR包括图像的帧号,计算POC,为存储图像分配空间,错误恢复的重设置解码IDR灵活移动宏块的初始化(FmoInit)1. mapUnitToSliceGroupMap变量mapUnitToSliceGroupMap的计算流程2. MbToSliceGroupMap函数NextMbAddress( n )的流程图像序列号的计算(decode_poc)参考帧列表的重排序(reorder_lists)解码一个片(decode_one_slice )为直接预测模式做一些准备工作:获取co_located 图像、计算mv_scale解码一个片熵解码:包括解出宏块类型、预测模式、MVD 、CBP 、残差(包括反量化操作)等反变换及运动补偿:反量化反变换、运动补偿、像素重构等写入各个8*8块的预测模式及运动向量到错误隐藏变量中保存相关的片参数计算宏块,块,像素的坐标;宏块结构语法元素的初始化;相邻块的可用性;以及滤波参数开始一个宏块(start_macroblock)开始一个宏块读一个宏块(read_one_macroblock)// intra frame将亮度块中的16个4*4块的预测模式设置为2(直接预测),运动向量置0宏块(也即P_Skip类型宏块)。

无残MVD。

直接利用预测MV得到像素预=像素预测值从NAL中读取运动矢量信息(readMotionInfoFromNAL)从NAL中读运动矢量信息从NAL中读取CBP以及残差信息(readCBPandCoeffsFromNAL)如果当前宏块不是帧内16*16或者I_PCM类型宏块则从码流中读取CBP从NAL中读取CBP和残差信息解码一个宏块(decode_one_macroblock)解码一个宏块的流程注:此处的解码包括预测信息,残差的反变换以及图像的重建将宏块的预测模式以及运动信息写入错误隐藏变量中(ercWriteMBMODEandMV)将预测模式和运动信息写到错误隐藏变量中退出图像(exit_picture)退出图像图像的去块滤波(DeblockPicture)图像的去块滤波图像的错误检测以及处理图像的错误检测以及处理store_picture到解码缓冲区(store_picture_in_dpb)IDR内存管理(idr_memory_management)IDR内存管理adaptive-内存管理控制(adaptive_memory_management)参考图像的自适应内存控制标记过程分配LongTermFrameIdx给一个短期参考图像插入图像到DPB(insert_picture_in_dpb)插入图像到DPBflush-DPB(flush_dpb)将DPBB.fs的参考标记置为0Flush-DPB。

小科普视频常用的H264和H265是啥?

小科普视频常用的H264和H265是啥?

⼩科普视频常⽤的H264和H265是啥?如果你尝试过渲染⼀段视频,或者做直播推流,⼀定会知道有H.264这么个东西,后来⼜出现了编码格式,⽽我们平时所说的MP4、AVI、个H.265,这⼜是什么呢?其实他们都属于视频的编码格式封装格式,也就是⼀个⽔瓶⼦,FLV、MOV这些,都属于封装格式⽔瓶⼦⾥能装的液体有很多,那么能封装的编码格式也就各式各样了。

封装格式把视频、⾳频、媒体信息、字幕等统统灌进去,但并不能决定我们的视频质量。

⽽编码格式是⼀种压缩⽅式。

如果你坐拍⼀段视频,那么基本只有你的嘴在动,背景基本没有变化,这时候要是每⼀帧画⾯都全⾯记录⼀次,那么没拍多久你硬盘就满了。

⽐⽅说不压缩的1080P60帧,⼀秒钟就能占⽤300+MB,⾮常恐怖。

⽽H264是⼀种帧间编码,只记录每⼀帧之间的变化,后期解码的时候只要在上⼀帧基础上算出变化就可以了,不仅⼤幅度缩⼩体积,还能保持⽐较好的画质。

经过压缩后的1080P60也就占⽤⼩⼏⼗MB。

当然,不同的封装⽅式对应的编码格式也是不同的,常见的封装-编码格式表:【MP4】H265、H264、MPEG4...【AVI】MPEG2、AC1、H264、DIVX、XVID...【MOV】MPEG2、H264、XVID...【WMV】WMV、AC1...【WebM】VP8、VP9...【RM/RMVB】RV、RM...【TS/PS】MPEG2、H264、MPEG4...【MKV】所有视频编码格式不同的编码器虽然有微⼩的差别,但决定画质的,往往还是码率,码率越⼤,就意味着保存的信息量越多。

H264被MPEG组织称为AVC(Advanced Video Codec/先进视频编码),⽤来替代原有的MPEG4P2(DIVX、XVID),这些编码器也都是开源的。

如果要转换的视频格式双⽅,都⽀持同⼀种编码器,那就可以直接把⽂件丢进FFmpeg、MediaCoder等软件中,⼀瞬间就可以转好。

H.264句法和语法总结

H.264句法和语法总结

H.264句法和语法总结H.264句法和语法总结 (1)(一)句法元素的分层结构 (2)(二)NAL层句法 (4)(三)序列参数集层(SPS)句法 (6)(四)图像参数集语义 (8)(五)片头句法 (10)(六)参考帧队列重排序(REORDERING)句法 (14)(七)加权预测句法 (15)(八)参考图像序列标记(MARKING)操作的语义 (16)(九)片层数据句法 (17)(十)宏块层句法 (19)(十一)宏块层预测句法 (19)(十二)子宏块预测句法 (20)(十三)残差句法 (20)(十四)CA VLC残差句法 (21)NAL技术 (23)H264基本概念之宏块、片和片组 (26)H.264起始码 (28)MPEG4起始码 (29)(一)句法元素的分层结构/xfding/archive/2010/04/10/5467952.aspx在H.264 定义的码流中,句法元素被组织成有层次的结构,分别描述各个层次的信息,如下图所示在H.264 中,句法元素共被组织成序列、图像、片、宏块、子宏块五个层次。

在这样的结构中,每一层的头部和它的数据部分形成管理与被管理的强依赖关系,头部的句法元素是该层数据的核心,而一旦头部丢失,数据部分的信息几乎不可能再被正确解码出来,尤其在序列层及图像层。

在 H.264 中,分层结构最大的不同是取消了序列层和图像层,并将原本属于序列和图像头部的大部分句法元素游离出来形成序列和图像两级参数集,其余的部分则放入片层。

参数集是一个独立的数据单位,不依赖于参数集外的其他句法元素。

由于参数集是独立的,可以被多次重发或者采用特殊技术加以保护。

复杂通信中的码流中可能出现的数据单位:IDR: 一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I图像。

H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。

H264码流解析及NALU

H264码流解析及NALU

H264码流解析及NALU639 /* bitstream filters */640 REGISTER_BSF(AAC_ADTSTOASC, aac_adtstoasc);641 REGISTER_BSF(CHOMP, chomp);642 REGISTER_BSF(DUMP_EXTRADATA, dump_extradata);643 REGISTER_BSF(H264_MP4TOANNEXB, h264_mp4toannexb);644 REGISTER_BSF(HEVC_MP4TOANNEXB, hevc_mp4toannexb);645 REGISTER_BSF(IMX_DUMP_HEADER, imx_dump_header);646 REGISTER_BSF(MJPEG2JPEG, mjpeg2jpeg);647 REGISTER_BSF(MJPEGA_DUMP_HEADER, mjpega_dump_header);648 REGISTER_BSF(MP3_HEADER_DECOMPRESS, mp3_header_decompress);649 REGISTER_BSF(MPEG4_UNPACK_BFRAMES, mpeg4_unpack_bframes);650 REGISTER_BSF(MOV2TEXTSUB, mov2textsub);651 REGISTER_BSF(NOISE, noise);652 REGISTER_BSF(REMOVE_EXTRADATA, remove_extradata);653 REGISTER_BSF(TEXT2MOVSUB, text2movsub);H264码流的NAL起始字节分析这是⼀段H264码流,00 00 00 01这是对应forbidden_zero_bit的f(1),接着后⾯的nal_ref_idc的u(2),这个怎么解呀,有点晕。

H.264NALU语法结构

H.264NALU语法结构

H.264NALU语法结构补充笔记:关于VCL:VCL层是指视频编码层,VCL NAL 单元是指那些nal_unit_type 值等于 1 到 5(包括 1 和 5)的 NAL 单元,这些单元都包含了视频数据。

所有其他的 NAL 单元都称作非 VCL NAL 单元,PPS 和SPS都是非VCLNAL单元。

关于字节流NAL单元的格式:(起始码中0的长度)除了流开头的字节流NAL单元,大多字节流NAL单元的开头没有leading_zero_8bits (一个字节的0);nal_unit_type等于7(SPS)或8(PPS)时,或字节流NAL单元语法结构在解码顺序时包含一个访问单元的第一个NAL单元,码流中会出现 zero_byte (一个字节的0);所有字节流NAL的单元的开头,都会存在start_code_prefix_one_3bytes (三个000001字节)。

所以,如果不考虑流的开头,没有特殊性的字节流NAL单元,都是只有3字节的起始码(即起始码中0的个数为2)。

一个访问单元的第一个NAL单元是指:在基本编码图像的最后一个 VCL NAL 单元之后的第一个任何下列NAL 单元代表了一个新的访问单元的开始:—访问单元分隔 NAL 单元(存在时)—序列参数集 NAL 单元(存在时)—图像参数集 NAL 单元(存在时)— SEI NAL 单元(存在时)— nal_unit_type 值在 14-18 之间(包括)的 NAL 单元—基本编码图像的第一个 VCL NAL 单元(总是存在)下文转自:/yangzhongxuan/article/details/8003494名词解释场和帧:视频的一场或一帧可用来产生一个编码图像。

在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场。

片:每个图象中,若干宏块被排列成片的形式。

片分为I 片、B片、P片和其他一些片。

I片只包含I宏块,P片可包含P和I宏块,而B片可包含B和I宏块。

H.264编码原理

H.264编码原理

H.264通信1012 严亮 1020119208 一.原理H.264是一种高性能的视频编解码技术。

目前国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。

而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC),而且它将成为MPEG-4标准的第10部分。

因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。

H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。

举个例子,原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1!H.264为什么有那么高的压缩比?低码率(Low Bit Rate)起了重要的作用,和MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。

尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅的图像,正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。

H.264和以前的标准一样,也是DPCM加变换编码的混合编码模式。

但它采用“回归基本”的简洁设计,不用众多的选项,获得比H.263++好得多的压缩性能;加强了对各种信道的适应能力,采用“网络友好”的结构和语法,有利于对误码和丢包的处理;应用目标范围较宽,以满足不同速率、不同解析度以及不同传输(存储)场合的需求。

H.264可扩展视频编解码器(SVC)应用详解

H.264可扩展视频编解码器(SVC)应用详解

H.264可扩展视频编解码器(SVC)应用详解可扩展视频编解码器已经被开发了许多年。

广播行业严格地受到业已建立的各种标准的控制,因此在采用这一技术上一直反应迟缓。

处理器、传感器以及显示技术的进步正在点爆各种视频应用。

互联网以及IP技术正无缝地把视频伺服至更为不同和远程的由显示设备构成的社群。

可扩展视频编解码器——如H.264 SVC 满足了许多这些系统的需求,并且它们可能促使视频被广泛采纳为通信媒介的催化剂。

编解码器被用于压缩视频,以减小传输视频流所需要的带宽,或者,降低把视频文件存档所需要的存储空间。

这种压缩的代价就是增大计算要求:压缩比越高,对计算能力的要求就越高。

在带宽与计算要求之间做出折中,对于定义承载编码视频流所需要的最小信道带宽以及编码设备的最小指标均有影响。

在传统的像广播电视机这样的视频系统中,解码器的最小规范(在机顶盒的情形下)易于被定义。

然而,目前视频被越来越多地由各种各样的应用所采用,相应地,有各种各样的客户设备,这些设备包括从计算机观看互联网视频,到便携式数字助理(PDA)以及小巧的蜂窝电话。

针对这些设备的视频流必需是不同的。

为了更好地兼容特定的观看设备以及信道带宽,必须采用不同的设置对视频流多次编码。

每一个设置的组合必须向用户产生一个满足视频流传输所需带宽的视频流以及对观看设备进行解码的能力。

如果原始解压视频流不可用,那么,编码视频流必须首先被解码,然后采用新的设置进行解码。

这种做法是十分昂贵的。

在理想的情形下,视频仅仅以高效率的编解码器被编码一次。

如果经过解码的话,得到的视频流会产生全分辨率的视频。

此外,在理想的情形下,如果较低分辨率或带宽的视频流需要被进一步延伸至网络之中,以锁定较低性能的设备,那么,可以不必采取附加的处理,就能够发送一小部分的编码视频。

这种较小的视频流便于解码并产生较低分辨率的视频。

以这种方式,编码视频流自身就能够适应它需要经过的信道带宽以及目标设备的性能。

H264码流结构中SPS结构分析

H264码流结构中SPS结构分析

H264码流结构中SPS结构分析SPS: sequence parameter sets01. Profile_idc它指的是码流对应的profile.1.1 基线profile(Baseline profile)遵循基线profile的SPS: sequence parameter sets01. Profile_idc它指的是码流对应的profile.1.1 基线profile(Baseline profile)遵循基线profile的码流应该遵循以下的约束:a) 只有I和P切片存在b) NAL单元流不应该有范围在2到4的nal_unit_type值,包括2和4.c) 序列参数集(sps)的frame_mbs_only_fag(之后介绍)应该等于1d) 图象参数值(psp)的weighted_pred_flag和weighted_bipred_idc都应该为0e) 图象参数值(psp)的entropy_coding_mode_flag应该等于0f) 图象参数值(psp)的num_slice_groups_minus1应该在0到7之间,包括0和7**psp部分参数含义在关于psp的文章中给出。

g) 对于基线profile对应的level度应该满足.符合基线profile的码流的profile_idc被赋66.符合一定level的基线Baseline的解码器应该可以解码所有的profile_idc等于66的码流或constrained_set0_flag(等会介绍)为1而且level_idc(在level部分介绍)少于或等于一个指定的level的码流。

1.2 主profile(Main profile)符合主profile的码流应该遵循以下的约束:a) 只有I,P,B切片存在.b) NAL单元流不包括nal_unit_type值范围在2-4之内的值。

包括2和4.c) 不能允许有随意顺序的切片d) 图像参数集(psp)的num_slice_groups_minus1应该只为0e) 图像参数集(psp)的redundant_pic_cnt_present_flag应该只为0f) 对于主profile所要求的level级需要达到。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

H.264码流结构解析
1.H.264简介
MPEG(Moving Picture Experts Group)和VCEG(Video Coding Experts Group)已经联合开发了一个比早期研发的MPEG 和H.263性能更好的视频压缩编码标准,这就是被命名为A VC(Advanced Video Coding),也被称为ITU-T H.264建议和MPEG-4的第10 部分的标准,简称为H.264/A VC或H.264。

这个国际标准已经与2003年3月正式被ITU-T所通过并在国际上正式颁布。

为适应高清视频压缩的需求,2004年又增加了FRExt部分;为适应不同码率及质量的需求,2006年又增加了可伸缩编码SVC。

2.H.264编码格式
H.263定义的码流结构是分级结构,共四层。

自上而下分别为:图像层(picturelayer)、块组层(GOB layer)、宏块层(macroblock layer)和块层(block layer)。

而与H.263相比,H.264的码流结构和H.263的有很大的区别,它采用的不再是严格的分级结构。

H.264支持4:2:0的连续或隔行视频的编码和解码。

H.264压缩与H.263、MPEG-4相比,视频压缩比提高了一倍。

H.264的功能分为两层:视频编码层(VCL, Video Coding Layer)和网络提取层(NAL, Network Abstraction Layer)。

VCL数据即编码处理的输出,它表示被压缩编码后的视频数据序列。

在VCL数据传输或存储之前,这些编码的VCL数据,先被映射或封装进NAL单元中。

每个NAL单元包括一个原始字节序列负荷(RBSP, Raw Byte Sequence Payload)、一组对应于视频编码的NAL头信息。

RBSP的基本结构是:在原始编码数据的后面填加了结尾比特。

一个bit“1”若干比特“0”,以便字节对齐。

图1 NAL单元序列
3.H.264传输
H.264的编码视频序列包括一系列的NAL单元,每个NAL单元包含一个RBSP,见表1。

编码片(包括数据分割片IDR片)和序列RBSP结束符被定义为VCL NAL单元,其余为NAL单元。

典型的RBSP单元序列如图2所示。

每个单元都按独立的NAL单元传送。

单元的信息头(一个字节)定义了RBSP单元的类型,NAL单元的其余部分为RBSP数据。

图2 RBSP序列举例
表1 RBSP描述
4.H.264码流结构图
层一: A. Annexb格式 B. RTP格式
图3 H.264码流分层结构
起始码:如果NALU对应的Slice为一帧的开始,则用4字节表示,即0x00000001;否则用3字节表示,0x000001。

NAL Header:forbidden_bit,nal_reference_bit(优先级),nal_unit_type(类型)。

脱壳操作:为了使NALU主体不包括起始码,在编码时每遇到两个字节(连续)的0,就插入一字节0x03,以和起始码相区别。

解码时,则将相应的0x03删除掉。

sub_mb_pred 和mb_pred :运动补偿或者是帧内预测。

5. H.264解码
NAL
头信息的nal_referrence_idc (NRI )用于在重建过程中标记一个NAL 单元的重要性,值为0表示这个NAL 单元没有用预测,因此可以被解码器抛弃而不会有错误扩散;值高于0表示NAL 单元要用于无漂移重构,且值越高,对此NAL 单元丢失的影响越大。

NAL 头信息的隐藏比特位,在H.264编码器中默认为0,当网络识别到单元中存在比特错误时,可将其置为1。

隐藏比特位主要用于适应不同种类的网络环境(比如有线无线相结合的环境)。

图4 NAL 单元解码
NAL 单元解码的流程为:首先从NAL 单元中提取出RBSP 语法结构,然后按照如图4所示的流程处理RBSP 语法结构。

输入的是NAL 单元,输出结果是经过解码的当前图像的样值点。

NAL 单元中分别包含了序列参数集和图像参数集。

图像参数集和序列参数集在其他NAL 单元传输过程中作为参考使用,在这些数据NAL 单元的片头中,通过语法元素pic_parameter_set_id 设置它们所使用的图像参数集编号;而相应的每个图像参数集中,通过语法元素seq_paramter_set_id 设置他们使用的序列参数集编号。

6. 各分层结构的语法元素参考G50标准。

相关文档
最新文档