H264术语摘抄

来源于互联网,回归于互联网

【ntsc 和 pal】
电视信号的标准简称制式,可以简单地理解为用来实现电视图像或声音信号所采用的一种技术标准。

ntsc又称恩制,其制式的色度信号调制特点为平衡正交调幅制,即包括了平衡调制和正交调制两种,解决了彩色电视和黑白电视广播相互兼容的问题,但是存在相位容易失真,色彩不太稳定的缺点。
参数,供电平率60HZ,场频为每秒60场,帧频为每秒30帧,扫描线为525行,图像信号带宽为6.2MHz,主要为美国,日本使用。

pal,又称帐尔制,为克服ntsc制对相位失真的敏感性。也属于同时制,pal制对相位失真不敏感,图像彩色误差小,与黑白电视的兼容也好。 但是pal制的编码器和解码器都比较复杂,信号处理也麻烦,接收机造价也高。
参数,供电频率50Hz,场频50场,帧每秒25帧,扫描线625,图像信号带宽分别为4.2,5.5,5.6Hz等。

PAL电视标准,每秒25帧,电视扫描线为625线,奇场在前,偶场在后,标准的数字化PAL电视标准分辨率为720*576, 24比特的色彩位深,画面的宽高比为4:3, PAL电视标准用于中国、欧洲等国家和地区,PAL制电视的供电频率为50Hz,场频为每秒50场,帧频为每秒25帧,扫描线为625行,其中,帧正程575行,帧逆程50行。采用隔行扫描方式,每场扫描312.5行,场正程287.5行,逆程25行。场周期为20毫秒。行频为15625赫兹。图像信号带宽分别为4.2MHz、5.5MHz、5.6MHz等。

【sample rate 采样率】
模拟信号经过 (A/D) 变换转换为数字信号的过程称之为采样,信号采样后其频谱产生了周期延拓,每隔一个采样频率 fs,重复出现一次。为保证采样后信号的频谱形状不失真,采样频率必须大于信号中最高频率成份的两倍,这称之为采样定理。

在模拟信号系统又叫频宽,是指在固定的时间可传输的资料数量,亦即在传输管道中可以传递数据的能力。

【码流】
码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫【码率】,是视频编码中画面质量控制中最重要的部分。
同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越好。

码流=采样率×比特数×声道

【vbr 和 cbr】
VBR(Variable Bitrate)动态比特率。也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式。
CBR(Constants Bit Rate)即固定码率,就是静态(恒定)比特率的意思,CBR是一种固定采样率的压缩方式。优点是压缩快,能被大多数软件和设备支持,缺点是占用空间相对大,效果不十分理想,现已逐步被VBR的方式取代。

/*
码流帧格式:
    视频关键帧: FRAME_HDR + IFRAME_INFO + DATA
    视频非关键帧: FRAME_HDR + PFRAME_INFO + DATA
    音频帧: FRAME_HDR + AFRAME_INFO + DATA
关于帧类型和帧同步标志选取:
    前三个字节帧头同步码和H.264 NALU分割码相同,均为0x00 0x00 0x01
    第四个字节使用了H.264中不会使用到的0xF8-0xFF范围
*/


【ROI】
感兴趣区域。

【视频编码】
所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。视频流传输中最为重要的编解码标准有国际电联的H.261、H.263,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo、微软公司的WMV以及Apple公司的QuickTime等

H264标准各主要部分有Access Unit delimiter(访问单元分割符),SEI(附加增强信息),primary coded picture(基本图像编码),Redundant Coded Picture(冗余图像编码)。还有Instantaneous Decoding Refresh(IDR,即时解码刷新)、Hypothetical Reference Decoder(HRD,假想参考解码)、Hypothetical Stream Scheduler(HSS,假想码流调度器)。

在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有效表示视频数据的内容,而后者则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。因此我们平时的每帧数据就是一个NAL单元(SPS与PPS除外)。在实际的H264数据帧中,往往帧前面带有00 00 00 01 或 00 00 01分隔符,一般来说编码器编出的首帧数据为PPS与SPS,接着为I帧……

【cvbs】
H264标准各主要部分有Access Unit delimiter(访问单元分割符),SEI(附加增强信息),primary coded picture(基本图像编码),Redundant Coded Picture(冗余图像编码)。还有Instantaneous Decoding Refresh(IDR,即时解码刷新)、Hypothetical Reference Decoder(HRD,假想参考解码)、Hypothetical Stream Scheduler(HSS,假想码流调度器)。
CVBS是一种比较老的显示方式,更准确的说是第一代视频显示输出方式(第二代是S-VIDEO,第三代是VGA,第四代是DVI,第五代是HDMI)。


