zoukankan      html  css  js  c++  java
  • ISO 1449610 (Video) Advanced Video Coding (AVC)

    http://hi.baidu.com/learned/blog/item/202df5038c5a1b89d43f7c95.html

    简介 
    AVC/H.264 是MPEG-4 标准所定义的最新,同时也是技术含量最高、代表最新技术水平的视频编码格式之一。 
    AVC/H.264 视频编码由ISO 的MPEG 和ITU 的VCEG 两个组织于2003 年最终定稿。 
    而AVC/H.264 标准本身则是由包括来自MPEG 和VCEG 专家的Joint Video Team(JVT)开发。 

    译注: 
    ISO(International Organization for Standardization) 国际标准组织, 发展国际生产和质量标准的组织; 
    MPEG (Moving Pictures Experts Group) 运动图象专家组; 
    ITU(International Telecommunication Union) 国际电传视讯联盟; 
    VCEG(Video Coding Experts Group) 视频编码专家组,联合国的子机构之一,制定了现在广泛应用于视频会议软件中的H.263 格式。
     

    从MPEG 的角度来说,这个标准叫做MPEG-4 Part10(ISO 14496-10),从ITU 的角度来说,这个标准叫做H.264(ITU 文档编号)。作为这个标准的“官方名称”,Advanced Video Coding(AVC)是MPEG 由Advanced Audio Coding(AAC)这个音频格式的视频副本确定的。 
    AVC/H.264 Profiles 
    AVC/H.264 规定了多种不同的Profile:最低Profile、主要Profile、扩展Profile、高端Profile(这些Profile 本身还要划分数个等级)。 
    -最低Profile,也叫做底线Profile(Baseline Profile)支持I/P 帧,只支持无交错(Progressive)和CAVLC; 
    -扩展Profile(Extended Profile)支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC; 
    -主要Profile(Main Profile)提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced),同样提供对于CAVLC 和CABAC 的支持; 
    -高端Profile(High Profile,也叫FRExt)在主要Profile 的基础上增加了8x8 内部预测、自定义量化、无损视频编码和更多的YUV 格式(如4:4:4)。 
    或许只有在将来才能知道哪些Profile 或哪些功能会成为DVDRIP 的主流,但是我猜想会是Main 或是High Profile,包含下面的一些功能: 

    CAVLC/CABAC
     
    AVC/H.264 为熵编码(entropy coding)规定了两个比MPEG-4 ASP 更加进步的功能,Context-Adaptive Variable Length Coding(CAVLC, 前后自适应可变长度编码) 和Context-Adaptive Binary Arithmetic Coding (CABAC,前后自适应二进制算术编码)。CABAC 是AVC/H.264 的默认模式,与CAVLC(也叫UVLC)相比,CABAC 是一个更加强有力的压缩方式,可以将码率在降低10-15%(特别是在高码率情况下)。CABAC (CAVLC 也同样)是一个不会损伤画面的无损编码,但是会降低编码和解码的速度。

    Loop/Deblocking Filter 
    与预处理(比如通过avisynth,作用于输入端)和后处理(通过解码器,作用于最终输出)不同,LoopFiltering 在编码处理过程中起作用。它作用于每个帧编码之后,但是在这之前,它会被用作后面帧的参考。这样处理可以尽量避免色块的出现,特别是低码率状况下。 但是这样会降低编码和解码的速度。

    Variable Block Sizes/Macroblock Partitions (可变区块尺寸/ 微块分割) 
    与MPEG-4 ASP(只使用Inter4V/4MV,区块大小可以在16x16 和8x8 之间变化)不同,AVC/H.264 将动态搜寻的精度增加到了4x4(中间包括类似8x4 等的的步长)。而且区块大小是自适应且可变的,一个优秀的编码器会聪明地为每个微块选择最有效的区块大小。

    Multiple Reference Frames (多重参照帧) 
    与MPEG-4 ASP(只能选择前一帧进行参照)不同,AVC/H.264 可以选择不止一个帧进行内部动作搜寻,也就是说,编码器可以自行选择前一帧(像MPEG-4 ASP 那样),或是加上更前面的帧进行参照。正是由于这样(比如P 帧可能会参照最后一个I 帧之前的帧),一 
    种新类型的帧随之产生——IDR 帧,我们可以将其理解为不允许后面的帧向前面进行参照的I 帧。如果使用多重参照帧的话,编码和解码的速度都会减慢,而且编码、解码、剪切只能从IDR 帧开始。 

    译注: 
    按照原文恐怕不太容易理解,这里译者以自己的理解来讲解一下IDR 帧。举个例子,在一段视频中, 存在以下帧:I P B P B P B B P I P B… 
    如果这段视频应用了多重参照帧,那么蓝色的P 帧在参照他前面的I 帧(红色)的同时,还可能会参照I 帧之前的P 帧(绿色),由于I帧前后的场景可能会有很大的反差甚至根本不同,所以此时P 帧参考I 帧之前的帧不但会没有意义,反而会造成很多问题。 
    所以一种新型的帧被引入,那就是IDR 帧。如果这段视频应用了多重参考帧的同时采用了IDR 帧,那么帧的顺序就会变成这样:I P B P B P B B P IDR P B… 由于IDR 帧禁止后面的帧向自己前面的帧参照,所以这回那个蓝色的P 帧就不会参照绿色的P 帧了。
     

    Weighted Prediction (权重预测) 
    使用权重预测,就是在参考帧上施加权重。这么说恐怕不太明白,但是向下看就会明白多了。在渐变场景(比如画面逐渐变黑),后面的帧除了比前面的帧要暗一些,其他地方都很相似,那么权重预测就在这些地方发挥作用了。需要注意的是,权重预测对于交叉渐变(比如从一个场景渐变到另一个场景)不会有作用。

    Rate Distortion Optimisation (RDO ,评价变化优化)
    RDO 使编码器遇到多种不同的选择的时候,选择最有效的编码方式。RDO 并不是由AVC/H.264 专家制定的功能,但它是最先由H.264 参考软件所用到的一种决定方法。其他的编码器也可以采用RDO,比如XviD 的VHQ 模式已经运用了RDO。

    当前AVC/H.264 的问题
    如果你对现有的AVC 工具嗤之以鼻,你肯定发现了AVC 的一些问题: 
    -兼容性:目前不同的AVC 工具支持不同的容器(Container): 
    .mp4:mp4 是MPGE-4 标准(ISO 14496-15)指定的AVC 容器。目前支持它的编码器有Nero、Sorenson、Envivio 和Moonlight。 
    .mpg:mpg 是MPEG-2 标准(ISO 13818-1,AMD3)指定的AVC 容器。目前支持它的编码器有:Mainconcept 和Moonlight。(蓝光BD-ROM 也会使用这种容器,具体请参见http://www.blu-ray.com) 
    .avi:使用AVI 作为容器是不标准的,并且会造成不兼容的问题。使用AVI 可能妨碍AVC 的一些功能的发挥,也可能会损伤回放的质量,或者降低解码速度。目前支持avi 的编码器有VSS、x264(mencoder 和x264 的vfw 都支持)、mpegable。 
    .264/.h264:通常是参考编码器输出的作为例子的源图像。(mencoder 中的x264 也可以输出.264,mp4creator 可以从.mp4 种Demux 出来)

  • 相关阅读:
    让IE6/IE7/IE8支持HTML5标签的js代码
    你应该抓紧学习Python,它是开发Web应用最强大的语言
    细数IE6的一串串的恼人bug,附加解决方法!
    邪恶的编码:复制与粘帖
    谈谈微信公众平台开发
    jQuery练手:仿新浪微博图片文字列表淡进淡出上下滚动效果
    DIV-CSS布局中position属性详解
    解决java编译错误:编码GBK的不可映射字符
    离线下载安装 NLTK 的 nltk_data 模块
    Python NLTK 自然语言处理入门与例程(转)
  • 原文地址:https://www.cnblogs.com/eustoma/p/2415789.html
Copyright © 2011-2022 走看看