video codec 学习笔记

一. H.264 (http://www.baike.com/wiki/H264html

三大标准: 算法

AVC(Advanced Video Coding,AVC)网络

H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准一般被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。 iview

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

 

SVC(Scalable Video Coding – 可分级视频编码)  http://www.skyvio.com/htm/2007-05/33.htm工具

实际应用中,存在不一样的网络和不一样的用户终端,各类状况下对视频质量的需求不同。例如,在利用网络传输视频信息时,因为网络带宽限制了数据传输,所以要求当网络带宽较小的时候,只传输基本的视频信号,并根据实际网络的情况决定是否传输加强的视频信息,使视频的质量获得增强。编码

在这样的背景下,利用可分级视频编码技术实现一次性编码产生具备不一样帧率、分辨率的视频压缩码流,而后根据不一样网络带宽、不一样的显示屏幕和终端解码能力选择须要传输的视频信息量,以此实现视频质量的自适应调整。
为了可以实现从单一码流中解码获得不一样帧率(时间可分级)、分辨率(空间可分级)和图像质量(SNR可分级)的视频数据的编码技术。
H.264 SVC以H.264 AVC视频编解码器标准为基础,利用了AVC编解码器的各类高效算法工具,在编码产生的编码视频时间上(帧率)、空间上(分辨率)可扩展,而且是在视频质量方面可扩展的,可产生不一样帧速率、分辨率或质量等级的解码视频。

H264可分级视频编码采用分层编码方式实现,由一个基本层(Base Layer)和多个加强层(Enhancement Layer)组成,加强层依赖基本层的数据来解码。其中,基本层(base layer)编码了基本的视频信息,实现了最低图像分辨率、帧率,而且基本层的编码是兼容H264/AVC编码标准的,可以采用H264/AVC解码器进行解码。 spa

 

MVC 多视角视频编码(Multiview video coding).net

是在H.264标准当中新增的内容,其历史渊源和概况能够参照《Overview of Multi-view Video Coding》这篇论文。code

在双目3D视频中,一般须要提供left/right view两个视点的图像,这两个视点的图像是有相关性的,一样,对于多view视图之间也是有必定相关性的,所以很天然的想法就是要利用view之间的相关性来提升压缩效率,这就是MVC的目的。
 
MVC主要用在3D电影领域,同一个电影场景,左眼和右眼看到的是不一样的View,咱们的产品暂时用不到。

 

二. AVC里的 I B P 帧,openh264里没有B帧

I帧(I frame)又称为内部画面 (intra picture),I 帧一般是每一个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,通过适度地压缩,作为随机访问的参考点,能够当成图象。
在MPEG编码的过程当中,部分视频帧序列压缩成为I帧;部分压缩成P帧;还有部分压缩成B帧。
I帧法帧内压缩法,也称为“关键帧”压缩法。
I帧法是基于离散余弦变换DCT(Discrete Cosine Transform)的压缩技术,这种算法与JPEG压缩算法相似。采用I帧压缩可达到1/6的压缩比而无明显的压缩痕迹。

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帧是参考帧,它可能形成解码错误的扩散 (error propagation) ; 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帧不是参考帧,不会形成解码错误的扩散

 

三. SVC里的 T0, T1,T2,T3帧

refto: http://wk.baidu.com.cn/view/d70494365727a5e9856a6157?pn=4&pu=#1

 

 

 

四. IDR (Instantaneous Decoding Refresh)

IDR会致使DPB(DecodedPictureBuffer 参考帧列表——这是关键所在)清空, 在IDR帧以后的全部帧都不能引用任何IDR帧以前的帧的内容 

refto: http://blog.csdn.net/heanyu/article/details/6255111

 

 

5、SDP

IDR & SPS PPS : OpenH264中SPS\PPS包不单独发送,会和IDR包打在一块儿,在IDR包的最后才有RTP包结束的Mark标记。

 

 

h.264 RTP Payload:

http://www.cppblog.com/czanyou/archive/2009/12/25/67940.html 

packetization-mode = 0 一个NAL打成一个RTP包
packetization-mode = 1 多个NAL组合成一个RTP包 (SCR中,spark都是用这个的)
packetization-mode = 2 一个NAL包能够分红多个RTP包

 

6、Encode Control

Parameters:

maxFS = width/16(ceiling) * height/16(ceiling)
maxMBPS = maxFS * maxFPS/100

160*90 maxFS=60 maxMBPS=180320*180 maxFS=240 maxMBPS=7200640*360 maxFS=920 maxMBPS=276001280*720 maxFS=3600 maxMBPS=108000

相关文章
相关标签/搜索