【场】
视频图像 25帧图 一帧两场 每场的图像有何区别

CCD图像传输是25帧每秒,每帧又分为两场——奇场偶场(隔行扫描),我想问这两场(奇偶场)是不是一幅图片传出来的数据,只是扫描的位置不一样而已?如果在图像像素精度要求不高的场所是否可以直接用其中一场的图像信号?

帧就是一幅完整的图象,一般人眼看视频时有24帧/秒就是流畅的了;而场频就是显示设备(电视机或CRT显示器)横向扫描的频率而每帧分为奇数场和偶数场的意思是将一幅图象的奇数横向像素和偶数横向像素分开扫描来组成一幅完整图象(即一帧);,应该是两个场的图片组在一起才能组成一幅完整图象! 就是说原本是一副图像,拆成两场来传送吧,像素精度要求不高时我就可以直接抛弃一个场嘛

【H.264】
  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 图像。这里也有几点值得说明:
  (1)、nal_unit_type 值为 5 的 NALU 只会出现在 IDR 图像中,而 IDR 图像中的所有 NALU 都是nal_unit_type 值为 5 的 NALU;
  (2)、我们以组成一幅图像的片的类型来区分该图像是否是 IDR 图像是错误的。例如:一幅图像中的所有片都是 I 片并不代表这幅图像就是 IDR 图像。因为 I 片也可以从属于 nal_unit_type 值为 1 的 NALU。只不过我们平常最常见到的形式是:所有片都是 I 片的图像就是 IDR 图像。其实这个时候 IDR 图像的概念也被我们具体化和细小化了。
  一幅图像由 1~N 个片组组成,而每一个片组又由一个或若干个片组成。图像解码过程中总是按照片进行解码,然后按照片组将解码宏块重组成图像。从这种意义上讲,片实际是最大的解码单元。而一个片又包含哪些类型的宏块呢?标准“表7-10”做了最好的说明。一个 I 宏块又分为哪些类型呢?标准“表7-11”做了最好的说明。一个 P 宏块又分为哪些类型呢?标准“表7-13”做了最好的说明。一个 B 宏块又分为哪些类型呢?标准“表7-14”做了最好的说明。一个 P 宏块的亚宏块又分为哪些类型呢?标准“表7-17”做了最好的说明。一个 B 宏块的亚宏块又分为哪些类型呢?标准“表7-18”做了最好的说

【IDR帧】
IDR帧属于I帧。 解码器收到IDR帧时,将所有的参考帧队列丢弃(用x264_reference_reset函 数实现——在encoder.c文件中)。这点是所有I帧共有的特性,但是收到IDR帧 时,解码器另外需要做的工作就是:把所有的PPS和SPS参数进行更新。由此可见,在编码器端,每 发一个IDR,就相应地发一个 PPS&SPS_nal_unit。

【DR】(Instantaneous Decoding Refresh)--即时解码刷新。
 
I和IDR帧都是使用帧内预测的。它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以才把第一个首个I帧叫IDR,这样就方便控制编码和解码流程。IDR帧的作用是立刻刷新,使错误不致传播,从IDR帧开始,重新算一个新的序列开始编码。而I帧不具有随机访问的能力,这个功能是由IDR承担。IDR会导致DPB(DecodedPictureBuffer参考帧列表——这是关键所在)清空,而I不会。IDR图像一定是I图像,但I图像不一定是IDR图像。一个序列中可以有很多的I图像,I图像之后的图像可以引用I图像之间的图像做运动参考。一个序列中可以有很多的I图像,I图像之后的图象可以引用I图像之间的图像做运动参考。
       对于IDR帧来说,在IDR帧之后的所有帧都不能引用任何IDR帧之前的帧的内容,与此相反,对于普通的I-帧来说,位于其之后的B-和P-帧可以引用位于普通I-帧之前的I-帧。从随机存取的视频流中,播放器永远可以从一个IDR帧播放,因为在它之后没有任何帧引用之前的帧。但是,不能在一个没有IDR帧的视频中从任意点开始播放,因为后面的帧总是会引用前面的帧。

【I帧】表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)
 
【P帧】表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
 

【B帧】是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累~。


【参数集】
  序列参数集和图像参数集
 ?序列参数集包括一个图像序列的所有信息,即两个IDR图像间的所有图像信息
 ?图像参数集包括一个图像的所有分片的所有相关信息,包括图像类型、序列号等,解码时某些序列号的丢失可用来校验信息包的丢失与否。
 ?多个不同的序列和图像参数集存储在解码器中,编码器依据每个编码分片的头部存储位置来选择适当的参数集,图像及本身也包括使用的序列参数集等参考信息。

【pps和sps】
使用RTP传输H264的时候,需要用到sdp协议描述,其中有两项:Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)需要用到,那么这两项从哪里获取呢?答案是从H264码流中获取.在H264码流中,都是以"0x00 0x00 0x01"或者"0x00 0x00 0x00 0x01"为开始码的,找到开始码之后,使用开始码之后的第一个字节的低5位判断是否为7(sps)或者8(pps), 及data[4] & 0x1f == 7 || data[4] & 0x1f == 8.然后对获取的nal去掉开始码之后进行base64编码,得到的信息就可以用于sdp.sps和pps需要用逗号分隔开来.

【序列的参数集(SPS)】包括了一个图像序列的所有信息,图像的参数集(PPS)包括了一个图像所有片的信息。
多个不同的序列和图像参数集经排序存放在解码器。编码器参考序列参数集设置图像参数集,依据每一个已编码片的片头的存储地址选择合适的图像参数集来使用。对序列的参数和图像的参数进行重点保护才能很好地增强H.264错误恢复性能。参数集通常应用在所有的H.264比特流中,它所包含的信息极其重要,它的受损将影响到大量的VCL和NAL单元,被影响的单元即使能正确接收到也不能被正确解码,在H.264新标准中共使用了两种类型的参数集。  
【序列参数集(SPS】,包括与图像序列(定义为两个IDR图像间的所有图像)有关的所有信息,应用于已编码视频序列。  
【图像参数集(PPS)】包含所有属于该图像的片的相关信息,用于解码已编码视频序列中的1个或多个独立的图像。
多个不同序列和图像的参数集被解码器正确接收后,存储于不同的已编号位置,通过参考每个已编码片片头的存储位置,编码器选择使用恰当的图像参数集,图像参数集中包含1个要使用和参考的序列参数集。  参数集的灵活使用大大增强了编解码器的抗误码能力。在有误码倾向环境下,使用参数集的关键是,在相应的VCL与NAL单元到达解码器时,确保参数集已可靠及时地到达解码器。最常用的手段就是重复发送,来提高数据可靠到达的机率。这种情况下典型的应用是参数集的传送与VCL NAL共用1个信道。另外,参数集也可以单独使用更可靠的传输机制在带外发送。
由于采用了可靠的传输机制和性能更好的信道,参数集能被及时可靠地送达解码器端,保证了相应VCL与NAL单元的正确解码。但是,这种方式需要额外的1个信道,以及可靠的传输机制,如果条件许可时,应用这种传输方式能增强编解码器的抗误码能力,但限于网络资源的现状,实际应用中更多的是采用第一种方式来传输参数集。

【NAL单元】:network adaptation layer
 ?每个NAL单元是一个一定字语法元素的可变长字节字符串,包括包含一个字节的头信息(用来表示数据类型),以及若干个整数字节的负荷数据。
 ?一个NAL单元可以携带一个编码片,A/B/C型数据分割或一个序列或一个图像参数集。
 ?h.264采用NAL单元接入可适用多种网络,而且进一步提高其抗误码能力。
 ?序列号的设置可以发现丢失的事哪一个VCL单元,沉余编码图像使得基本编码图像丢失仍可得到较“粗糙”的图像。


【帧定义】
采用的压缩方法: 分组:把几帧图像分为一组(GOP),为防止运动变化,帧数不宜取多。
1.定义帧:将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;
2.预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;
3.数据传输:最后将I帧数据与预测的差值信息进行存储和传输。

I帧:帧内编码帧
I帧特点:
1.它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;
2.解码时仅用I帧的数据就可重构完整图像;
3.I帧描述了图像背景和运动主体的详情;
4.I帧不需要参考其他画面而生成;
5.I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
6.I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;
7.I帧不需要考虑运动矢量;
8.I帧所占数据的信息量比较大。

P帧:前向预测编码帧。
P帧的预测与重构:P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。
P帧特点:
1.P帧是I帧后面相隔1~2帧的编码帧;
2.P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);
3.解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;
4.P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧;
5.P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;
6.由于P帧是参考帧,它可能造成解码错误的扩散;
7.由于是差值传送,P帧的压缩比较高。

B帧:双向预测内插编码帧。
B帧的预测与重构
B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。
B帧特点
1.B帧是由前面的I或P帧和后面的P帧来进行预测的;
2.B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
3.B帧是双向预测编码帧;
4.B帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;
5.B帧不是参考帧,不会造成解码错误的扩散。

注:I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧,至于图像中的哪一帧是I帧,是随机的,一但确定了I帧,以后的各帧就严格按规定顺序排列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值