音视频编解码基础知识

图像及视频基础知识
一、光和颜色
1 光和颜色
    可见光是波长在380 nm~780 nm 之间的电磁波,我们看到的大多数光不是
一种波长的光,而是由许多不同波长的光组合成的。如果光源由单波长组成,就
称为单色光源。该光源具有能量,也称强度。实际中,只有极少数光源是单色的,
大多数光源是由不同波长组成,每个波长的光具有自身的强度。这称为光源的光
谱分析。
    颜色是视觉系统对可见光的感知结果。研究表明,人的视网膜有对红、绿、
蓝颜色敏感程度不同的三种锥体细胞。红、绿和蓝三种锥体细胞对不同频率的光
的感知程度不同,对不同亮度的感知程度也不同。
    自然界中的任何一种颜色都可以由R,G,B 这3 种颜色值之和来确定,以这
三种颜色为基色构成一个RGB 颜色空间,基色的波长分别为700 nm(红色)、546.1
nm(绿色)和435.8 nm(蓝色)。
    颜色=R(红色的百分比)+G(绿色的百分比)+B(蓝色的百分比)
    可以选择不同的三基色构造不同的颜色空间,只要其中一种不是由其它两种
颜色生成。例如Y(Yellow,黄色),C( Cyan,青色),M(Magenta,品红)。
2 颜色的度量
    图像的数字化首选要考虑到如何用数字来描述颜色。国际照明委员会CIE
(International Commission on Illumination )对颜色的描述作了一个通用
的定义,用颜色的三个特性来区分颜色。这些特性是色调,饱和度和明度,它们
是颜色所固有的并且是截然不同的特性。
    色调(hue)又称为色相,指颜色的外观,用于区别颜色的名称或颜色的种类。
色调用红、橙、黄、绿、青、蓝、靛、紫等术语来刻画。用于描述感知色调的一
个术语是色彩(colorfulness)。
    饱和度(saturation)是相对于明度的一个区域的色彩,是指颜色的纯洁性,
它可用来区别颜色明暗的程度。完全饱和的颜色是指没有渗入白光所呈现的颜
色,例如仅由单一波长组成的光谱色就是完全饱和的颜色。
    明度(brightness)是视觉系统对可见物体辐射或者发光多少的感知属性。它
和人的感知有关。由于明度很难度量,因此国际照明委员会定义了一个比较容易
度量的物理量,称为亮度(luminance) 来度量明度,亮度(luminance)即辐射的
能量。明度的一个极端是黑色(没有光),另一个极端是白色,在这两个极端之间
是灰色。
    光亮度(lightness)是人的视觉系统对亮度(luminance)的感知响应值,光亮
度可用作颜色空间的一个维,而明度(brightness)则仅限用于发光体,该术语用
来描述反射表面或者透射表面。
3 颜色空间
    颜色空间是表示颜色的一种数学方法,人们用它来指定和产生颜色,使颜色
形象化。颜色空间中的颜色通常使用代表三个参数的三维坐标来指定,这些参数
描述的是颜色在颜色空间中的位置,但并没有告诉我们是什么颜色,其颜色要取
决于我们使用的坐标。
    使用色调、饱和度和明度构造的一种颜色空间,叫做HSB(hue, saturation
and brightness)颜色空间。RGB(red,green and blue)和CMY(cyan, magenta and
yellow)是最流行的颜色空间,它们都是与设备相关的颜色空间,前者用在显示
器上,后者用在打印设备上。
      从技术上角度区分,颜色空间可考虑分成如下三类:
    Ø RGB 型颜色空间/计算机图形颜色空间:这类模型主要用于电视机和计
算机的颜色显示系统。例如,RGB,HSI, HSL 和HSV 等颜色空间。
    Ø XYZ 型颜色空间/CIE 颜色空间:这类颜色空间是由国际照明委员会定
义的颜色空间,通常作为国际性的颜色空间标准,用作颜色的基本度量方法。例
如,CIE 1931 XYZ,L*a*b,L*u*v 和LCH 等颜色空间就可作为过渡性的转换空
间。
    Ø YUV 型颜色空间/电视系统颜色空间:由广播电视需求的推动而开发的颜
色空间,主要目的是通过压缩色度信息以有效地播送彩色电视图像。例如,YUV,
YIQ,ITU-R BT.601 Y'CbCr, ITU-R BT.709 Y'CbCr 和SMPTE-240M Y'PbPr 等颜
色空间。
4 颜色空间的转换
    不同颜色可以通过一定的数学关系相互转换:
    Ø 有些颜色空间之间可以直接变换。例如,RGB 和HSL,RGB 和HSB,
RGB 和R'G'B', R'G'B'和Y'CrCb,CIE XYZ 和CIE L*a*b*等。
    Ø 有些颜色空间之间不能直接变换。例如,RGB 和CIE La*b*, CIE XYZ
和HSL,HSL 和Y'CbCr 等,它们之间的变换需要借助其他颜色空间进行
过渡。
    R'G'B'和Y'CbCr 两个彩色空间之间的转换关系用下式表示:
    Y = 0.299R + 0.587G + 0.114B
    Cr = (0.500R - 0.4187G - 0.0813B) + 128
    Cb = (-0.1687R - 0.3313G + 0.500B) + 128
二、彩色电视的制式及其颜色空间
1、彩色电视制式
    目前世界上现行的彩色电视制式有三种:NTSC 制、PAL 制和SECAM 制。这里
不包括高清晰度彩色电视HDTV (High-Definition television)。
    NTSC(National Television Systems Committee)彩色电视制是1952 年美国
国家电视标准委员会定义的彩色电视广播标准,称为正交平衡调幅制。美国、加
拿大等大部分西半球国家,以及日本、韩国、菲律宾等国和中国的台湾采用这种
制式。
    NTSC 彩色电视制的主要特性是:
    (1) 525 行/帧, 30 帧/秒(29.97 fps, 33.37 ms/frame)
    (2) 高宽比:电视画面的长宽比(电视为4:3;电影为3:2;高清晰度电视为
16:9)
    (3) 隔行扫描,一帧分成2 场(field),262.5 线/场
    (4) 在每场的开始部分保留20 扫描线作为控制信息,因此只有485 条线的
可视数据。Laser disc 约~420 线,S-VHS 约~320 线
    (5) 每行63.5 微秒,水平回扫时间10 微秒(包含5 微秒的水平同步脉冲),
所以显示时间是53.5 微秒。
    (6) 颜色模型:YIQ
    一帧图像的总行数为525 行,分两场扫描。行扫描频率为15 750 Hz, 周
期为63.5μs;场扫描频率是60 Hz,周期为16.67 ms;帧频是30 Hz,周期33.33
ms。每一场的扫描行数为525/2=262.5 行。除了两场的场回扫外,实际传送图像
的行数为480 行。
    由于NTSC 制存在相位敏感造成彩色失真的缺点,因此德国(当时的西德)于
1962 年制定了PAL(Phase-Alternative Line)制彩色电视广播标准,称为逐行倒
相正交平衡调幅制。德国、英国等一些西欧国家,以及中国、朝鲜等国家采用这
种制式。
    PAL 电视制的主要扫描特性是:
    (1) 625 行(扫描线)/帧,25 帧/秒(40 ms/帧)
    (2) 长宽比(aspect ratio):4:3
    (3) 隔行扫描,2 场/帧,312.5 行/场
    (4) 颜色模型:YUV
    法国制定了SECAM (法文:Sequential Coleur Avec Memoire)彩色电视广播标
准,称为顺序传送彩色与存储制。法国、苏联及东欧国家采用这种制式。世界上
约有65 个地区和国家试验这种制式。
    这种制式与PAL 制类似,其差别是SECAM 中的色度信号是频率调制(FM),而
且它的两个色差信号:红色差(R'-Y')和蓝色差(B'-Y')信号是按行的顺序传输
的。法国、俄罗斯、东欧和中东等约有65 个地区和国家使用这种制式,图像格
式为4:3,625 线,50 Hz,6 MHz 电视信号带宽,总带宽8 MHz。
2、彩色电视的颜色空间
    在彩色电视中,用Y、C1, C2 彩色表示法分别表示亮度信号和两个色差信号,
C1,C2 的含义与具体的应用有关。在NTSC 彩色电视制中,C1,C2 分别表示I、
Q 两个色差信号;在PAL 彩色电视制中,C1,C2 分别表示U、V 两个色差信号;
在CCIR 601 数字电视标准中,C1,C2 分别表示Cr,Cb 两个色差信号。所谓色
差是指基色信号中的三个分量信号(即R、G、B)与亮度信号之差。
    NTSC 的YIQ 颜色空间与RGB 颜色空间的转换关系如下:
    Y=0.30R+0.59G+0.11B
    I=0.74(R-Y)-0.27(B-Y) = 0.60R+0.28G+0.32B
    Q=0.48(R-Y)-0.27(B-Y) = 0.21R+0.52G+0.31B
    PAL 的YUV 颜色空间与RGB 颜色空间的转换关系如下:
    Y=0.30R+0.59G+0.11B
    U=0.493(B-Y) = -0.15R-0.29G+0.44B
    Q=0.877(R-Y) = 0.62R-0.52G-0.10B
三、视频图像采样
    模拟视频的数字化包括不少技术问题,如电视信号具有不同的制式而且采用
复合的YUV 信号方式,而计算机工作在RGB 空间;电视机是隔行扫描,计算机显
示器大多逐行扫描;电视图像的分辨率与显示器的分辨率也不尽相同等等。因此,
模拟视频的数字化主要包括色彩空间的转换、光栅扫描的转换以及分辨率的统
一。
    模拟视频一般采用分量数字化方式,先把复合视频信号中的亮度和色度分
离,得到YUV 或YIQ 分量,然后用三个模/数转换器对三个分量分别采样并进行
数字化,最后再转换成RGB 空间。
1、图像子采样
    对彩色电视图像进行采样时,可以采用两种采样方法。一种是使用相同的采
样频率对图像的亮度信号(Y)和色差信号(Cr,Cb)进行采样,另一种是对亮
度信号和色差信号分别采用不同的采样频率进行采样。如果对色差信号使用的采
样频率比对亮度信号使用的采样频率低,这种采样就称为图像子采样
(subsampling)。由于人的视觉对亮度信号的敏感度高于对色差的敏感度,这样
做利用人的视觉特性来节省信号的带宽和功率,通过选择合适的颜色模型,可以
使两个色差信号所占的带宽明显低于Y 的带宽,而又不明显影响重显彩色图像的
观看。
    目前使用的子采样格式有如下几种:
    (1) 4:4:4 这种采样格式不是子采样格式,它是指在每条扫描线上每4 个连
续的采样点取4 个亮度Y 样本、4 个红色差Cr 样本和4 个蓝色差Cb 样本,这就
相当于每个像素用3 个样本表示。
    (2) 4:2:2 这种子采样格式是指在每条扫描线上每4 个连续的采样点取4
个亮度Y 样本、2 个红色差Cr 样本和2 个蓝色差Cb 样本,平均每个像素用2 个
样本表示。
    (3) 4:1:1 这种子采样格式是指在每条扫描线上每4 个连续的采样点取4
个亮度Y 样本、1 个红色差Cr 样本和1 个蓝色差Cb 样本,平均每个像素用1.5
个样本表示。
    (4) 4:2:0 这种子采样格式是指在水平和垂直方向上每2 个连续的采样点上
取2 个亮度Y 样本、1 个红色差Cr 样本和1 个蓝色差Cb 样本,平均每个像素用
1.5 个样本表示。
2、CIF、QCIF 和SQCIF 格式
    为了既可用625 行的电视图像又可用525 行的电视图像,CCITT 规定了称为
公用中分辨率格式CIF(Common Intermediate Format),1/4 公用中分辨率格式
(Quarter-CIF,QCIF)和(Sub-Quarter Common Intermediate Format,SQCIF)
格式对电视图像进行采样。
    CIF 格式具有如下特性:
    (1) 电视图像的空间分辨率为家用录像系统(Video Home System,VHS)的分辨率,即352×288。
    (2) 使用非隔行扫描(non-interlaced scan)。
    (3) 使用NTSC 帧速率,电视图像的最大帧速率为30000/1001≈29.97 幅/秒。
    (4) 使用1/2 的PAL 水平分辨率,即288 线。
    (5) 对亮度和两个色差信号(Y、Cb 和Cr)分量分别进行编码,它们的取值范围同ITU-R BT.601。即黑色=16,白色=235,色差的最大值等于240,最小值等于16。
    下面为5 种 CIF 图像格式的参数说明。参数次序为“图象格式 亮度取样的
象素个数(dx) 亮度取样的行数 (dy) 色度取样的象素个数(dx/2) 色度取样的行
数(dy/2)”。
    sub-QCIF 128  96   64  48
    QCIF     176  144  88  72
    CIF      352  288  176 144
    4CIF     704  576  352 288
    16CIF    1408 1152 704 576
 

http://www.blogcn.com/u/6/89/52mp4/index.html

关于视频与音频的格式

    作为计算机多媒体技术的重要组成部分的音频与视频技术的发展非常迅速,本文对它们简要的加以介绍
一音频(Audio):

音频格式:
  音频文件主要分为声音文件与MIDI文件两大类型。
       1.MIDI(Music Instrument Digital Interface,乐器数字接口)文件内部存储的不是声音信号,而是各种乐器的发音命令,播放时系统根据这些命令合成乐曲,MIDI文件的优点是非常小,缺点是只能演奏音乐,对其它声音无能为力。

       2.声音文件通常是WAV格式文件,以及由于压缩算法的不同又派生出一些新的声音格式文件,如MP3等。       
      (1)WAV格式文件,是通过对声波的连续采集来记录声音,优点是可以精确地记录各种声音,缺点是文件很大,虽然可以通过降低采样频率,减少声道数目等方法来缩小文件,但这是得不偿失的。
       (2)音乐CD,通过音轨的方式将声音记录在光盘上。
       (3)MP3格式文件是由WAV文件经MPEG-1音频第三层压缩而来的,全称(MPEG-1 Audio Layer 3),因为是有损压缩,所以MP3的声音质量要略低于CD和WAV格式,这种差异用耳朵难以分辨,压缩后MP3文件的体积与WAV文件的比例通常是1:12。       
       (4)RA格式文件(RealAudio),一种适用于Internet的“流式文件”,可以一边下载到本地的内存缓冲区,一边播放,文件比MP3格式的还小,只是音质较差。
       
(5)VFQ格式文件,是NTT公司与YAMAHA公司共同开发的一种新的音乐格式,它具有比MP3更高的压缩比,能达到1:18,而音质与MP3不相上下。
       
(6)WMA格式文件,由Microsoft公司开发,它的音质可以与MP3相比,而大小只有MP3格式的一半,同时支持音频流技术,因此也可以应用于Internet,它的音质要好于RA格式。
       
(7)MP4格式文件,由GMO公司开发,它采用的压缩技术并非采用MPEG-1的第四层,而是MPEG-2的第二层,它的压缩比MP3更高,能达到1:15,而且内嵌播放器,更重要的是它得到了美国唱片行业联合会的支持。

音频文件的播放
       1.MIDI文件,使用Windows自带的媒体播放器。
执行步骤:(1)执行“开始-程序-附件-娱乐-媒体播放器”,打开媒体播放器。
         (2)选择菜单“文件-打开”,单击“浏览”按钮。
         (3)选择相应的MIDI文件。
         (4)按播放按钮播放MIDI文件。
       2.WAV文件,使用Windows自带的媒体播放器,执行步骤与上面相似。
       3.音乐CD,使用Windows自带的CD播放器。
执行步骤:(1)执行“开始-程序-附件-娱乐-CD播放器”,打开CD播放器。
         (2)在光驱中插入一张CD音乐盘。
         (3)按“播放”等按钮控制CD播放。
       4.MP3文件,MP3的播放器很多,这里我们介绍使用最广泛的Winamp。
执行步骤:(1)安装,执行Winamp。
         (2)单击“打开文件”按钮,(类似弹出按钮)。
         (3)按“播放”等按钮控制播放过程。     
注意:多首歌曲连续播放有三个方法:
         (1)打开文件时,按shift复选歌曲。
         (2)使用"PL"按钮,然后添加歌曲。
         (3)在浮动面板上按右键,选“Playlist Editor”。
       5.VQF文件,使用YAMAHA公司的YAMAHA soundVQ player播放软件。
       6.WMA格式文件,使用微软的Windows Media Player播放器。
      7.MP4格式文件,使用Winamp播放器,但需要一个“in_MP$.dll”的plugins(插件)。
音频文件的制作及相互转换
       1.MIDI制作,需专用设备和较强的音乐才能,不是一般发烧友能解决的。
       2.WAV制作,使用Windows自带的录音机。
执行步骤:(1)执行“开始-程序-附件-娱乐-录音机”,打开录音机程序。
         (2)执行“开始-程序-附件-娱乐-音量控制”,打开音量控制程序。
         (3)根据声音来源调整相应的声音通道。
         (4)开始录音。
         (5)将声音存储为WAV文件。
       
3.CD转MP3,这也是最实用的一种转换,现在许多播放器都拥有此功能,如“东方影都”“豪杰超级解霸”等。目前制作MP3的软件数不胜数,就不一一列举了。
       4.RA文件制作,使用Realaudio公司的RealProducer工具软件。
       5.CD音乐制作,硬件上要有光盘刻录机,使用支持音乐CD刻录的刻盘软件,如AudioWriter。
       6.VFQ格式文件制作,使用VQnvert工具软件。
       7.WMA格式文件制作,使用Audio Convert2.0工具软件。
二视频(Video) :
  日常生活中我们接触的VCD、多媒体CD光盘中的动画等都是视频文件。视频文件不仅包含了大量图像信息,还容纳了大量音频信息。
视频格式:
    1.AVI格式   
      AVI的名字叫做音频视频交错(Audio Video Interleaved)格式。它是由Microsoft公司开发的一种数字音频与视频文件格式,原先仅仅用于微软的视窗视频操作环境(VFW ,Microsoft Video for Windows),现在已被大多数操作系统直接支持。AVI格式允许视频和音频交错在一起同步播放,但AVI文件没有限定压缩标准,由此就造成不同的AVI格式之间往往互不兼容。不同压缩标准生成的AVI文件,就必须使用相应的解压缩算法才能将之播放出来。常用的AVI播放驱动程序,主要有Microsoft Video for Windows或Windows 95/98中的Video 1,以及Intel公司的Indeo Video等等。 
      2.MOV格式(QuickTime) 
  QuickTime格式大家可能不怎么熟悉,因为它是Apple公司开发的一种音频、视频文件格式。QuickTime用于保存音频和视频信息,现在它被包括Apple Mac OS、Microsoft Windows 95/98/NT在内的所有主流电脑平台支持。QuickTime文件格式支持25位彩色,支持领先的集成压缩技术,提供150多种视频效果,并配有提供了200多种MIDI兼容音响和设备的声音装置。新版的QuickTime的MOV也可以作为一种流文件格式,包含了基于Internet应用的关键特性。

      3.MPEG/MPG/DAT格式 
  MPEG就是Moving Pictures Experts Group(动态图像专家组)的缩写,由国际标准化组织ISO(International Standards Organization)与IEC(International Electronic Committee)于1988年联合成立,专门致力于运动图像(MPEG视频)及其伴音编码(MPEG音频)标准化工作。MPEG是运动图像压缩算法的国际标准,现已被几乎所有的计算机平台共同支持。和前面某些视频格式不同的是,MPEG是在保证影像质量的基础上采用有损压缩方法减少运动图像中的冗余信息从而达到高压缩比的目的。MPEG压缩标准是针对运动图像而设计的,其基本方法是:在单位时间内采集并保存第一帧信息,然后只存储其余帧相对第一帧发生变化的部分,从而达到压缩的目的。MPEG的压缩比最高可达200∶1,压缩效率之高由此可见一斑。Video 
CD (VCD)、Super VCD (SVCD)、DVD (Digital Versatile Disk)就是全面采用MPEG技术而产生出来的。 
      4.RM(Real Media)格式 
  RM格式是RealNetworks公司开发的一种新型流式视频文件格式。RealAudio用来传输音频数据,RealVideo用来传输连续视频数,RealMedia可以根据网络数据传输速率的不同制定了不同的压缩比率,从而实现在低速率的广域网上进行影像数据的实时传送和实时播放。RealVideo除了可以以普通的视频文件形式播放之外,还可以与RealServer服务器相配合,由RealServer负责广播RealMedia视频文件,在数据传输过程中可以边下载边由RealPlayer播放视频影像,而不必像大多数视频文件那样,必须先下载然后才能播放。
      5.ASF(Advanced Streaming Format)格式 
  Microsoft公司推出的Advanced Streaming Format (ASF,高级流格式),也是一个在Internet上实时传播多媒体的技术标准。ASF的主要部件是NetShow服务器和NetShow播放器。有独立的编码器将媒体信息编译成ASF流,然后发送到NetShow服务器,再由NetShow服务器将ASF流发送给网络上的所有NetShow播放器,从而实现单路广播或多路广播。
视频文件的播放:
       1.微软的Windows Media Player播放器。
可以播放ASF,AVI,MPG格式的视频文件,加入Div X插件后,还可播放MPG4视频文件。
       2.Real Networks公司的Realplayer播放器。
可以播放RM格式的视频文件,还可上网收听音乐及收看电视等视频转播。
       3.Apple公司的QuickTime播放器。
可以播放MOV格式的视频文件。
       4.我国的“东方影都”“豪杰超级解霸”等。
它们是综合性的视频播放软件,支持多种格式的视频文件的播放。
视频文件的制作及相互转换:
       1.AVI文件制作,硬件上需专用音频与视频采集设备,软件上使用Adobe公司的Premiere或友利公司的Media Studio 
Pro进行采集。
       2.MPG文件及DAT(VCD)的制作,使用豪杰超级解霸。
执行步骤:使用豪杰超级解霸播放视频文件时暂停,选择要采集段落的开始和结尾,输入MPG文件的文件名,开始转换。
       3.MPG4文件的制作,使用豪杰超级解霸2000+。
       4.RM文件制作,使用Realaudio公司的RealProducer工具软件。
       5.ASF格式文件制作,使用Sonic Foundry Stream Anywhere工具软件及Windows Media Toolkit工具软件。


MPEG-4视频编码核心思想及技术研究

  当今时代,信息技术和计算机互联网飞速发展,在此背景下,多媒体信息已成为人类获取信息的最主要载体,同时也成为电子信息领域技术开发和研究的热点。多媒体信息经数字化处理后具有易于加密、抗干扰能力强、可再生中继等优点,但同时也伴随海量数据的产生,这对信息存储设备及通信网络均提出了很高要求,从而成为阻碍人们有效获取和使用信息的重大瓶颈。

  因此研究高效的多媒体数据压缩编码方法,以压缩形式存储和传输数字化的多媒体信息具有重要意义。作为多媒体技术的核心及关键,多媒体数据压缩编码近年来在技术及应用方面都取得了长足进展,它的进步和完善正深刻影响着现代社会的方方面面。

 2 视频编码研究与MPEG标准演进

  人类获取的信息中70%来自于视觉,视频信息在多媒体信息中占有重要地位;同时视频数据冗余度最大,经压缩处理后的视频质量高低是决定多媒体服务质量的关键因素。因此数字视频技术是多媒体应用的核心技术,对视频编码的研究已成为信息技术领域的热门话题。

  视频编码的研究课题主要有数据压缩比、压缩/解压速度及快速实现算法三方面内容。以压缩/解压后数据与压缩前原始数据是否完全一致作为衡量标准,可将数据压缩划分为无失真压缩(即可逆压缩)和有失真压缩(即不可逆压缩)两类。

  传统压缩编码建立在仙农信息论基础之上的,以经典集合论为工具,用概率统计模型来描述信源,其压缩思想基于数据统计,因此只能去除数据冗余,属于低层压缩编码的范畴。

  伴随着视频编码相关学科及新兴学科的迅速发展,新一代数据压缩技术不断诞生并日益成熟,其编码思想由基于像素和像素块转变为基于内容 (content-based)。它突破了仙农信息论框架的束缚,充分考虑了人眼视觉特性及信源特性,通过去除内容冗余来实现数据压缩,可分为基于对象(object-based)和基于语义(semantics-based)两种,前者属于中层压缩编码,后者属于高层压缩编码。

  与此同时,视频编码相关标准的制定也日臻完善。视频编码标准主要由ITU-T和ISO/IEC开发。ITU-T发布的视频标准有H.261、 H.262、 H.263、 H.263+、H.263++,ISO/IEC公布的MPEG系列标准有MPEG-1、MPEG-2 、MPEG-4 和MPEG-7,并且计划公布MPEG-21。

   MPEG即Moving Picture Expert Group(运动图像专家组),它是专门从事制定多媒体视音频压缩编码标准的国际组织。MPEG系列标准已成为国际上影响最大的多媒体技术标准,其中MPEG-1和MPEG-2是采用以仙农信息论为基础的预测编码、变换编码、熵编码及运动补偿等第一代数据压缩编码技术;MPEG-4(ISO/IEC 14496)则是基于第二代压缩编码技术制定的国际标准,它以视听媒体对象为基本单元,采用基于内容的压缩编码,以实现数字视音频、图形合成应用及交互式多媒体的集成。MPEG系列标准对VCD、DVD等视听消费电子及数字电视和高清晰度电视(DTV&&HDTV)、多媒体通信等信息产业的发展产生了巨大而深远的影响。


常见视频格式解析
现在网上的视频格式实在太多,我将这些格式整理了一下,给大家分享。有没有写全的,请回复。
目前,国际上有两大公认的音视频编码标准化组织:一个是国际电信联合会ITU属下的视频编码专家组VCEG(Video Code Expert Group), VCEG制定的H.261、H.262、H.263已成为电视会议的视频压缩标准,最新推出的H.264是为新一代交互视频通讯制定的标准;另一个则名气更大——国际标准化组织ISO属下的运动图像专家组MPEG(Motion Picture Expert Group),MPEG制定的标准有MPEG-1、MPEG-2、MPEG-4、MPEG-4 AVC 、MPEG-7和MPEG-21。 
MPEG-1是较早的视频编码,质量比较差,主要用于 CD-ROM 存储视频,以及大家熟悉的 VCD(Video CD);MPEG-2是一高清视频编码标准,分辨率达到了1920x1080。现在不但用于 DVD-Video ,而且大部分高清电视也采用 MPEG-2 编码, 美国、欧洲、日本都普遍采用MPEG-2编码作为数字视频的压缩标准;MPEG-4是为交互式多媒体通讯制定得压缩标准,几乎包括了所有多媒体、存储媒体和通信的接口;MPEG-4 AVC是一种不同于MPEG-4 的编码,更加适合低带宽传输;MPEG-7是为互联网视频检索制定的压缩标准;MPEG-21 是定义21世纪多媒体应用的标准化技术。 
为了彼此交流的需要,两大国际视频编码标准化组织也相互认证了一些标准,如H.262标准就等同于MPEG-2,而最新的H.264标准则被纳为MPEG-4的一部分。 
我国“数字音视频编解码技术标准工作组” 制定了AVS这一具有自主知识产权的第二代信源编码标准。它的编码效率比MPEG-2高2-3倍,与MPEG-4 AVC和H.264处于同一水平。AVS凭借简洁的技术方案,并回避了AVC的专利许可问题,有望成为中国数字电视的信源编码标准。  
数字视频编码技术上的实力派还有微软的WMV(Windows Media Video),它授权费用低,而且可以在电脑中免费使用,它还是DVD论坛的下一代DVD编码标准之一,因此其应用前景被业界看好。  
此外, 我们经常看到视频网站上的影视节目通常采用realplay的RM、RMVB格式和苹果的quicktime格式, 可以说它们已经成为网上视频的主角。这主要得益于它们较好地平衡了影音效果和文件体积的关系。 
除了以上商业色彩浓厚的编码技术外,民间的视频编码技术也异彩纷呈,例如我们熟知的采用 MPEG-4 视频编码方案的DivX、XivD、3ivX等。
具体分类:
ASF
ASF 是 Advanced Streaming format 的缩写,由字面(高级流格式)意思就应该看出这个格式的用处了吧。说穿了 ASF 就是 MICROSOFT 为了和现在的 Real player 竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式!由于它使用了 MPEG4 的压缩算法,所以压缩率和图像的质量都很不错。因为 ASF 是以一个可以在网上即时观赏的视频“流”格式存在的,所以它的图象质量比 VCD 差一点点并不出奇,但比同是视频“流”格式的 RAM 格式要好。不过如果你不考虑在网上传播,选最好的质量来压缩文件的话,其生成的视频文件比 VCD (MPEG1)好是一点也不奇怪的,但这样的话,就失去了 ASF 本来的发展初衷,还不如干脆用 N AVI 或者 DIVX 。但微软的“子第”就是有它特有的优势,最明显的是各类软件对它的支持方面就无人能敌。
n AVI
n AVI 是 newAVI 的缩写,是一个名为 ShadowRealm 的地下组织发展起来的一种新视频格式。它是由 Microsoft ASF 压缩算法的修改而来的(并不是想象中的 AVI),视频格式追求的无非是压缩率和图象质量,所以 NAVI 为了追求这个目标,改善了原始的 ASF 格式的一些不足,让 NAVI 可以拥有更高的帧率(frame rate)。当然,这是牺牲 ASF 的视频流特性作为代价的。概括来说, NAVI 就是一种去掉视频流特性的改良型 ASF 格式!再简单点就是---非网络版本的 ASF !
AVI
AVI 是 Audio Video Interleave 的缩写,这个看来也不用我多解释了,这个微软由 WIN3.1 时代就发表的旧视频格式已经为我们服务了好几个年头了。如果这个都不认识,我看你还是别往下看了,这个东西的好处嘛,无非是兼容好、调用方便、图象质量好,但缺点我想也是人所共知的:尺寸大!就是因为这点,我们现在才可以看到由 MPEG1 的诞生到现在 MPEG4 的出台。
MPEG
MPEG 是 Motion Picture Experts Group 的缩写,它包括了 MPEG-1, MPEG-2 和 MPEG-4 (注意,没有MPEG-3,大家熟悉的MP3 只是 MPEG Layer 3)。MPEG-1相信是大家接触得最多的了,因为它被广泛的应用在 VCD 的制作和一些视频片段下载的网络应用上面,可以说 99% 的 VCD 都是用 MPEG1 格式压缩的,(注意 VCD2.0 并不是说明 VCD 是用 MPEG-2 压缩的)使用 MPEG-1 的压缩算法,可以把一部 120 分钟长的电影(未视频文件)压缩到 1.2 GB 左右大小。MPEG-2 则是应用在 DVD 的制作(压缩)方面,同时在一些 HDTV(高清晰电视广播)和一些高要求视频编辑、处理上面也有相当的应用面。使用 MPEG-2 的压缩算法压缩一部 120 分钟长的电影(未视频文件)可以到压缩到 4 到 8 GB 的大小(当然,其图象质量等性能方面的指标 MPEG-1 是没得比的)。MPEG-4 是一种新的压缩算法,使用这种算法的 ASF 格式可以把一部 120 分钟长的电影(未视频文件)压缩到 300M 左右的视频流,可供在网上观看。其它的 DIVX 格式也可以压缩到 600M 左右,但其图象质量比 ASF 要好很多。
DIVX
DIVX 视频编码技术可以说是一种对 DVD 造成威胁的新生视频压缩格式(有人说它是 DVD 杀手),它由 Microsoft mpeg4v3 修改而来,使用 MPEG4 压缩算法。同时它也可以说是为了打破 ASF 的种种协定而发展出来的。而使用这种据说是美国禁止出口的编码技术 --- MPEG4 压缩一部 DVD 只需要 2 张 CDROM!这样就意味着,你不需要买 DVD ROM 也可以得到和它差不多的视频质量了,而这一切只需要你有 CDROM 哦!况且播放这种编码,对机器的要求也不高,CPU 只要是 300MHZ 以上(不管你是PII,CELERON,PIII,AMDK6/2,AMDK6III,AMDATHALON,CYRIXx86)在配上 64 兆的内存和一个 8兆 显存的显卡就可以流畅的播放了。这绝对是一个了不起的技术,前途不可限量!
QuickTime 
QuickTime(MOV)是 Apple(苹果)公司创立的一种视频格式,在很长的一段时间里,它都是只在苹果公司的 MAC 机上存在。后来才发展到支持 WINDOWS 平台的,但平心而论,它无论是在本地播放还是作为视频流格式在网上传播,都是一种优良的视频编码格式。到目前为止,它共有 4 个版本,其中以 4.0 版本的压缩率最好!
REAL VIDEO
REAL VIDEO (RA、RAM)格式由一开始就是定位就是在视频流应用方面的,也可以说是视频流技术的始创者。它可以在用 56K MODEM 拨号上网的条件实现不间断的视频播放,当然,其图象质量和 MPEG2、DIVX 等比是不敢恭维的啦。毕竟要实现在网上传输不间断的视频是需要很大的频宽的,这方面 ASF 的它的有力竞争者!
普通的rm格式是real8.0格式,采用的是固定码率编码。多见于VCD-rm,呈流行了一段时间。但由于VCD片源的先天不足,不够清晰,所以压出来的rm也不会清晰。特别是标准在线的225kbps码率,清晰度简直惨不忍睹。
RMVB比RM多了一个VB,VB指的就是variable bit,动态码率的意思!就是real公司的新的编码格式9.0格式。rmvb(real9.0)和rm(real8.0)在音频的编码上都仍旧是采用8.0格式,我们压片时至少采用32kbps sterero music,通常时44K,MTV类的有用到96K,再高就没必要压缩了!


MPEG基础知识

前序:
因为本人工作的原因,MP3这块做了1年多,算是比较熟悉。而相对MP3来讲,MP4这块情况相对复杂些,其一,标准不象MP3这么分明,其二由于加入视频这块,比较复杂,所以,刚开始连自己都被MP4搞的头昏脑涨,因此,我整理个专题,其中有原创也有转载,基于我之前给一些朋友的公司做过MP4的培训,把这些材料整理成文,希望对广大入门级的MP4fans有所帮助!呵呵。闲话少说,开始我们的入门知识。我想从以下几个方面讲起。
(一)MPEG基础知识
(二)MPEG-4不同压缩编码格式
(三)常见视频格式解析
(四)什么是MP4?常见品牌的命名解释,MP4硬件架构
(五)主流MP4产品解决方案
(六)MP4屏幕类型

(一)MPEG基础知识
MPEG的全称是“MotionPictureExpertGroup”(移动影像专家组),组建于1988年,目的是为传送音频和视频制定标准。
MPEG-1:
广泛的应用在VCD的制作和一些视频片段下载的网络应用上面,可以说99%的VCD都是用MPEG1格式压缩的。我们目前习惯的MP3,并不是MPEG-3,而是MPEG1layer3,属于MPEG1中的音频部分。MPEG1的像质等同于VHS,存储媒体为CD-ROM,图像尺寸320×240,音质等同于CD,比特率为1.5Mbps。
该标准分三个部分:
  1.系统:控制将视频、音频比特流合为统一的比特流。
  2.视频:基于H.261和JPEG。
  3.音频:基于MUSICAM技术。
MPEG-2:
应用在DVD的制作(压缩)方面,同时在一些HDTV(高清晰电视广播)和一些高要求视频编辑、处理上面也有相当的应用面。
目标:
---------------------------------------------------------------
Level   size  Pixels/secbit-rat  Application 
---------------------------------------------------------------
Low    352x240  3M  4  consumertapeequiv.
Main    720x480  10M  15  studioTV 
High1440 1440x1152 47M  60  consumerHDTV 
High   1920x1080 63M  80  filmproduction 
---------------------------------------------------------------
•与MPEG-1的区别:
 1.除了对帧(frame)进行搜索,还对场(field)进行搜索。
 2.MB色度格式还可为4:2:2、4:4:4。
 3.帧尺寸最大可为16383×16383
 4.可分级(Scalable):时域(Temporal)等等……
 5.非线性MB量化因子。
 6.Abunchofminorfixes
MPEG-3:
原本针对于HDTV(1920×1080),后来被MPEG-2代替。
MPEG-4:
针对多媒体应用的图像编码标准。
是一种新的压缩算法,使用这种算法的ASF格式可以把一部120分钟长的电影(未视频文件)压缩到300M左右的视频流,可供在网上观看。其它的DIVX格式也可以压缩到600M左右,但其图象质量比ASF要好很多。
MPEG-7:
基于内容表示的标准,应用于多媒体信息的搜索,过滤,组织和处理。
—————————————————————————————————————————————————
由以上学术文章可以表达出以下几点核心:
第一:MPEG-1就是家里的VCD,MPEG-2就是家里的了DVD,MPEG-3被淘汰,MPEG-4文件相对体积非常小,常见的700M/2小时,但是图象质量基本接近DVD。
第二:之所以叫MP4,有一大部分人定义为:能播放MPEG-4编码标准的机器就叫MP4。。所以,根据这个标准,就知道市面上到底哪些是在挂羊头,卖狗肉。
第三:所谓MP3,就不是大家眼睛中的MPEG-3,以后听到有人说MP3就是MPEG-3的朋友要指正他哦。正确的叫法为:MPEG1-layer3。

(二)MPEG-4 不同压缩编码格式
MP4播放器所支持的编码格式可以说是非常混乱,除了PMC,由于硬件平台的没有统一的标准,软件系统也是由厂商自行设计,这是造成MP4播放器的解码兼容性和解码稳定性参差不齐的根本原因;另外,由MPEG-4编码体系洐生出来的格式很多,除PMC之外的MP4,解码兼容性和硬件有关,这就大大增加了解码的难度,视频格式本来就多例如AVI,ASF,MPG,WMV,再加上编码算法也多:MPEG-1,MPEG-2,MPEG-4,而大多MP4播放器所支持的MPEG-4编码,又有多种衍生的编码算法:DivX、XviD、H.263、 MS MPEG-4 3688 、 Microsoft Video1 、Microsoft RLE......
  流媒体格式当中,微软所开发的ASF和WMV都是采用MPEG-4编码的,部分MP4支持ASF或WMV这两种流媒体格式。mpg格式既可以是MPEG-1和MPEG-2编码又可以是MPEG-4编码。

MPEG4编解码器-DivX和Xvid的历史与未来

http://xpatrick.spaces.live.com/
简述:DivX和Xvid的历史与未来,基于MPEG-4的两种影音压缩技术
简述:DivX和Xvid的历史与未来,基于MPEG-4的两种影音压缩技术

如今的电影是越来越好看,拍摄、制作的特技效果越来越精彩,人们期待的程度越来越高,盗版也越来越多;同时电影制作公司的防盗版技术做的越来越高明。但有句老话叫:"道高一尺,魔高一丈",无论你的电影多精彩、防盗技术多高明,总是有人偏偏能够把你"盗"出来,而且还"盗亦有盗",在保持"原版原味"的条件下,占用的空间变得越来越小,操作越来越灵活、简单,越来越方便传播。而且这种技术随着版本不断更新,画质越来越贴近原版、压缩速度越来越快、压缩/播放进程对计算机的需求越来越低。这就是DivX时代的新生力量――XviD。


  黑格尔说过"存在即合理"

  随着时代的进步,社会的发展,在计算机视频技术方面更是突飞猛进。如今视频的业界标准已经到了DVD时代。主流的DVD光驱的价格已经降到400元人民币以内。DVD播放机的价格最便宜的已经降到了700元。但是这些都是近期发生的事情,目前仍有一大群only CD-ROM群体,他们不愿意再投资去买DVD光驱,有的甚至由于机器无法再扩充而不能购买DVD光驱。这便促使另一个的解决方案的萌发。

  除此之外,互联网宽带的普及,Adsl宽带入户,P2P软件的泛滥,使得650MB的大文件轻松的实现异地传输。还有正版DVD大片的价格居高不下,也是正版DVD普及化的一大障碍。

  基于以上因素的存在,有一种新的视频压缩技术出现,那就是DivX,即"压缩电影"。压缩电影的技术有很多种,但是DivX最为普及,它广泛流传于互联网与盗版盘。

  随着时间的推移DivX再推出刚刚推出不久,就不断推陈出新,从DivX3.11到DivX4 ,目前最新版本为DivX5.02。本来版本越高,技术也就越高、播放的质量应该更好、更清晰。但是事实告诉我们随着版本的提升,压缩后的播放效果提升不明显,压缩所用的时间越来越长,压缩后的体积没有太大的进步,甚至有的使用DivX5.02压缩以后会出现跳帧的问题。这到底是为什么呢?难道视频压缩技术已经达到顶峰不能够再穿越了么?

  目前又出现一种新的压缩技术名为XviD,在视频业界初见端倪,就目前来看它的压缩时间就是一大卖点,它可以在保持DivX5的画质的基础上,大大提高压缩时间。

  光从名字上看就可以看出Xvid与Divx,他们之间肯定有着千丝万缕的联系,大家一定想知道。下面就为大家谈谈关于XviD的故事。

  Long long ago…

  故事的经过是这样的。

  早在1998年微软开发了第一个(也是唯一的)在PC上使用的MPEG-4(注)编码器,它包括MS MPEG4V1、MS MPEG4V2、MS MPEG4V3的系列编码内核。其中的V1和V2用来制作AVI文件,一直到现在它都是作为Windows的默认组件。不过V1和V2的编码质量不是很好,一直到MS MPEG4V3才开始有好转,画质有了显著的进步。但是不知微软出何居心,却将这个MS MPEG4V3 的视频编码内核封闭在仅仅应用于Windows Media流媒体技术上,也就是说,我们经常看到的ASF流媒体文件中。ASF文件虽然有一些优势,但是由于过分的封闭,不能被编辑,未得到广泛的应用。这便惹怒了不怕天不怕地的视频黑客和置于钻研视频编码的高手。后来,这些小组不仅破解了微软的视频编码,而且经过他们的修改,一种新的视频编码诞生了。那就是广为流传的Mpeg4编码器――DivX3.11。

  随后一发不可收拾,DivX被传得红得发紫,很快就成了业界的标准。但是问题同样很快的出现了,DivX的基础技术是非法盗用微软的,只能在地下里流传,却上不了台面,正所谓"名不正,言不顺",无法进行广泛的发展,即产品化,更无法生产硬件播放机。


  "生产力要改变生产关系"

  在这种情况的迫使下,一些视频编码的高级程序员(包括原DivX 的开发者)组建了一家公司,名为DivXNetworks Inc。这家公司发起一个完全开放源码的项目,名为"ProjectMayo",目标是开发一套全新的、开放源码的MPEG4编码软件。由于它完全符合ISO MPEG4标准,又是完全开放源代码(就象linux操作系统),OpenDivX CODEC吸引了很多软件、视频高手参与。人力、物力大大投入,OpenDivX编码器和解码器原型很快便公布于众,之后又开发出具有更高性能的编码器Encore 2等等。这DivX的辉煌时期。

  虽然主要编码工作是DXN的人在做,但许多的技术难关的突破完全得力于来自开放源码社会的帮助。

  DivX的优势被人们所接受,高品质的DVD电影的容量一般为5GB,但经过DivX编码后的大小只有650MB,仅仅为原DVD容量的八分之一,图像品质却与DVD相当。它可以通过互联网相互传输,还可以报存在一张CD光盘(650MB)上。


  DXN的野心:

  DivXNetworks一直希望DivX能成为好莱坞巨头们选择的行业标准,并可以通过互联网进行传输的视频文件,就像唱片发行公司不得不接受MP3格式,并使用它在网上传输音乐文件一样。DXN希望并计划在网上出售视频内容的公司达成技术转让的协议。但是,到目前为止,它尚未和任何一家主要的、甚至具有影响力的电影制片公司达成这类协议。

  很可惜的是想DivX这么好的电影只能在电脑上播放,目前还没有一款播放机能够播放这样的光盘。日前,DXN已经来到了中国,这家公司的负责人表示,目前有许多美国人都希望能买到采用这一技术的DVD播放设备,但全球还没有人能生产,所以他希望能与中国的DVD制造商携手,在年内拿出产品,并且首先在美国推出。


  "天底下真的好人多么?那么小人算好人么?"

  就在DivX顺利发展时期,DivX的技术逐渐成熟,商机无限的时候,一台好戏上演了。由于DivX的技术不是依据GPL协议(通用公共许可证,一种开放源码项目中常用的保障自由使用和修改的软件或源码的协议),而是LGPL协议(注)。这是DXN公司为自己留的后门。

  2001年7月就在Encore2基本成型的时候,DXN公司突然封闭了DivX的原代码,并在此基础上发布了自有产品DivX4。DivX 4的基础就是开放源代码OpenDivX中的Encore 2,DXN利用了DivX的招牌。DNX公司这么做,可以说是初其不备的摆了所有人一刀。开放源码社会就这样被狠狠地涮了一回,他们是那么的无辜。

  DXN公司趁热打铁,很快推出了DivX5,但是DivX5没有比DivX4强到哪里去,甚至有bug,更可气的是这一版本还要收费。可怜阿,有那么多无偿为DivX技术付出的智慧与劳动的人,可悲阿,他们为一值都在无偿的为DNX公司赚钱。这种垄断和一直处于垄断地位的微软来说,DXN要更恨、更毒。

人世间还是好人多!正义当头!

  首先是全球整个0dayz组织(注)永远的拒绝了DXN公司的DivX4/5。

  被人"涮"了一把的开源社团决定另起门户,逐渐重新聚拢开发力量,在OpenDivX版本的基础上,再次开发出一种新的MPEG-4编码、解码软件。这就是:XviD。从技术上来说XviD已经基本上与DivX5接近,或者还有所超越;

  春天来了:

  近一年来XviD继承并发展了曾经的OpenDIVX Encore 2,并且使其的性能、效率的到了极大的提升,被认为是目前最快的MPEG4编码。这是因为XviD重新改写了所有原代码,焕然一新。除此之外,Xvid还吸收了前车之鉴,依照GPL发布。(不再是以前DivX的LGPL,也就是说:谁要是想用它做成产品而不开放源码是非法的)而且在2002年,也就是今年,TDX2002(全球最著名的地下电影发行组织,每年在网上放出数千部最新而且高品质影片RIP)已经接纳XviD为官方标准。这样TDX2002就有了两个正式标准:DivX 3.11与XviD。而DivX 4、5像其它封闭的商业软件一样,被永远拒绝。

  报应来了!

  对开源软件下毒手的人远不止DXN一家,目前因为一家商业软件公司盗用XviD源代码,而被迫停止开发。具体的情况请参阅:http://www.xvid.org

  DivX 4/5  XviD  
出品公司 DivXNetworks Inc 开放源代码(GPL授权) 
推出时间 1998年 2002年2月 
创始人 罗达(Rota)及电脑黑客基尔(Gej) 被DXN"涮"的人 
TDX2002认证 Yes Yes 
oDay认证 No Yes 
最新版本 5.02 1.3+ 
费用 收费 免费 
压缩时间 长 稍短 
图像质量 高、接近DVD 高、接近DVD 
压缩容量 较小 较小 
编码容量 3.4MB 359K 
优化设置 一般 强大的可调节性,使用这可设置很多选项,分别针对不同电影进行不同方式的压缩。

  XviD使用技巧:

  关于XviD压缩设置的文章很多,XviD可以调节的选项很细,由于篇幅限制,不再本文的讨论之内。在这里,我推荐大家使用"2-Pass"编码, 因为它能给我们更精确的最终文件大小,并且生成最佳质量的编码 (在文件大小相同的情况下)。


  只安装DivX5的编解码器不能播放由Xvid压缩的电影。但是只安装XviD编码,可以顺利播放DivX5压缩的电影。但是在播放DivX5电影的时候,速度不能让人满意。加上ffdshow(注)之后效果明显改善。看来XviD在播放divX5的还不是很完善。

  虽然XviD到目前来讲与DivX5对战,仍有些身单力薄,优势不是很明显。但是笔者很看好XviD。首先,它是绝对开放源代码,这使得有更多的人投入到XviD的研发之中。还有,它完全重写DivX的原代码,让新的XivD去粗取精、焕然一新;目前XviD的开发人员有很多都是当初DivX的研发人员,对DivX的错误了解得很清楚,重写之后,XivD的地层优势可见一斑。另外,DivX4/5虽然版本不断更新,但是功能提升并不高,优势不明显。XviD是新生力量,而且充满了复仇的力量。祝XviD一路走好。

  XviD版本的历史:

  1.0  2002年2月17日 第一版 ,首次发布
  1.0  2002年2月28日 大量的修正和更准确地解释
  1.1  2002年3月2日 分析澄清了很多概念
  1.2  2002年3月4日 加入量化矩阵(quantization matrix), 移去量(removed quant). 柔和(smoothing) 技术
  1.3  2002年3月8日 关于 Nic's XviD Directshow Filter 的详释
  1.3+ 2002年7月23日 按照Nic's XVID Codec校正补充部分内容(目前最新版本)

  关于DivX起源的小知识:

  这种名为DivX 的技术,由一个27岁的法籍影音发烧友罗达(Rota)及电脑黑客基尔(Gej)创造出来得。

  原来DivX所采的技术并非这两位仁兄发明的,他们只不过是个盗版天才。随着Windows的大行其道,微软开发了MPEG-4技术,能够将视频影像文件容量压缩到很小。罗达与基尔将程式重写一遍,但将其改名为DivX,且放在网上随意任人下载。

  微软声称将对所有推动DivX发展的人、企业作出追究。可是罗达正全面申请将他们的DivX合法化。由于DivX虽然是从Windows的发明出来的,但却没有用过任何微软的技术。而且,他更与美国一些技术人士及财经人员开会,和组新公司 ProjectMayo.com全力推广DivX。

  其实,DivX是视频DVD的另一种保存方式,要靠DeCSS程序(注)才能做到。因为DVD本身有防复制的标记,让DVD不能随便复制到电脑里,但DeCSS能将它解码,令其可以复制,压缩成DivX电影。针对这一做法,各大电影商立即采取行动,防止DeCSS外流及散播,但为时已晚,DeCSS在Yahoo!、Google上都能找到。 

  名词解释:

  TDX2002组织:全球最著名的地下电影发行组织,每年在网上放出数千部最新而且高品质影片RIP。

  0day组织:全球著名的破解组织。其意思为在不到一天的时间里破解软件(自然包括游戏,软件,现在还涉及到其他东西),0Day只是一个统称(和WareZ的意思一样)。成为他们旗下的会员就可以获得他们提供给你的帐号,当然由于要求严格,所以一般是很难进入的!!(这里我只提醒一下,多留意NFO文件里的信息).

  DeCSS程序:乔•约翰森编写的小程序,仅有57K,不仅震撼了好莱坞,还引发了无数的法律纠纷。他创造出来的“小魔怪”,如今已经成了好莱坞制片商们最恨之入骨的冤家对头。DeCSS程序能够将正版加密的DVD影片复制到计算机硬盘上。它还可以将这些影片上传到互联网上。

  MPEG-4技术:是一种崭新的低码率、高压缩比的视频编码标准,传输速率为4.8~64kbit/s,使用时占用的存储空间比较小。目前的DivX(最新的XviD)电影都采用的此技术,现在被广泛采用。

  GPL协议:通用公共许可证,一种开放源码项目中常用的保障自由使用和修改的软件或源码的协议。

  LGPL协议:次级GPL(Lesser GPL),与GPL一样,是一种公共许可证。与GPL的最大不同是它允许私有。

  Ffdshow:一个支持 Xvid、MPEG4-V3 MPEG4-V2 以及 DivX 所有版本所制作的视频文件的播放软件,占CPU 资源比较少。


《MPEG-4压缩标准之三国演义》
  运动图像专家组,英文简称MPEG(Moving Picture Experts Group)隶属于ISO/IEC的一个专家工作组,主要负责为数字音视频编码算法开发和制定标准。该组织始建于1988年,并于1992年制定出MPEG0-1标准,它是将视频数据压缩成1-2Mb/s的标准数据流,工业产品VCD机和MP3播放器都是以该标准为基础洐生出来的。随后的1994年,制定出MPEG-2标准,它是为了获得更高的分辨率(720*486),提供广播级视频和CD品质的音频而产生的高质量音视频编码标准,传输速率在3-10Mbit/s之间,它也是数字电视、DVB和DVD所遵循的压缩标准。
  随着研究工作的深入发展,ISO又公布了“超低比特率活动图像和语音压缩标准”,排序MPEG-4,1998年10月批准第一版,1994年4月又公布了第二版及其校验模型(VM),MPEG-4正式编号是ISO/IEC国际标准14496,它是一种新型的多媒体标准,它与前标准一个重要区别就在于它是一个基于对象的视编码压缩标准,它所定义的码率控制的目标就是获得在给定码率下的最优质量,它为互联网上传输高质量的多媒体视频提供了很好的技术平台。
  1998年微软开发了第一个在PC上使用的MPEG-4编码器,它包括MS MPEG4V1、MS MPEG4V2、MS MPEG4V3的系列编码内码,其中V1和V2用来制作AVI文件,一直到现在它都是作为Windows的默认组件,不过V1和V2的编码质量不是很好,一直到MS MPEG4V3才开始有好转,画质有了显著的进步,但是不知微软出何居心,却将这个MS MPEGV3的视频编码内核封闭,仅仅使其应用于Windows Media流媒体技术上,也就是我们熟悉的ASF流媒体文件中,ASF文件虽然有一些优势,但是由于过分的封闭不能被编辑,末得到广泛的应用,这便惹怒了那些个不怕天不怕地的视频黑客和致力于钻研视频编码的高手,后来,这些小组不仅破解了微软的视频编码,而且经过他们的修改,一种新的视频编码诞生了:那就是广为流传的MPEG编码器-DivX3.11。
  DivX采用了MS的MPEGV3,改良后并加入自己功能称之为DivX3.11,也是目前互联网上普通采用的MPEG-4编码器之一。很快,DivX被传得红得发紫,几乎成了业界的标准,但是总是同样很快的出现了,DivX的基础技术是非法盗用微软的,微软声称将对所有推动DivX发展的人、企业进行追究,可是DivX技术的创造者之一罗达(Rota)正全面申请将DivX合法化,这是基于DivX虽然是从Window的发明出来的,但却没有用过任何微软的技术,更组建新公司DivXNetworks全力推广DivX,看来DivX(俗称压缩电影)蓬勃发展的大潮是势不可挡了。
  然而——看来任何吸引眼球的故事在关键时刻都会发生转折,DivX的发展竟也不能脱离这一俗套,就在DivX顺利发展时期,DivX的技术逐渐成熟,商机无限的时候,一台好戏上演了,DivXNetworks成立初衷就是摆脱微软的技术封闭,因而发起一个完全开放源码的项目,名为“Projet Mayo”,目标是开发一套全新的、开放源码的MPEG4编码软件,由于它完全符合ISO MPEG标准,又是完全开放源代码,OpenDivXCODEC吸引了很多软件,视频高手参与,很快便开发出具有更高性能的编码器Encore2等等,就在DivX最辉煌的时期,DXN公司突然封闭了DivX的源代码,并在Encore2的基础上发布了自有产品DivX4,原来DXN早就给自己留了后门,DivX采取的是LGPL协议,而不是GPL协议,虽说它们都是公共许可证协议,保障自由使用和修改软件或源码的权利,但LGPL允许私有,DXN就是利用这一协议初其不备的摆了所有人一刀。
  接着——就象好莱坞复仇电影那样,所有被DXN公司狠狠涮了一回的软件、视频团体另起门户,逐渐重新聚拢开发力量,高举复仇大旗,在OpenDivX版本基础上,再次开发出一种新的MPEG-4编码--XviD,名字的顺序和Divx刚好相反,仅仅从名字就可以看出Xvid充满了复仇的力量。
  从技术上来说,Xvid已经基本上与DXN公司的最新版本DivX5接近,或者还有所超越,它可以在保持DivX5画质基础上,大大提高压缩时间,被认为是目前最快的MPEG4编码。除此之外,Xvid还吸收了前车之鉴,依照GPL发布,也就是说,谁要是想做成产品而不开放源码是非法的。
  跌宕起伏的故事讲完了,从技术和应用上来说,MPEG是非常好的压缩技术,甚至有人说它是21世纪数字视频压缩的标准,由于从MPEG-4洐生出来的格式很多,并且各大电影厂商也对MPEG-4技术存有戒心,虽然在互联网上可以找到基于MPEG-4标准的高质量的电影节目,但实际支持MPEG-4技术的硬件产品不是很多,Sigma公司的MPEG4解码卡NS4000支持ISO MPEG4和DivX,但却不兼容微软公司的WMV,直到Snazzi推出Snazzi*DV AVIO,全面兼容MPEG-4的WMV、DivX和Xvid格式,是一款性价比极高的MPEG-4实时编解码卡。今天,我们终于有幸用硬件实时制作高画质的MPEG-4格式的电影了,随着科技的飞速发展,相信今后会有更多MPEG-4硬件产品可供我们选用。MPEG-4的春天就要来了。

================================================================================
好,艰涩的文字看完,动人的历史故事看完,有朋友会说:原来MPEG-4这么复杂,充满了传奇的色彩。呵呵,我看完文章也有这样感受,结合实际,总结如下几点:
第一:微软的ASF格式,WMV,采用DIVX,XVID编码的AVI格式,全部都是MPEG-4编码。因此,能播放以上格式的,可以统称为MPEG-4播放器,简称MP4

第二:MPEG-4并没有确定必须用什么扩展名,它只是一种编码方法而已,使用avi作为扩展名,是一种习惯性的沿用,这和标准的AVI是有所区别的。现在主流的MP4一般都支持DivX或Xvid编码的avi格式,但是其它很多编码的avi就不一定支持了。最后一提,格式兼容性还跟视频格式的分辨率,桢率和比特率有关,一个支持DivX的MP4播放器,却播放不了DivX的avi,很可能跟前面的三个因素有关。

mpeg_4编解码技术意义

   现在,我们又迎来了一次媒体革命,它就是mpeg_4,它以其出色的媒体性能,图形质量接近dvd,声音品质接近cd,同时又有更高的压缩比而迅速火爆起来,在多媒体领域掀起狂澜。那么,到底什么是mpeg呢?

       我们知道,多媒体信息主要包括图像、声音和文本三大类,其中视频、音频等信号的信息量是非常大的。对于音频处理来说,传输数字图像所需的带宽远高于前者,例如,ntsc图像以大约640*480的分辨率,24bits像素,每秒30帧的质量传输时,其数据率达28mb字节/秒或221mb/秒。而且以这个速率保存的15秒的未压缩视频图像将占用420mb字节的内存空间,显然这样的要求对台式计算机来说是难以接受的,所以,视频图像的压缩编码方法mpeg就应运而生了。

      mpeg本是动态图像专家组(moving pictures experts group)的英文缩写,这个专家组始建于1988年,专门负责为cd建立视频和音频标准,其成员均为视频、音频及系统领域的技术专家。由于iso/iec1172压缩编码标准是由此小组提出并制定mpeg由此扬名世界,对于今天我们所泛指的mpeg_x版本,是指一组由itu(international telecommunications union)和iso(international standards organization)制定发面的视频、音频、数据的压缩标准。mpeg_4就是mpeg的第4个版本,mpeg的缔造者们原先打算开发4个版本;mpeg_1~mpeg_4,以适用于不同带宽和数字字影像质量的要求。后由于mpeg—3被放弃,所以现存只有三个版本的mpeg:mpeg-1,mpeg-2,mpeg-4.

     总体来说,mpeg在三方面优于其他压缩/解压方案。首先,由于在一开始它就是做为一个国际化的标准来研究制定,所以,mpeg具有很好的兼容性。其次,mpeg能够比其他算法提供更好的压缩比,最高可达200:1,更重要的是,mpeg在提供高压缩比的同时,对数据的损失很小,mpeg在发展过程中经历了以下过程:

     mpeg-1 制定于1992年,为工业级标准而设计,可适用于不同带宽的设备,发cd-rom、video-cd、cd-i.它可针对sif标准分辨率(对于 ntsc制为352*240;对于pal制为352*288)的图像进行压缩,传输速率为1.5mbits/s,最高可达4-5mbits/s,每秒播放30帧,具有cd(指激光唱盘)音质,质量级别基本与vhs相当。
mpeg-2 制定于1994年,设计目标是高级工业标准的图像质量以及更高的传输率,mpeg-2所能提供的传输率在3-15mbits/sec间,其在ntsc制式下的分辨率可达720*486,mpeg-2能够提供广播级的视像和cd级的音质。mpeg-2的音频编码可提供左右中及两个环绕声道,以及一个加重低音声道,和多达7个伴音声道。除了做为dvd的指定标准外,mpeg-2还可用于广播,有线电视网,电缆网以及卫星直播提供广播级的数字视频。
     mpeg-4就是在mpeg-1、mpeg-2进入广泛的实际应用之时,mpeg小组又于1998年发布了mpeg-4标准的草稿,该标准对压缩算法进行了改进:mpeg-1和mpeg-2的压缩率大概在20到30倍之间,而DVD一片4.7gb的资料量。可以存放超过两小时的影片。mpeg-1和mpeg-2的压缩率用在储存媒体上是足够了,但是运用在网络传输上还是很低,尤其是无线通讯方面。于是mpeg-4在订定标准时,为了达到更好的压缩效果,采用了许多新的技术与观念。mpeg-4里是采用了物件的观念。压缩之前先将影片中各个主要物件区分开来。例如电视新闻播报的场景中,主播是一个物件,播报台、背后的布景、主播旁边的3D玩偶也分别是一个物件。主播的声音也是一个物件,在影片进行中,主播会有轻微的移动。播报台是固定不动的。而布景则有时候会播放新闻影片。将各个物件分隔开来有什么好处呢?那就是可以针对不同的物件特性采取不同的压缩编码技巧,以得到最好的压缩效果。例如播报台只要传送一次资料,以后不再传送,以节省资料量。3D玩偶则用3D动画适用的演算法。主播和新闻影片采用mpeg-2的格式。声音采用MP3的格式。将这些不同的资料整合后结合起来一起传送。解码器收到资料后,先将各个不同格式的资料分开。依照自自的格式解码。再根据时间和空间的关系,将各个物件加以组合。就可以得到原来的影片了。为了达到以上的压缩观念,MPEG—4引进了许多新的压缩技术来应用于各种不同的物件。对于声音部分,可以分成自音、语音和合成音。针对不同发声原理采用不同演算算法。可以根据对音质的要求,而得到2KBITS/64KBITS/S之间的资料量。在影像方面,则可细分为自然物体、2D影像、3D影像、人脸、背景等不同特性物件。根据不同影像特性可以有5KBITS/S到10MBITS/S的资料量,mpeg-4的压缩率可以超过100倍,而仍然保有极佳的音质和画质。可以用最少的数据获得最佳的图像质量,因此满足了低码率应用需求;另外,mpeg-4还把提高多媒体系统的交互性和灵活性作为一项重要的目标,因此它更适合于交互式av服务以及远程监控。为了满足各种应用的需求,mpeg-4标准实际上相当宏大,它具有广泛的适应性和可扩展性。

     就其应用前景而言,mpeg-4未来将在多个应用领域大显身手,如internet/interanet上的多媒体流服务、视频点播、可视游戏、低码率的移动多媒体通信(视频手机等)、交互式式多媒体应用、实时多孀体监控、数字电视与演播电视、虚拟会议等。

     mpeg-4可达到两个目标:低比特率下的多媒体通信和多工业的多媒体通信的综合。

 

关于 XviD 保留的细节比较多的问题。

MPEG 压缩的时候,以每个 16x16 像素方块大小的 MacroBlock 为单位作 ME,然后量化的时候会切成 4 个 8x8 的 Block(微方块),做一种称为 DCT 的转换。经过 DCT 转换以后,8x8 方块里的 64 个像素点的 YUV 值,就变成代表空间频率的系数。人眼对高频比较不敏感,相对的低频的系数就比较重要,所以我们利用量化把高频的系数削掉多一点,保留比较重要的低频系数,在有限的流量的情况下,可以增进肉眼看起来的品质。

XviD 可以使用两种不同的量化方法(Quantization Type),一种是 H.263,另一种是 MPEG。H.263 的量化方法,顾名思义,就是使用 H.263 这个压缩规格所使用的量化方法,量化的时候,8x8 的像素方块内的所有 DCT 系数,全部除以同一个数字。例如全部都除以 32,如果有一个 DCT 系数为 15,小于 32,经过相除之后,会被量化为 0,如此便可以省下很多记录的 bits。当然,除的数字越大,量化的误差也就越大,品质也就越差,但是压缩率会越高,压出来档案会越小。

我们会利用另一个参数来调整量化的误差,控制最后量化的品质和档案的大小,这个参数叫做 Quantizer。量化的系数会再乘上这个 Quantizer 的倍数,例如原本要除的量化系数是 32,Quantizer 是 2,对应的放大倍数也是 2,最后真正要除的量化系数就变成 32*2 = 64。所以 Quantizer 越大,要除的量化系数就越大,量化误差就越大,品质就越差,但是档案也越小。H.263 的量化方法还规定,相邻的两个 MacroBlock 的 Quantizer 不能相差超过 2。

而另一种 MPEG 的量化方法,高低频系数可以除以不同的量化系数,可以视情况将高频削多一点。这个 8x8 的量化系数,也就是 Quantize Matrix(量化矩阵)。XviD 还可以让你自订、编辑这个矩阵的量化系数,你可以依照影片内容、使用码率,自订最适当的量化矩阵。(量化方法要选 MPEG-Custom,同时更改 Edit Quantizer Matrix... 里面的预设量化矩阵,目前这个功能无法和 B-Frame 同时共享)

MPEG 的量化方法对相邻的 MB 使用的 Quantizer 差距并没有限制。根据经验,使用均匀量化矩阵(uniform quantization)的 H.263 量化法,压出来的画面会较模糊。MPEG 量化方法的画面会比较锐利。(不过锐利线条的周围、物体的边缘,会产生一些噪声)MS MPEG-4,也就是 DivX 3.11,使用的是 MPEG 的量化方式,所以一直以来,大家的评价都是 MS MPEG-4的画面比较锐利,保留比较多的细节。

DivX 4, DivX 5 都是使用 H.263 的量化方法,尤其是 DivX 4,画面非常模糊。
虽然表面上看起来压缩瑕疵较少,但是细节都被削光光了。
(可以参考上面 net1999 兄提供的图片)
(DivX 5 其实可以藉由修改 registry 的方法,改成以 MPEG 的量化方式压缩,但是显然有 bug,压出来的东西惨不忍睹)

XviD 则可以让使用者自行选择要固定使用哪种量化方法,或者是视情况切换量化的方法。(量化方法选择 Modulated,Quantizer 小于或等于 3 时会使用 MPEG 量化,大于 3 时使用 H.263 量化。New Modulated HQ 则反过来)

GMC,也就是 S(GMC)-VOP,只有在整个画面上,有大部分的区块都往同一个方向移动时,才能派上用场。譬如说镜头做 pan(由左往右 或 由右往左 平移)的时候,全体由上往下,或由下往上移动,以及 zoom in/zoom out(物体放大缩小)的时候,才会使用 S(GMC)-VOP。(其实还有其他功能,例如变形、旋转的时候,不过目前 DivX 和 XviD 都没有完整的作出这些功能)

使用 GMC 的时候,那个 Frame 会使用 MPEG-4 才有的 Frame Type,叫做 S-VOP。(因为 MPEG-4 是以物件 Object 为单位压缩,所以叫做 Video Object Plane,VOP,视讯物件平面。有 I-VOP/P-VOP/B-VOP 和特别的 S-VOP 这几种 VOP)为了要和 Stripe 做区分,我们又把它叫做 S(GMC)-VOP。
所以要比较 GMC 的使用情形,必须找两个相同的画面,而且是 S(GMC)-VOP(也就是有使用 GMC 的 VOP),才能看出 GMC 的使用结果。

目前 XviD 的 GMC 只有非常简单的功能,现在使用 Global MC 不会比原来的 Local MC 有效率,对压缩没有助益,用了之后档案反而会更大(压缩效率更差,同容量下品质更差)。而且还有一些正确性的问题要修正(要符合 ISO 制订的 MPEG-4 的标准规格,否则便是做错,压出来的东西将来无法为其他标准的 MPEG-4 decoder 解码),所以不建议使用。

XviD 的编程人员每个人都是学富五车,而且是世界上顶尖的编程高手,目前Codec中的问题他们不是不知道,而是还在思考解决的方法。譬如说目前 B-frame 一定要勾选 DX50 B-VOP compatibility,这个 Closed GOV(等于 MPEG-1/2 的 Closed GOP)的问题开发人员不是不知道,而是很困难解决。
(我们来想的话会觉得很简单。没错,理论上很简单,实作就知道有多困难 )

而且开发人员每个人都还有自己的学业、工作要忙,仅能利用一点的闲余时间来从事这项编程工作,所以无法说改就改,立刻就解决这些问题。
不过尽管如此,XviD 仍然是目前世界上,品质最好的 MPEG-4 编码软件... 之一 


XviD中的精彩技术

Quarter Pel = Quarter Pixel = 1/4 Pixel = QPel:
MPEG 压缩的时候,P-Frame 会参考前一个画面压缩,B-Frame 会参考前面或后面,或前后的画面压缩。此时只要纪录和参考画面之间的差异,也就是预测的误差,还有物体移动的方向(动作向量 MV),不用重新压缩整个画面,所以可以节省很多 bits,达到很高的压缩率。

其中又以 B-Frame 的压缩效率最高,因为 B-Frame 可以同时参考前面和后面的画面,以前后画面的平均值((前+后)/2)做为参考画面,可以大幅减少预测的误差。(预测的误差越小,所需花费的纪录误差的 bits 数就越少,档案就越小,压缩效率就越高)同时 MPEG-4 的 B-VOP 还有第四种预测模式,叫做 Direct Mode,直接拿后面的 P-Frame 的 MV除以二作为动作向量,省去记录 MV 的空间,也可以达到很高的压缩效率。

如:
I B P

我们可以预测,B 的物体移动必然是介于 I 和 P 之间,所以 B 的 MV 大概会接近 P 的 MV 的一半。以上是大致的压缩原理,我们回过头来看什么是 QPel。

前面说到 P/B Frame 会在参考画面上寻找最接近的区块,然后记录和这个区块的误差值,以及相距的方向和位置(MV)。
MPEG 压缩的时候是以 16x16 的方块为单位,称为 MacroBlock(MB),一个 MB 一个 MB 地搜寻最匹配、误差最小的参考方块在哪里。
(也就是搜寻这个物体移动到哪里)

搜寻会在一定的范围内搜寻,譬如说在周围 32x32 的范围内搜寻,而不会无限制的扩大搜寻下去。所以当画面上动态很大的时候,物体移动距离较远,超出搜寻范围,或是画面变化的差异太大,我们就找不到误差很小的参考方块,此时压缩率就会下降,需要较多的 bits 来记录。

很明显的,物体的移动和像素(Pixel)的精确度无关,物体不会按照像素的格子,一格一格的移动,每次都移动整数的格子点,刚好落在像素上。
所以我们以整数像素的单位做搜寻、比对,显然无法找到最匹配、最相似、误差最小的参考方块。为了克服这个问题,MPEG-2 压缩的时候,会先将要参考的画面做内插补值(interpolation),

补出像素和像素之间的次像素的数值,如:
A x B
x x x
C x D

像素 A 的值为 11,像素 B 的值为 13,则我们可以预测 A 和 B 之间的次像素 x 的值为 12。依此类推,补出所有的 x 的数值,也就是 1/2 Pixel 的值,再以此 1/2 Pixel 精确度的画面做为参考画面,于其上搜寻最近似的参考方块。
这样,我们就可以找到误差更小的参考方块,压缩率就更高,同品质下档案就更小,同容量下品质就更高。根据测试,使用 1/2 Pixel 精确度的 ME(动作估计),PSNR(Peak Signal to Noise Ratio,讯噪比,常见的一种客观测试影像品质的方法)可以上升 3~5dB。
而 MPEG-4 用的 Quarter Pixel = 1/4 Pel,就是比 1/2 Pel 更精确,再补出 1/2 像素和像素之间的 1/4 Pel,以此做为参考画面。理论上 1/4 Pel 可以再提升 PSNR 2~3dB。
AoxoB
ooooo 
xoxox
ooooo
CoxoD

1/4 Pel

但是,如果 1/4 Pel 没有良好的实作出来,导致用了 1/4 Pel 也没有找到更好的参考方块,那么因为 1/4 Pel 所使用的动作向量 MV 需要原本 1/2 Pel 的双倍精度来记录(如:1.5 --> 1.25),所以压出来的档案反而会变大。(同容量下品质就更差)

早期 XviD 的 QPel 就是没有良好的实作,同时有一些错误,所以对于压缩效率没有助益,使用之后档案反而更大。但是现在 XviD 的 QPel 已经修正完毕,完全符合 MPEG-4 的标准规范,同时也达到理论上它的压缩助益。您可以做一个测试,以同品质压缩(固定 Quantizer),开了 QPel 之后,档案大约会减小 ~3%。这代表同档案大小下,开 QPel 的品质会比没开 QPel 的品质好。


有了以上这些 MPEG 压缩的基础说明,我补充一下上次提到的几个名词说明:
Chroma ME 这个选项
ME = Motion Estimation 动作估计,在参考画面上搜寻最近似的方块,找出相距的距离和方向 => 动作向量 MV = Motion Vector 的过程叫做 ME。
MC = Motion Compensation 动作补偿
将目前要压缩的方块和找到的参考方块相减,纪录它们之间的误差值,以便在解压缩的时候能够补上这个误差值,这个过程叫做 MC。

MPEG 压缩的时候将像素分为 YUV 三个平面,一般只在 Y(亮度)的平面上做 ME,搜寻 Y 误差最小的 MV。而 UV(色度,Chroma)的动作向量则是直接拿 Y 找到的动作向量除以二,作为 UV 的动作向量。(当 MPEG 以 YUV 4:2:0 记录时,UV 的分辨率只有 Y 的一半,也就是画面大小只有 Y 的一半。如 Y: 640x480,UV 则只有 320x240。所以动作向量直接拿 Y 除以二,可以得到近似值)这是因为人眼对 Y 亮度比较敏感,对 C 色度比较不敏感。色度分辨率差一点,人眼也看不出来。减少 C 所占的空间,给 Y 使用多一点空间,可以在有限的流量大小下,增进视觉看起来的品质。

然而做 ME 的时候偷懒,只精确的求 Y 的 MV,而 C 的 MV 就直接拿 Y 的 MV/2 来使用,这样虽然可以加快压缩的速度,但是品质也会下降。(C 没有精确的求出误差最小的参考方块,需要花较多的 bits 纪录,使得压缩率下降)

XviD 现在加入了 Chroma ME 的这个选项,会同时搜寻 Y/C 平面上,误差最小的 MV,速度会慢一点,但是品质会较好。尤其是压动画类影片,效果最明显。


为什么动态越大的时候要减少连续 B-Frame 的个数?B-Frame 不是压缩率最高,越多越好吗?

MPEG-1 里面,有三种 Frame 型态:
I-Frame: 不参考其它画面,独立压缩,压缩率最差,需要最多 bits,Frame size 最大。
P-Frame: 参考前一张 I 或 P Frame 压缩,压缩率次之。
B-Frame: 参考前后的 I 或 P Frame 压缩,压缩率最高。B-Frame 不能被其它 Frame 拿来当作参考画面。

B-Frame(在 MPEG-4 里面正确的名称是 B-VOP)的预测模式有四种:
a. Forward 顺向预测,参考前一张画面,记录和前一张画面的差距。和 P-Frame 的预测方法一样。
b. Backward 逆向预测,参考下一张画面,记录和下一张画面的的差距。
c. Bi-Directionally 双向预测,参考前面和后面两张画面,记录的是和「前后两张画面的平均值」的差距。也叫做内插预测,压缩率最高。
d. Direct Mode,不搜寻、纪录动作向量,直接由下一张的 P Frame推导出动作向量。譬如说 I B P,我们可以预测 B 画面的动作必然是介于 I 和 P 两个画面之间,所以我们可以直接用 P 的 MV/2 作为B 的动作向量,这样可以省去记录 MV 的空间。

压缩 B-Frame 的时候会从上面几种预测模式中选压出来最小的一个模式来使用。

当把最大 B Frame 的个数设得太多的时候,如果 XviD 的动态 Frame Type 决策没有好好发挥它的功能,会造成误判,在高动态的地方还是插入过多的 B-frame。
如:
大动态画面
I B B B B P
P 距离参考的 I Frame 太远,误差太大,容量暴增。而第一个 B-frame,因为 I 和 P 的差距很大,(I+P)/2 两个 Frame 的平均值和 B Frame 的差异还是很大,倒不如只用 I Frame来预测。此时 B 只参考前一张 I 压缩,等于 P-frame。中间的 B 参考 (I+P)/2 压缩,因为差异量大,还是无法取得很好的压缩率。最后一个 B 只参考后面的 P 压缩。最后这四张 B-frame 都无法取得很好的压缩率,大小都变成和 P 差不多大,

此时如果改成
0 1 2 3 4 5
I P P P P P
反而可以得到更好的压缩率。
(因为 1P 参照 0I,差距小。2P 又可以参照 1P,差距也小。以此类推....)

现在 XviD 的动态分配决策已经比以前好很多,最大 B-frames 个数可以放心设到 4 没有问题。至于 DivX 5 的 B-frame,最多连续个数只能为 1,只能是 I B P B P B P B... 这种型态,更别提 XviD 现在使用的先进 I/P/B Frame 分配决策,DivX 5 已经完全比不上 XviD。



 3 MPEG-4视频编码核心思想及关键技术

 3.1 核心思想 
  在MPEG-4制定之前,MPEG-1、MPEG-2、H.261、H.263都是采用第一代压缩编码技术,着眼于图像信号的统计特性来设计编码器,属于波形编码的范畴。第一代压缩编码方案把视频序列按时间先后分为一系列帧,每一帧图像又分成宏块以进行运动补偿和编码,这种编码方案存在以下缺陷:

  • 将图像固定地分成相同大小的块,在高压缩比的情况下会出现严重的块效应,即马赛克效应;

  • 不能对图像内容进行访问、编辑和回放等操作;

  • 未充分利用人类视觉系统(HVS,Human Visual System)的特性。 

  MPEG-4则代表了基于模型/对象的第二代压缩编码技术,它充分利用了人眼视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,这适应了多媒体信息的应用由播放型转向基于内容的访问、检索及操作的发展趋势。 

  AV对象(AVO,Audio Visual Object)是MPEG-4为支持基于内容编码而提出的重要概念。对象是指在一个场景中能够访问和操纵的实体,对象的划分可根据其独特的纹理、运动、形状、模型和高层语义为依据。在MPEG-4中所见的视音频已不再是过去MPEG-1、MPEG-2中图像帧的概念,而是一个个视听场景(AV场景),这些不同的AV场景由不同的AV对象组成。AV对象是听觉、视觉、或者视听内容的表示单元,其基本单位是原始AV对象,它可以是自然的或合成的声音、图像。原始AV对象具有高效编码、高效存储与传输以及可交互操作的特性,它又可进一步组成复合AV对象。因此MPEG-4标准的基本内容就是对AV对象进行高效编码、组织、存储与传输。AV对象的提出,使多媒体通信具有高度交互及高效编码的能力,AV对象编码就是MPEG-4的核心编码技术。
      MPEG-4不仅可提供高压缩率,同时也可实现更好的多媒体内容互动性及全方位的存取性,它采用开放的编码系统,可随时加入新的编码算法模块,同时也可根据不同应用需求现场配置解码器,以支持多种多媒体应用。

  MPEG-4 采用了新一代视频编码技术,它在视频编码发展史上第一次把编码对象从图像帧拓展到具有实际意义的任意形状视频对象,从而实现了从基于像素的传统编码向基于对象和内容的现代编码的转变,因而引领着新一代智能图像编码的发展潮流。

 3.2 关键技术

  MPEG-4除采用第一代视频编码的核心技术,如变换编码、运动估计与运动补偿、量化、熵编码外,还提出了一些新的有创见性的关键技术,并在第一代视频编码技术基础上进行了卓有成效的完善和改进。下面重点介绍其中的一些关键技术。

  1. 视频对象提取技术

   MPEG-4实现基于内容交互的首要任务就是把视频/图像分割成不同对象或者把运动对象从背景中分离出来,然后针对不同对象采用相应编码方法,以实现高效压缩。因此视频对象提取即视频对象分割,是MPEG-4视频编码的关键技术,也是新一代视频编码的研究热点和难点。

  视频对象分割涉及对视频内容的分析和理解,这与人工智能、图像理解、模式识别和神经网络等学科有密切联系。目前人工智能的发展还不够完善,计算机还不具有观察、识别、理解图像的能力;同时关于计算机视觉的研究也表明要实现正确的图像分割需要在更高层次上对视频内容进行理解。因此,尽管MPEG-4 框架已经制定,但至今仍没有通用的有效方法去根本解决视频对象分割问题,视频对象分割被认为是一个具有挑战性的难题,基于语义的分割则更加困难。

  目前进行视频对象分割的一般步骤是:先对原始视频/图像数据进行简化以利于分割,这可通过低通滤波、中值滤波、形态滤波来完成;然后对视频/图像数据进行特征提取,可以是颜色、纹理、运动、帧差、位移帧差乃至语义等特征;再基于某种均匀性标准来确定分割决策,根据所提取特征将视频数据归类;最后是进行相关后处理,以实现滤除噪声及准确提取边界。

  在视频分割中基于数学形态理论的分水岭(watershed)算法被广泛使用,它又称水线算法,其基本过程是连续腐蚀二值图像,由图像简化、标记提取、决策、后处理四个阶段构成。分水岭算法具有运算简单、性能优良,能够较好提取运动对象轮廓、准确得到运动物体边缘的优点。但分割时需要梯度信息,对噪声较敏感,且未利用帧间信息,通常会产生图像过度分割。

  2. VOP视频编码技术

  视频对象平面(VOP,Video Object Plane)是视频对象(VO)在某一时刻的采样,VOP是MPEG-4视频编码的核心概念。MPEG-4在编码过程中针对不同VO采用不同的编码策略,即对前景VO的压缩编码尽可能保留细节和平滑;对背景VO则采用高压缩率的编码策略,甚至不予传输而在解码端由其他背景拼接而成。这种基于对象的视频编码不仅克服了第一代视频编码中高压缩率编码所产生的方块效应,而且使用户可与场景交互,从而既提高了压缩比,又实现了基于内容的交互,为视频编码提供了广阔的发展空间。 
  MPEG-4支持任意形状图像与视频的编解码。对于任意形状视频对象。对于极低比特率实时应用,如可视电话、会议电视,MPEG-4则采用VLBV(Very Low Bit-rate Video,极低比特率视频)核进行编码。 

  传统的矩形图在MPEG-4中被看作是VO的一种特例,这正体现了传统编码与基于内容编码在MPEG-4中的统一。VO概念的引入,更加符合人脑对视觉信息的处理方式,并使视频信号的处理方式从数字化进展到智能化,从而提高了视频信号的交互性和灵活性,使得更广泛的视频应用及更多的内容交互成为可能。因此VOP视频编码技术被誉为视频信号处理技术从数字化进入智能化的初步探索。

  3. 视频编码可分级性技术

  随着因特网业务的巨大增长,在速率起伏很大的IP(Internet Protocol)网络及具有不同传输特性的异构网络上进行视频传输的要求和应用越来越多。在这种背景下,视频分级编码的重要性日益突出,其应用非常广泛,且具有很高的理论研究及实际应用价值,因此受到人们的极大关注。

  视频编码的可分级性(scalability)是指码率的可调整性,即视频数据只压缩一次,却能以多个帧率、空间分辨率或视频质量进行解码,从而可支持多种类型用户的各种不同应用要求。 
  MPEG-4通过视频对象层(VOL,Video Object Layer)数据结构来实现分级编码。MPEG-4提供了两种基本分级工具,即时域分级(Temporal Scalability)和空域分级(Spatial Scalability),此外还支持时域和空域的混合分级。每一种分级编码都至少有两层VOL,低层称为基本层,高层称为增强层。基本层提供了视频序列的基本信息,增强层提供了视频序列更高的分辨率和细节。

  在随后增补的视频流应用框架中,MPEG-4提出了FGS(Fine Granularity Scalable,精细可伸缩性)视频编码算法以及PFGS(Progressive Fine Granularity Scalable,渐进精细可伸缩性)视频编码算法。


  FGS编码实现简单,可在编码速率、显示分辨率、内容、解码复杂度等方面提供灵活的自适应和可扩展性,且具有很强的带宽自适应能力和抗误码性能。但还存在编码效率低于非可扩展编码及接收端视频质量非最优两个不足。

  PFGS则是为改善FGS编码效率而提出的视频编码算法,其基本思想是在增强层图像编码时使用前一帧重建的某个增强层图像为参考进行运动补偿,以使运动补偿更加有效,从而提高编码效率。

  4. 运动估计与运动补偿技术 

  MPEG-4采用I-VOP、P-VOP、B-VOP三种帧格式来表征不同的运动补偿类型。它采用了H.263中的半像素搜索(half pixel searching)技术和重叠运动补偿(overlapped motion compensation)技术,同时又引入重复填充(repetitive padding)技术和修改的块(多边形)匹配(modified block (polygon)matching)技术以支持任意形状的VOP区域。 

  此外,为提高运动估计算法精度,MPEG-4采用了MVFAST(Motion Vector Field Adaptive Search Technique)和改进的PMVFAST(Predictive MVFAST)方法用于运动估计。对于全局运动估计,则采用了基于特征的快速顽健的FFRGMET(Feature-based Fast and Robust Global Motion Estimation Technique)方法。 
  在MPEG-4视频编码中,运动估计相当耗时,对编码的实时性影响很大。因此这里特别强调快速算法。运动估计方法主要有像素递归法和块匹配法两大类,前者复杂度很高,实际中应用较少,后者则在H.263和MPEG中广泛采用。在块匹配法中,重点研究块匹配准则及搜索方法。目前有三种常用的匹配准则:

  (1)绝对误差和(SAD, Sum of Absolute Difference)准则; 
  (2)均方误差(MSE, Mean Square Error)准则; 
  (3)归一化互相关函数(NCCF, Normalized Cross Correlation Function)准则。 

  在上述三种准则中,SAD准则具有不需乘法运算、实现简单方便的优点而使用最多,但应清楚匹配准则的选用对匹配结果影响不大。 

  在选取匹配准则后就应进行寻找最优匹配点的搜索工作。最简单、最可靠的方法是全搜索法(FS, Full Search),但计算量太大,不便于实时实现。因此快速搜索法应运而生,主要有交叉搜索法、二维对数法和钻石搜索法,其中钻石搜索法被MPEG-4校验模型(VM, Verification Model)所采纳,下面详细介绍。 

  钻石搜索(DS, Diamond Search)法以搜索模板形状而得名,具有简单、鲁棒、高效的特点,是现有性能最优的快速搜索算法之一。其基本思想是利用搜索模板的形状和大小对运动估计算法速度及精度产生重要影响的特性。在搜索最优匹配点时,选择小的搜索模板可能会陷入局部最优,选择大的搜索模板则可能无法找到最优点。因此DS算法针对视频图像中运动矢量的基本规律,选用了两种形状大小的搜索模板。

    • 大钻石搜索模板(LDSP, Large Diamond Search Pattern),包含9个候选位置;

  • 小钻石搜索模板(SDSP, Small Diamond Search Pattern),包含5个候选位置。 

  DS算法搜索过程如下:开始阶段先重复使用大钻石搜索模板,直到最佳匹配块落在大钻石中心。由于LDSP步长大,因而搜索范围广,可实现粗定位,使搜索不会陷于局部最小,当粗定位结束后,可认为最优点就在LDSP 周围8 个点所围菱形区域中。然后再使用小钻石搜索模板来实现最佳匹配块的准确定位,以不产生较大起伏,从而提高运动估计精度。 
   此外Sprite视频编码技术也在MPEG-4中应用广泛,作为其核心技术之一。Sprite又称镶嵌图或背景全景图,是指一个视频对象在视频序列中所有出现部分经拼接而成的一幅图像。利用Sprite可以直接重构该视频对象或对其进行预测补偿编码。 

  Sprite视频编码可视为一种更为先进的运动估计和补偿技术,它能够克服基于固定分块的传统运动估计和补偿技术的不足,MPEG-4正是采用了将传统分块编码技术与Sprite编码技术相结合的策略。

 4 结束语 

  多媒体数据压缩编码的发展趋势是基于内容的压缩,这实际上是信息处理的高级阶段,更加向人自身的信息处理方式靠近。人的信息处理并不是基于信号的,而是基于一个比较抽象的、能够直接进行记忆和处理的方式。 

  MPEG-4作为新一代多媒体数据压缩编码的典型代表,它第一次提出了基于内容、基于对象的压缩编码思想。它要求对自然或合成视听对象作更多分析甚至是理解,这正是信息处理的高级阶段,因而代表了现代数据压缩编码技术的发展方向。 

  MPEG-4实现了从矩形帧到VOP的转变以及基于像素的传统编码向基于对象和内容的现代编码的转变,这正体现了传统视频编码与新一代视频编码的有机统一。基于内容的交互性是MPEG-4的核心思想,这对于视频编码技术的发展方向及广泛应用都具有特别重要的意义。


视频通信中MPEG-4的误码弹性

  二、MPEG-4误码弹性(error resilience)工具

  MPEG4视频标准也包含几个差错恢复工具,来提高信道差错下的性能。

  1、数据分割

  由于视频数据参数的差错敏感度不同,可将视频数据分成两部分来提高MPEG-4的差错健壮性。每个视频分组(VOP)的轮廓和运动数据放在第一部分,相对敏感度较低的纹理数据(AC TCOEFF)放在第二部分。分割两个部分的再生同步码,在INTER VOP中称为运动标志,在INTRA VOP中称为DC标志。当差错不敏感的第二部分纹理数据发生一些比特差错时,视频解码器可存储视频分组中无差错的运动和轮廓数据。也就是说,可成功隐藏第二部分的差错,仅会有轻微的视觉失真。由于纹理数据组成了VOP的主要部分,数据分割允许分组的主要部分出错,仅对视频质量有轻微影响。

  运动矢量比纹理数据对差错更敏感,轮廓数据对面向对象视频编码差错健壮性的影响还需确定。当纹理差错隐蔽较好时,运动和轮廓数据的隐蔽会使得图像失真较大。当序列运动量大,帧间的视频内容会变化较大,也使得在解码端很难实现隐藏。若比特流误码率不高,纹理数据的损伤对可视失真影响很小。

  2、FEC中的RCPC(速率兼容的收缩卷积码)

  速率兼容的收缩卷积码(RCPC码)用于多速率信道的差控。此技术必须伴随高速反馈信道指示机制,根据网络状态动态更新编码器。卷积编码器以仅发送母码开始而不加保护位。如果FEC解码器由于出错不能解释母码,那么就通过反向信道通知编码器,从而相应提高保护率。四个寄存器的卷积编码器可提供四种不同速率,编码器先设定的速率为1作为起始,再按需要来降低速率。对降级的信道条件,信道编码器必须为输出信号分配较大数目的保护比特,以增强信道解码器的纠错能力,然后速率保持逐渐降级,直到解码器能维持无检测差错重构母码比特为止。当已达最后速率而解码器仍未能纠正差错信号时,解码器就剔除当前像块而转向下一个像块。因此,卷积编码器的速率依据纠正损坏比特的能力而变化,所需速率越高,为获得较好的差错保护而对输出信号添加的冗余比特就越多。这种多速率的差错保护编码被称作截断码。RCPC技术主要用于延迟敏感的视频应用,由于反馈信息和对损伤信号的重传可能会引入过多的时延,对实时应用不是很适合。RCPC和反向信道指示经常组合使用,来实现MPEG-4标准的差错弹性恢复。

  3、AIR(自适应INTRA帧更新技术)

  AIR是MPEG-4标准中Annex E所规定的技术,与对VOP中所有MB进行统一的INTRA编码的循环INTRA更新(CIR)截然不同,它包括在每个VOP中发送限定数目的INTRA宏块。AIR进行INTRA编码的宏块数远远少于每VOP或每帧的总宏块数。根据通过标记运动宏块位置得到的更新映射图,AIR对每帧中固定和预定的宏块数目,有选择地进行INTRA编码。通过对MB的绝对误差和(SAD)与其门限值(SADth)进行比较,来得到运动估值,SAD是通过MB和在先前VOP中空间相应的MB间计算得到,SADth是先前VOP中全部宏块的平均SAD值,如果某一宏块的SAD超过了SADth,编码器就判定该MB属于高运动区域,也就是对传输差错敏感的区域,从而标志该MB要进行INTRA编码。如果标志INTRA编码的宏块数超过了设定的数目,那么视频编码器就以垂直扫描方向下移帧来编码INTRA MB,直到预定数目的MB被INTRA编码。对于下一帧,编码器从相同的地方开始,并对INTRA宏块开始编码,包括在先前帧中标志要进行INTRA编码的宏块。编码宏块的数目要基于视频应用需求的比特率和帧率来确定。然而,为了提高差错健壮性,宏块的数目可以根据每个视频帧运动特征来动态调整。由于图像运动区域通常以INTRA模式编码,就可能快速更新损坏的运动区域。

  显然,增加每帧中更新的宏块数目可以加速差错恢复,但在给定目标比特率时,会降低无差错时的视频质量。这是由于为了获得目标比特率,而采用了粗量化过程。然而,在相同的目标比特率下,AIR比常规INTRA更新技术能提供更好更持久的客观无差错质量,因此,要进行INTRA编码的宏块数目是在健壮性和比特速率、无差错视频质量间的权衡。

  4、双向解码及RVLC

  双向解码是来降低视频流中有效误码率的差错弹性技术,比特差错对感觉视频质量损伤最大,也导致了解码器端丢失同步。在这种情况下,会忽略数据流中该差错之后的部分,直到检测到无差错的同步码字。然而,抛弃的视频数据可无差错接收,从而明显增强感觉质量,抛弃的比特数是差错位置和下一个无差错同步字位置间距离的函数。结果,实际误码率的数量级远远高于实际信道比特差错率。为了仅将损伤限制在受影响区域,并节省无差错接收的比特,双向解码还可进行反向解码。基于前向检测到的差错,解码器会停止其搜索下一个同步字。当解码器在同步码字处恢复了同步时,再由反向恢复操作,对前向操作中跳过的数据段解码。

  为了实现双向路解码,须采用可逆VLC(即RVLC)。可逆码字是变长编码,可以前向和后向解码,产生同样的输出。可采用以下几个技术产生可逆VLC码(Takashima,Wada and Murakami,1995;Watanabe,1996):其一是生成恒重码(二进制序列中1的数目),另一种生成恒重RVLC码表的方法是,利用一个码字第一符号的固定数目,或者说,如果解码器从0开始解码,则在码字中搜索固定长度的0,反之亦然。

  由于在每个码字中第一个被检测到的符号数目可以确定,这些码字都能双向解码,除了恒定码重策略,其他生成RVLC表的方法是在每个码字中分配固定数目的0、1。在这种情况下,RVLC码可能的设定由01、10、0011、1100、001011、000111、110100等组成。相比于优化的Huffman码,双向可解码的编码比特率增加2~3个百分点。

  5、EREC(差错弹性的熵编码)

  尽管双向解码算法提高了抑制同步丢失的效率,但是相关联的可逆VLC码字在编码比特流中引入了不必要的开销,EREC通过在各种视频参数的连续传输间提供转换,显著提高了编码视频流的差错弹性。视频通信中差错最具破坏性的作用是使解码器丢失同步,这源于视频参数的变长码和两个连续同步字之间参数的可变数目。EREC试图使用定长的时隙结构来重组变长码,使得每个VLC码的起始总是跟定长时隙起始位置相一致。定长时隙长短由编码器决定,并在传送该时隙之前,放在视频块首发送给解码器。如果解码器检测到VLC码中有比特差错,同步总在下一个时隙开始时恢复,因此限制了受损时隙中的比特差错损伤。

  三、组合的误码弹性工具

  除了前述独立的差错弹性机制,在视频编码算法中还可以使用组合技术来优化差错弹性。弹性技术具有多种选择,为了获得拟选的优化视频质量,我们应选择特定分组段。例如,分组的第一部分是由所包含宏块的轮廓和运动编码数据组成的,尚包含有关的管理数据,如COD标志和MCBPC。第二部分包含变长的DCT数据和某些符合标准的控制数据,如CBPY和差分量化步长(DQUANT)。为了在差错发生时,解码器能在重要的第一部分中自动恢复同步,采用EREC将编码的运动矢量放入定长时隙。使用HEC(信头扩展码)标志,对每个视频帧中重要的头部数据,在视频分组中被复制,来减少在视频序列中剔除的帧数。进一步说,第二部分的TCOEFF系数(DCT数据)采用RVLC码字而便于后向解码,减少了由于同步丢失而抛弃的DCT数据。第一部分的运动矢量也可采用可双向解码的编码方式,但是EREC则取消了可逆VLC码介入的开销。实验表明组合差错弹性技术所改善的客观质量(以110kbit/s和25f/s的速率采用MPEG-4编码的Suzie序列)。首先,应用数据分割将帧中编码的运动矢量(第一部分)和纹理数据(第二部分)分开,对第一部分的运动数据应用EREC;而当解码器标志第二部分出错时,DCT数据采用可逆的VLC码,可对DCT系数双向解码;进而,采用半码率的Turbo码来保护第一部分的头部数据。

  四、结束语

  差控策略用来减轻传输差错对解码视频质量的影响,策略的选择依赖于很多因素,如在双向和多点通信中介入的延迟、误码恢复技术带来的比特率开销、处理过程的复杂度等,这是任何系统应用需要设计的问题。

  信道差错对感觉视频质量有着决定性影响,可以有各种形式。然而,最有破坏性的信道差错会导致解码端的同步丢失。由于在视频编码算法中应用了时间和空间预测,差错会在视频序列范围内从时间和空间上迅速传播。为了限制这种差错传播并减轻其影响,采用了差控机制来满足用户需求和期望。最简单的差控技术是当受到传输差错影响,需要隐蔽出现在视频内容中的“马赛克”。这些技术基于解码器,则在压缩视频流中不必增加开销。另一类差控技术包含一些力图阻止差错在时空间累积的机制。这类技术中最典型的代表是INTRA更新,该技术以规则的时间间隔发送INTRA帧。改进后的自适应INTRA更新(AIR)是以INTRA模式发送预定数目的运动宏块,每帧发送一次。

由于AIR在更规则的间隔上更新视频场景中最活跃的部分,比INTRA更新获得更稳定的视频质量。再一类差控机制是致力于检测到差错时恢复同步的机制,这类差错弹性机制的例子有EREC和双向解码。EREC将变长码放到预置的定长时隙中,当解码器不能完成对当前VLC码解码时,其能在下一时隙起始处恢复同步。这样就减少了由于丢失同步而抛掉的比特数目。当编码视频流遇到传输差错时,双向解码是最小化有效误码率的高效算法。双向解码是解码器能对比特流双向解码,来恢复全部或部分在前向解码中扔掉的比特流。为了使解码器能反向解码,在比特流中采用了可逆码字。


H.264 sequence parameter sets成员值含义学习笔记

H.264中定义的sequence parameter sets中包括了一个图像序列的所有信息.它是H.264的基础之一,是编码前进行初始化的关键的一环,本文通过参考H.264的标准文档,对每个函数进行了一些注释性的说明,还有一些图表性的东西,因为blog上帖不是很方便,请参考文档中相应的部分.
sequence_parameter_set_rbsp_t结构体内成员及用途:
1. unsigned 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(之后介绍)应该等于1
d) 图象参数值(psp)的weighted_pred_flag和weighted_bipred_idc都应该为0
e) 图象参数值(psp)的entropy_coding_mode_flag应该等于0
f) 图象参数值(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应该只为0
e) 图像参数集(psp)的redundant_pic_cnt_present_flag应该只为0
f) 对于主profile所要求的level级需要达到。
符合主profile的码流的profile_idc应为77。符合指定level的主profile的解码器应该可以解码所有的profile_idc为77的或constrained_set1_flag值为1且level_idc值小于或等于指定level的码流。
1.3 扩展profile(Extended profile)
符合扩展profile的码流应该遵循以下的约束:
a) 序列参数集的direct_8x8_inference_flag值应该为1
b) 图像参数集的entropy_coding_mode_flag值应该为0
c) 图像参数集的num_slice_groups_minus1的值范围为0到7,包括0和7
d) 对于扩展profile指定的level级应该被达到
符合指定level级的扩展profile的解码器可以解码所有的profile_idc值为88的或constrained_set2_flag值为1的,而且level_idc小于等于指定level级的码流。
符合指定level级的扩展profile的解码器可以解码所有的profile_idc值为66的或constrained_set0_flag值为1的,而且level_idc小于等于指定level级的码流。
2. constrained_set0_flag
当constrained_set0_flag值为1的时候,就说明码流应该遵循基线profile(Baseline profile)的所有约束.constrained_set0_flag值为0时,说明码流不一定要遵循基线profile的所有约束。
3. constrained_set1_flag
当constrained_set1_flag值为1的时候,就说明码流应该遵循主profile(Main profile)的所有约束.constrained_set1_flag值为0时,说明码流不一定要遵循主profile的所有约束。
4. constrained_set2_flag
当constrained_set2_flag值为1的时候,就说明码流应该遵循扩展profile(Extended profile)的所有约束.constrained_set2_flag值为0时,说明码流不一定要遵循扩展profile的所有约束。
注意:当constraint_set0_flag,constraint_set1_flag或constraint_set2_flag中不只一个值为1的话,那么码流必须满足所有相应指明的profile约束。
5. level_idc
它指的是码流对应的level级.
5.1 独立于profile的level约束
让fR是这样一个变量:
a) 如果图像n是一帧,fR设为1/172
b) 如果图像n是一个场,fR设为1/(172*2)
任何profile下的指定的level都应该满足如下约束:
a) 理论上可访问单元n从CPB中的移除时间满足这样的约束:t(n)-t(n-1)要比Max(PicSizeInMbs,MaxMBPS,fR)值大或相等,MaxMBPS是说在level表中指出的对于图像n的值,PicSizeInMbs是指在图像n中的宏块数。
b) 如果图像n是一个输出图像而且它不是码流的最后一个输出图象,从DPB中取出的连续的输出图象差满足:Dt(n) >= Max(PicSizeInMbs, MaxMBPS, fR), MaxMBPS是指对于图象n来说的相应的值。PicSizeInMbs指图象n的宏块。
c) 对于可访问单元0的NumBytesInNALunit变量的总和少于或等于256*ChromaFormatFactor*(PicSizeInMbs+MaxMBPS*tr(0)-trn(0)/MinCR,MaxMBPS和MinCR是图象0在level表中相应的值,PicSizeInMbs是图象0的宏块数量。
d) 对于可访问单元n的NumBytesInNALunit值的总和是小于或等于256*ChromaFormatFactor*MaxMBPS*(tr(n)-trn(n-1))/MinCR,MaxMBPS和MinCR的值是图像n在level级表中对应的值。
e) PicWidthInMbs * FrameHeightInMbs <= MaxFS, MaxFS是在level表中指定的值。
f) PicWidthInMbs <= Sqrt(MaxFS * 8)
g) FrameHeightInMbs <= Sqrt(MaxFS * 8)
h) max_dec_frame_buffering <=MaxDpbSize, MaxDpbSize等于Min(1024 * MaxDPB / (PicWidthInMbs * FrameHeightInMbs * 256 * ChromaFormatFactor,16),MaxDPB是对于1024字节单元的MaxDPB值,max_dec_frame_buffering也叫做DPB大小值。
i) 对于VCL HRD参数值,至少对于一个SchedSelIdx值来说,码率BitRate[SchedSelIdx] <= 1000 * MaxBR且CpbSize[SchedSelIdx] <= 1000 * MaxCPB。MaxBR和MaxCPB是对于1000bits/s和1000位单元对应于level级表的值。码流应该为0到cpb_cnt_minus1中的一个值,包括0和cpb_cnt_minus1.CpbSize[SchedSelIdx]也叫做CPB大小值。
j) 对于NAL HRD参数来说,BitRate[SchSelIdx] <= 1200 * MaxBR且CpbSize[SchedSelIdx] <= 1200 * MaxCPB,MaxBR和MaxCPB是在1200bits/s和1200位的单元值在极限level下的值。码流应该满足至少SchedSelIdx值从0到cpb_cnt_minus1中的一个值。
k) 在亮度帧采样中,垂直运动向量元素范围不能超过MaxVmvR,MaxVmvR值在level极限表中提供
l) 在亮度帧采样单元中,水平运动向量范围不能超过-2048到2047.75,包括-2048和2047.75。
m) 按解码顺序的两个连续的宏愉的运动向量的数量不超过MaxMvsPer2Mb(对于当前宏块的最后一个切片和下一个宏块的第一个切片也适用),MaxMvsPer2Mb值在level极限表中提供.
n) 对于任何宏块的macroblock_layer()的位数值都不能大于128 + 2048 * ChromaFormatFactor.依赖于entropy_coding_mode_flag值,macroblock_layer()的值由如下方式计算
 如果entropy_coding_mode_flag值为0的话,macroblock_layer()的值由macroblock_layer()的对于一个macroblock的语法结构给出
 其他情况下,对于一个宏块的macroblock_layer()值是由read_bits(1)给出的.
5.2 与profile相关的level级
对于基线profile,主profile和扩展profile的相应的level级约束在H.264的文档中有表可查。
6. seq_parameter_set_id
seq_parameter_set_id指定了由图像参数集指明的序列参数集。seq_parameter_set_id值应该是从0到31,包括0和31
注意: 当可用的情况下,编码器应该在sps值不同的情况下使用不同的seq_parameter_set_id值,而不是变化某一特定值的seq_parameter_set_id的参数集的语法结构中的值。
7. log2_max_frame_num_minus4
log2_max_frame_num_minus4指定了变量MaxFrameNum的值,MaxFrameNum = 2(log2_max_frame_num_minus4+4)
log2_max_frame_num_minus的值应该在0到12之间,包括0和12.
8. pic_order_cnt_type
pic_order_cnt_type指定了解码图像顺序的方法。pic_order_cnt_type的值是0,1,2。
pic_order_cnt_type在当一个编码视频序列有如下限定时不为2
a) 包含非参考帧的可访问单元,并紧接着一个包含非参考可访问单元
b) 两个可访问单元,它们分别包含两个场中的一个,它们一块儿组成了一个互补的非参考场对,被紧接着一个包括非参考图像的可访问单元。
c) 一个包含非参考场的可访问单元,并紧接着一个包含另一个非参考图像的可访问单元,它们不组成互补的非参考场对。
9. log2_max_pic_order_cnt_lsb_minus4
log2_max_pic_order_cnt_lsb_minus4指出变量MaxPicOrderCntLsb的值,它是在解码过程中使用到的图像顺序计算值:
MaxPicOrderCntLsb = 2(log2_max_pic_order_cnt_lsb_minus4+4)
log2_max_pic_order_cnt_lsb_minus4的值为包括0和12以及它们之间的值。
10. delta_pic_order_always_zero_flag
delta_pic_order_always_zero_flag等于1的时候表示当delta_pic_order_cnt[0]和delta_pic_order_cnt[1]在序列的切片头中不存在,并被认为是0。delta_pic_order_always_zero_flag值等于0时表示delta_pic_order_cnt[0]在序列的切片头中存在而delta_pic_order_cnt[1]可能在序列的切片头中存在。
11. offset_for_non_ref_pic
offset_for_non_ref_pic被用来计算一个非参考图像的图像顺序值。offset_for_non_ref_pic值取值范围为(-2)^(31)到2^(31)-1,包括边界值。
12. offset_for_top_to_bottom_field
offset_for_top_to_bottom_field被用来计算一帧中的下场的图像顺序值。offset_for_top_to_bottom_field值的取值范围为(-2)^(31)到(2)^(31)-1,包括边界值。
13. num_ref_frames_in_pic_order_cnt_cycle
num_ref_frames_in_pic_order_cnt_cycle在解码过程中被用来计算图像顺序值。num_ref_frames_in_pic_order_cnt_cycle在0到255之间取值,包括边界值。
14. offset_for_ref_frame[i]
offset_for_ref_frame[i]是一列num_ref_frames_in_pic_order_cnt_cycle中的一个元素,它被在解码过程的解码顺序值中使用。offset_for_ref_frame[i]的值为(-2)^31到(2)^(31)-1,包括边界值。
15. num_ref_frames
num_ref_frames指定了长期的和短期的参考帧的最大总数目,互补的参考场对和在解码过程中对于任何序列使用的帧间预测的非配对的参考场。num_ref_frames也决定了滑动窗口的操作大小过程。num_ref_frames值在0-16之间,包括边界值。
16. gaps_in_frame_num_value_allowed_flag
gaps_in_frame_num_value_allowed_flag值指明了frame_num允许的值和解码过程中的frame_num的差距值。
17. pic_width_in_mbs_minus1
pic_width_in_mbs_minus1加1指明了对于每个解码图像中的宽度值。在宏块单元中的图像宽度的变量值为:
PicWidthInMbs = pic_width_in_mbs_minus1+1;
对于亮度元素来说图像宽度变量的值:PicWidthInSamplesL = PicWidthInMbs * 16;
对于色度元素来说图像宽度变量的值:PicWidthInSamplesC = PicWidthInMbs * 8
18. pic_height_in_map_units_minus1
pic_height_in_map_units_minus1指明了解码帧或场中的一个切片组的高度。变量PicHeightInMapUnits的值和PicSizeInMapUnits:
PicHeightInMapUnits = pic_height_in_map_units_minus1 + 1;
PicSizeInMapUnits = PicWidthInMbs * PicHeightInMapUnits

19.frame_mbs_only_flag
frame_mbs_only_flag等于0指明了视频序列的编码图象可能是编码场或编码帧。frame_mbs_only_flag等于1指明了每个编码视频序列的编码图像都是只含帧宏块的编码帧。
依赖于frame_mbs_only_flag的值,pic_height_in_map_units_minus1如下定义:
如frame_mbs_only_flag等于0,pic_height_in_map_units_minus1就是宏块单元的场高
如frame_mbs_only_flag等于1,pic_height_in_map_units_minus1就是宏块单元的场宽
FrameHeightInMbs的值:
FrameheightInMbs = ( 2 - frame_mbs_only_flag ) * PicHeightInMapUnits
20. mb_adaptive_frame_field_flag
mb_adaptive_frame_field_flag等于0表明在一个图像内不能切换使用帧和场宏块。mb_adaptive_frame_field_flag等于1表示在一帧中有可能使用场和帧的切换,当mb_adaptive_frame_field_flag没有设定的时候,应该赋给0.
21. direct_8x8_inference_flag
direct_8x8_inference_flag指明了在亮度运动向量生成B_Skip,B_Direct_16x16和B_Direct_8x8的方法。当frame_mbs_only_flag为0时,direct_8x8_inference_flag应为1
22. frame_cropping_flag
frame_cropping_flag等于1表明在sps中下一个使用的帧剪切偏移量参数。frame_cropping_flag等于0表明帧剪切偏移量不存在。
23. frame_crop_left_offset,frame_crop_right_offset,frame_crop_top_offset,frame_crop_bottom_offset指明了在一个窗中一帧的采样值。
24. vui_parameters_present_flag
vui_parameters_present_flag等于1表示vui_parameters()在码流中是存在的,vui_parameters_present_flag等于0表明vui_parameters()在码流中不存在。
H.264 picture parameter sets成员值含义学习笔记
H.264中定义的picture parameter sets中包括了一个图像的所有切片信息.它也是H.264的基础之一,
是编码前进行初始化的关键的一环,本文跟下一篇sps的参考笔记是兄弟篇,通过参考H.264的标准文档,
对每个函数进行了一些注释性的说明,还有一些图表性的东西,因为blog上帖不是很方便,请参考文档中
相应的部分.
picture parameter sets
1. pic_parameter_set_id
pic_parameter_set_id指明了在切片头中对应的某个psp.pic_parameter_set_id的值应该在0到255,
包括0和255
2. seq_parameter_set_id
set_parameter_set_id表示激活的sps.seq_parameter_set_id应该取值在0到31之间,包括边界值.
3. entropy_coding_mode_flag
entropy_coding_mode_flag决定了在解码方法上使用的方法.
如果entropy_coding_mode_flag为0的话,就使用Exp-Golomb编码方法
如果entropy_coding_mode_flag为1的话,就使用CABAC方法.
4. pic_order_present_flag
pic_order_present_flag等于1表示在切片头中图像顺序值存在,pic_order_present_flag为0表示切片
头中的图像顺序值不存在
5. num_slice_groups_minus1
num_slice_groups_minus1加上1表示一个图像中的切片组数目.当num_slice_groups_minus1为0时,
图象所有的切片属于同一组.
6. slice_group_map_type
slice_group_map_type表示从切片组单到切片组的映射方法.slice_group_map_type的值可以取0到6.
slice_group_map_type=0表示插值切片组.
slice_group_map_type=1表示分散切片组映射
slice_group_map_type=2表示一个或多个"前景"切片组和一个"剩余"切片组.
slice_group_map_type=3,4,5时,表示变换切片组.当num_slice_groups_minus1不不1时,
slice_group_map_type应该不为3,4,5.
slice_group_map_type=6时,表示从外部对对于每个切片组单元进行外部的切片赋值.
如果frame_mbs_only_flag为0而且mb_adaptive_frame_field_flag为1且编码图像是一帧的话,切片组
映射单元是宏块对
如果frame_mbs_only_flag为1而且mb_adaptive_frame_field_flag为1且编码图像是一场的话,切片组
映射单元是宏块
其他的情况下,切片组单元是两个宏块,它们在一帧宏块对中是垂直连续的
7.run_length_minus1[i]被用来赋给在光栅扫描中第i个切片组指明连续切片组单元的数量.
run_length_minus1[i]的取值应为0到PicSizeInMapUnits-1.
top_left[ i ] and bottom_right[ i ] specify the top-left and bottom-right corners of a rectangle, 
respectively. top_left[ i ] and bottom_right[ i ] are slice group map unit positions in a raster scan of the picture for the slice group map units. For each rectangle i, all of the following constraints shall be obeyed by the values of the syntax elements top_left[ i ] and bottom_right[ i ]
8.top_left[i] and bottom_right[i]
top_left[i] and bottom_right[i]指出了矩形区左上角和右下角.top_left[i] and bottom_right[i]是对
于一个切片组的图像的光栅扫描位置.对于每个矩形i,top_left[i] and bottom_right[i]应该满足所有的
以下的约束:
a) top_left[i]应该比bottom_right[i]小或等于,bottom_right[i]应该比PicSizeInMapUnits的值小.
b) (top_left[i]%PicWidthInMbs)应该比(bottom_right[i]%PicWidthInMbs)的值小或等于.
9. slice_group_change_direction_flag在slice_group_map_type为3,4,5时跟
slice_group_map_type一块儿来提取生成映射类型,
10.slice_group_change_rate_minus1
slice_group_change_rate_minus1用来指明SliceGroupChangeRate变量的值.
SliceGroupChangeRate指出当切片组的大小对于每个图像来说都不同的时候,对切片组数目的运算
的乘数.slice_group_change_rate_minus1取值范围为0到PicSizeInMapUnits-1:
SliceGroupChangeRate = slice_group_change_rate_minus1+1;
11. pic_size_in_map_units_minus1
pic_size_in_map_units_minus1用来指明在一个图象中使用的切片组映射单元的数目.
pic_size_in_map_units_minus1应该等于PicSizeInMapUnits-1.
12. slice_group_id[i]
slice_group_id[i]说明了切片组单元中由光栅扫描顺序指定的第i个切片组.slice_group_id[i]应该取
0到num_slice_groups_minus1.
13. num_ref_idx_l0_active_minus1指明了参考图像列表0中的最大参考索引值,它被用来解码图像
的每一个切片,列表0在num_ref_idx_active_override_flag值为0的时候被使用.当MbaffFrameFlag值
为1时,num_ref_idx_l0_active_minus1是解码帧宏块的最大索引值,而
2 * num_ref_idx_10_active_minus1 + 1是解码场宏块的最大索引值.
num_ref_idx_l0_active_minus1的取值为0到31.
14. num_ref_idx_l1_active_minus1与num_ref_idx_l0_active_minus1有相同的语义,只不过它是
针对列表1来说的.
15.weighted_pred_flag
weighted_pred_flag=0表示加权预测在P和SP切片中没有被使用
weighted_pred_flag=1表示加权预测在P和SP切片中有使用.
16. weighted_bipred_idc
weighted_bipred_idc=0表示默认的加权预测被应用到B切片中.
weighted_bipred_idc=1表示外部的加权预测被应用到B切片中.
weighted_bipred_idc=2表示内部的加权预测被应用到B切片中.
weighted_bipred_idc的取值为0,1,2.
17.pic_init_qp_minus26指出了对于每个切片来说的SliceQPY的初始值减26.初始值在切片层中
当非0的slice_qp_delta被解码后时改变,在非0的mb_qp_delta值被在宏块层解码时再次被改变.
pic_init_qp_minus26应该取-26到+25.
18. pic_init_qs_minus26
pic_init_qs_minus26指出了对于SP或SI切片中的SliceQSY的被始值减26.这个初始值在切片层中
当一个非0的slice_qs_delta被解码的时候被修改.pic_init_qs_minus26的取值为-26到25.
19.chroma_qp_index_offset
chroma_qp_index_offset表示在查QPC表时,对于QPY和QSY应该加上的偏移量.
chroma_qp_index_offset取值为-12到12
20. deblocking_filter_control_present_flag
deblocking_filter_control_present_flag=1表示在切片头处用来控制解块滤波的特征值是存在的.
deblocking_filter_control_present_flag=0表示在切片头处用来控制解块滤波的特征值是不存在的.
21. constrained_intra_pred_flag
constrained_intra_pred_flag=0表示在帧内预测的时候允许剩余数据和邻近宏块解码采样.
constrained_intra_pred_flag=1表示在受限的帧内预测,对宏块预测中使用帧内宏块预测模式只使
用剩余数据和从I和SI宏块类型中的解码采样值.

22. redundant_pic_cnt_present_flag
redundant_pic_cnt_present_flag=0表示redundant_pic_cnt在切片头中,数据分区B和数据分区C中
不存在.
redundant_pic_cnt_present_flag=1表示redundant_pic_cnt在所有切片头中,数据分区B和数据分
区C中存在.
T264中的slice type decision
T264中的slice type decision方法。
在H.264里面当前帧属于哪个slice的决定形式是多种多样的,对于JM中的码流中,一般一帧图象就
认为是一个slice,那么如果当前帧是一个I帧,那么它就属于一个I slice.这时整个frame的为
一个slice.但是具体我们用什么样的方式来进行slice type的决策呢,这也是一个问题。我们看
一下T264里面是如何处理这个问题的。
在T264中,如果我们设定了,USE_SCENEDETECT的话,当前的slice种类是由当前帧的帧号与设定
的idrframe,iframe跟bframe相关的,如果frame_no%idrframe==0的话,那么说明当前帧是
属于一个IDR slice的,如果frame_no%iframe==0的话,该帧属于一个I slice.如果上面的
情况不满足那么是属于P slice或B slice.由于码流中只有如下几种类型:0) I P P P 
..... I P P P  1) I B P B P.....B P B P   2) I B B P B B P.....B B P I 
B B P,所以如果frame_no%(bframe+1)==0的话,就属于P slice,如果不是的话属于
B slice.如没有使用USE_SCENEDETECT的话,是用MeAnalysis来决定当前属于什么slice的。
这种形式是动态式地决定是不是要加入一个I slice。决定流程如下:如果我们达到了我们在
config里面设定的iframe interval的话,当前帧就是一个I slice.我们设定一个
INTRA_THRESHOLD,对帧中的每一个宏块进行预测,来计算sad.这个过程因为计算量比较大,
所以使用了简化算法,首先用前一帧的mv做预测值,计算sad,如果这个值大于我们设定的
SEARCH_THRESHOLD的话,说明上一帧的mv已不适合做当前帧的预测,我们会使用一个简化
的diamond search来简单地找一下当前宏块的mv,进行sad计算。整个帧的sad计算结束之后,
我们与INTRA_THRESHOLD进行比较,如果sad大的话,这一帧为I slice中的一帧,如果小的话,
我们认为它是一个P或B帧。对于当前帧是P还是B帧还是用上面的方法进行。

http://shiyingxiang.spaces.live.com/blog/
H.264 像素块预测与运动补偿
摘 要:本文详细分析了像素块预测与运动补偿技术。 
关键词:像素块预测 运动补偿 信源编码

一、像素块预测

H.264/ AVC标准中的基本预测技术是基于块,而不是基于对象的。它的编码器是利用混合的编码方案来提高编码效率,这些方案包括高级的预测技术和有效熵编码技术。在运动预测中它使用不同的块的大小进行预测,以树结构的方式来组织预测模式。其主要的特点也包含在多参考帧预测方式和通用B帧的概念上。H.264像素块预测编码包括帧内块预测和帧间块预测,而帧内块预测在H.264中占有极重要的地位。在图像信号压缩编码中,由于亮度信号和色差信号是分别进行处理的,因此,预测又可分亮度信号预测和色差信号预测。下面就两种不同预测方式分别加以讨论。

1. 帧内预测

在H.264/AVC中采用的预测编码方法与在14496-2标准的MPEG-4视频编码规范不同,帧内预测是在变换编码之前进行的。在H.264/AVC标准的帧内预测中,当前块的抽样值总是利用邻块的抽样值来获取。这样也许会因为在相邻的帧间编码的宏块的运动补偿误差而引起图像误差的扩散。因此,在图像编码过程中还有一种限制帧内编码模式,此时只允许相邻的帧内预测宏块为已知才可以作为其他当前宏块的参考宏块。

H.264根据相邻像素可能有相同的性质,利用相邻像素的相关性,采用了新的帧内(Intra)预测模式。通过当前像素块的左边和上边的像素(已编码重建的像素)进行预测。只对实际值和预测值的差值进行编码,这样就能用较少的比特数来表达帧内编码的像素块信息。在H.264标准中,亮度块可以有9种4×4块和4种16×16块的帧内预测模式,而色度8×8块的4种模式与亮度的4种16×16块的模式相同。对于每个4×4块(除了边缘块特别处置以外),每个像素都可用17个最接近的先前已编码的像素的不同加权和(有的权值可为0)来预测,即此像素所在块的左上角的17个像素。显然,这种帧内预测不是在时间上,而是在空间域上进行的预测编码算法,可以除去相邻块之间的空间冗余度,取得更为有效的压缩。如图1所示,4×4方块中a、b、…、p为16个待预测的像素点,而A、B、…、P是已编码的像素。按照所选取的预测参考的点不同,亮度共有9类不同的模式,但色度的帧内预测只有1类模式。

4×4帧内预测方法用于对图像细节部分进行编码,它的基本思路是从不同的方向计算、比较块中各个像素之间的亮度差值,即梯度值。通过选择具有最小预测误差的方向作为最佳的预测方向。下面对其中的预测模式举例说明。如图1所示,其中4×4块中16个抽样值(a~p)是由先前解码邻近宏块抽样值(A~Q)利用各种预测模式预测得来。这种预测模式共有8个方向,加上各像素作平均计算共9种模式。

2. 4×4帧内预测模式编码过程

每个4×4块的帧内预测模式的选择一定会告知解码器,这可能需要很多比特。然而,附近的4×4块的帧内模式是非常相关的。举例来说,如果图2里的先前编码的4×4块A和B是使用模式2预测的,块C(当前块)的最佳模式很有可能也是模式2。对于每个当前块C,编码器和解码器计算最合适的模式most_probable_mode。如果A和C都在4×4帧内模式中编码,且都在当前的slice层中,最合适的模式(most_probable_mode)是A和C预测模式的最小量;否则most_probable_mode 被设定成模式2(直流预测)。

编码器为每个4×4块发送一个flag标志,使用最合适的模式use_most_probable_mode。如果flag是“1”,采用参数most_probable_mode。如果flag是“0”,发送另外的一个参数remaining_mode_selector,来指出模式变化。如果remaining_mode_selector比当前的most_probable_mode小,那么预测模式被设定为remaining_mode_selector;否则预测模式被设定为 remaining_mode_selector+1。这样,remaining_mode_selector只需用8个数值(0到7)表示目前的帧内模式(0到8)。

3. 亮度信号16×16帧内预测

16×16预测方式是基于在16×16块的基础上,用于对图像中的相对不变的部分进行编码。它只有四种预测方式,分别为垂直预测方式、水平预测方式,直流预测方式和平面预测方式。用一个4×4亮度分量的可选模式,可预测一个宏块的整个16×16亮度分量,有4种模式。

模式0:(垂直预测)由上面的抽样值插补(H);

模式1:(水平预测)由左边的抽样值插补(V);

模式2:(直流预测)由上面的和左侧的抽样值平均数插补(H+V);

模式4:(平面预测)由上面的和左侧的抽样值插补。

线性“平面”可设置由上面和左侧的抽样值H和V插补, 这在平滑的亮度区域效果较好。

4. 色度信号的帧内预测

一个宏块的每个8×8色度分量借助于上面的和左面的已被编码、重建的色度分量抽样值进行预测。由于色度在图像中是相对平坦的,其预测方法与16×16亮度信号帧内预测相似方式进行。因此也有四种帧内预测模式:垂直预测(模式0),水平预测(模式1),直流预测(模式2)和平面预测(模式3)。

5. 帧间预测

帧间预测是利用先前已编码帧的图像作为参考图像对当前图像进行预测的一种方式。它把参考图像的抽样点通过运动矢量的补偿作为当前图像抽样值的参考值。H.264/AVC标准中使用了从H.261标准以来主要标准中使用的块结构运动补偿。然而,它与早期标准最大区别在于:①支持多种块结构的预测;②运算精度能精确到1/4像素。

在H.264/AVC标准中还使用了H.263标准中曾使用过的多帧预测的方法,主要思想是增加运动矢量中时间轴的估计参考帧数。在宏块的级别上,允许选择一个或几个前面视频帧作为参考帧。用于运动补偿的多帧预测方式在大多数情况下会明显改善预测增益。

下面我们就以在两种不同类型的片(slice)中使用的帧间预测方式进行讨论。在说明它们之前我们首先介绍树结构的运动补偿,其中主要简述了宏块的分块。

帧间预测用于降低图像的时域相关性,通过采用多帧参考和更小运动预测区域等方法,对下一帧精确预测,从而减少传输的数据量。每个亮度宏块被划分成形状不等的区域,作为运动描述区域。如图4所示,其划分方法有16×16,16×8,8×16,8×8 共4种。当选用8×8方式时,可以进一步划分成8×8,8×4,4×8和4×4共4个子区域。每个区域包含自己的运动向量,每个运动向量和区域选取信息必须通过编码传输。因此,当选用较大区域时,用于表示运动向量和区域选取的数据量减少,但运动补偿后的残差会增大;当选用小区域时,残差减少,预测更精确,但用于表示运动向量和区域选取的数据量增大。大区域适合反映帧间同质部分,小区域适合表现帧间的细节部分。

在H.264中,运动预测的精度也有所改进,对QCIF(144×176像素)格式的图像,使用1/4像素精度;对CIF(288×352 像素)格式的图像,使用1/8 像素精度。其中,1/4 像素插值是先使用一个6抽头滤波器进行水平和垂直滤波得到半像素插值点,然后对其进行线性插值;而1/8 像素插值是直接使用一个8抽头滤波器进行水平和垂直滤波。

在帧内编码模式下,H.264 对空间系数进行双向预测,而不是对变换后的系数进行预测(见H.263+的先进帧内预测模式)。另外,与H.263+的附录N类似,H.264支持参考帧可选模式,即在编码后续图像时,可以从编码缓存中选择使用前面的参考帧(多于一帧)进行运动估值。

H.264 除了支持I 帧、P 帧和B 帧外,还提出了一种新的图像类型SP 帧,SP帧也是预测编码帧,根据需要可以改变用于该帧预测的图像。SP帧可用于信道速率的改变、视频比特流的切换和码流随机接入等操作,在时变无线信道上的视频通信和流媒体传输中有广泛的应用前景。

二、运动补偿

1. 树结构的运动补偿

H.264采用了不同大小和形状的宏块分割与亚分割的方法。一个宏块的16×16亮度值可以按照16×16、16×8、8×16或8×8进行分割;而如果选择了8×8分割,还可以按照8×8、8×4、4×8或4×4进行亚分割,如图5所示。这些宏块分割与亚分割的方法将会使得每个宏块中包含有许多不同大小块。利用各种大小的块进行运动补偿的方法我们将称为树结构的运动补偿(tree structured motion compensation)。宏块分割与亚分割所产生的每一个亮度块都有自己独立的运动矢量。对于宏块中色度值,分割方法是和亮度一样的,但是由于4∶2∶0采样的关系,色度分割块的大小是亮度分割块的一半,而且当色度块在利用运动矢量时,必须要将它各个分量除以2。其次,H.264可以达到1/4像素的运动精度,这是通过利用整像素点的亮度值进行内插得到的。内插过程先是通过6抽头的滤波器来获得半像素精度,然后用线性滤波器来获得1/4像素的精度。又由于4∶2∶0采样的关系,色度的运动精度就达到1/8像素,这也是通过线性滤波器插值得到的。由于运动矢量之间也有一定的相关性,所以H.264就利用已经编码块的运动矢量对当前未编码块的运动矢量进行预测,最后只需要编码和传输实际运动矢量与预测值的差值即可。

再次,H.264还可以采用多参考图像(最多前向和后向各5帧)来进行运动预测,这样可以对周期性运动,平移封闭运动和不断在两个场景间切换的视频流有效果非常好的运动预测。使用了多参考图像,H.264不仅能够提高编码效率,同时也能实现更好的码流误码恢复,但需要增加额外的时延和存储容量。

最后,H.264也在B图像中利用后向运动预测,这和以前的标准是一致的,但不同的是B图像通过加权也能作为其他图像的参考图像。

在H.264/AVC标准中获得运动补偿的块结构大小不再局限于在宏块的基础上,可以从宏块的分块或子分块中获取运动矢量。

每个运动矢量都将会被编码、传送,另外分块方式也必须被编码在数据流中。选择大的分块方式(16×16、16×8或8×16)也许只需要传送很少的比特用于说明运动矢量和分块方式,但是运动补偿后抽样点差值也许将会比较大。选择小的分块方式(8×4或4×4)也许能得到很小运动补偿后抽样点差值,但是要花费很多比特去传输运动矢量和分块方式。因此对于分块的选择将会对压缩效果有着重大的影响。通常,大的分块方式用于帧内均匀的部分,而小的分块方式将有利于图像中细节描述,每个色度块将按照亮度的分块方式进行分块。由于宏块中色度分辨率是亮度分辨率的一半,因此色度块的大小不管在水平还是垂直方向上都只是亮度块的一半。同时,色度块上垂直运动向量和水平运动向量也只是亮度块的一半。

2. 在P类型片中的帧间预测

以往,一般的视频压缩的最高运动估计精度为半像素(half pixel),比如在14496-2标准(即MPEG-4视频编码部分)中的基本补偿技术就是采用半像素精度,采用的内插方法也是简单的双线性内插法,其补偿的质量也是相对于较低的。与上述不同的是,在H.264/AVC标准中的运动估计精度要求达到1/4(quarter pixel)精度。

在H.264/AVC标准中,对于P类型的片编码时可以采用多帧运动补偿预测,也就是超过一个先前编码帧可作为当前帧运动补偿的参考帧。

多帧预测需要解码器和编码器在缓冲中存贮多帧图像作为参考帧。解码器则利用比特流中参数设置信息内存管理控制操作(memory management control operation)去复制编码器相同的多帧缓冲。同时对于每个运动补偿的16×16、16×8、8×16或8×8块及其子块需传送参考索引参数,用于确定该块或子块参考帧在缓存中的位置。P类型片预测方式是与宏块中块相对应的,也即是与前面所介绍宏块中分块相对的。在P类型片中预测模式不仅仅只有表中所描述6种类型,还可以包括帧内预测模式。另外对于P_8×8类型预测方式,它是对应于8×8块的预测,还可以有子分块上预测模式。

对于P帧中不同预测模式分类可见JM中函数interpret_mb_mode_P,在其中它把当前宏块的分块方式及其模式存入到currMB数据结构中,以便在函数readMotionInfoFromNAL获取当前块的运动矢量,在readCBPandCoeffsFromNAL函数中获得预测差值。

3. 在B类型的片中帧间预测

与先前图像编码标准相比,在H.264/AVC标准中B类型片的概念得到推广,最大特点是由B类型片所组成B帧可以作为其他图像的参考帧。B类型片与P类型片最本质的区别是在B类型片中宏块或其子块的预测值是通过两个不同运动补偿值加权平均后取得的。B类型片使用两组不同参考图像,分别为list0(前向参考图像集)和list1(后向参考图像集)。

在B类型片中,四组不同的宏块预测方式将支持下面四种模式:①直接方式(direct mode):这种方式不需要传送运动矢量等附加信息(side information)。②单向预测方式(inter mode):只需传送1个宏块预测信息。③多假设预测方式(multihypothesis mode):需传送两个宏块预测信息。④帧内预测方式(intra mode)。下面我们分别具体介绍直接预测方式和多假设预测方式。

(1)直接预测方式(direct mode)

直接方式使用双向预测方式,传送预测差值。这种方式前向和后向运动矢量(mv0,mv1)是通过随后的参考图像(RL1)上公共确定宏块(co-located macroblock)的运动矢量(mvc)计算得到的。使用直接预测方式的宏块与公共确定宏块应具有相同的分块。

其中MV0为前向运动矢量,MV1为后向运动矢量,MVC代表着随后帧间图像公共确定块运动矢量。对于先前B帧概念而言,TDD为当前帧前一帧与后一帧相差的时间。TDB为当前B帧图像与前一帧的时差。当使用多帧预测后,这种概念发生变化。TDB为当前帧与其前向参考帧RL0之间的时差,而TDD为前向参考帧RL0与后向参考帧RL1之间的时差。在H.264/AVC标准中,直接预测方式因对预测信号进行混合加权运算,比先前标准中使用平均加权方式得到改善。这种技术最适合音乐电视和电影结尾的使用,它们通常是场景慢慢衰弱的。特别是在电影的结尾,场景逐渐衰弱成黑幕。在先前标准中没有好的压缩方式这种情况很难编码。如果把这种现象编码成PBBB模式,由于平均加权将使得第一和第三个B帧相对于周围的帧内、帧间帧及第二个B帧有较大的图像恶化,而基于帧间相对距离的混合加权方式却可以大大改善。

其中c为当前B帧中宏块或块中抽样值,cp为前向参考图像预测宏块或块中抽样值,cs为后向参考图像预测宏块或块中抽样值。

(2)多假设预测方式(multihypothesis mode)

多假设预测方式需要叠加由两个运动矢量所预测两个宏块预测值。我们把每个块预测值称为假设(hypotheses)。最后预测块通过两个假设的运动矢量得到的预测值平均后得到。多假设预测与双向预测方式不同。双向预测方式只允许前后向预测对线性组合而成。见图8。而多假设预测方式取消这种限制,它可以一个方向上预测对来获取最终的预测值。可以(前向,前向)或(后向,后向)进行预测。

当第一个假设来源于先前参考图像而第二个假设来源于后向参考图像时,多假设预测方式也可以成为双向预测方式。


H.264的技术优势及其在H.323系统中的应用
--------------------------------------------------------------------------------

一、引言 
近年来,随着我国通信网络基础设施的快速建设,视讯业务由于可以为处于多点的与会者提供音视频等多种信息,节省大量费用,提高工作效率,因而发展迅速,并有望成为NGN的主要业务。视讯会议系统从产生至今,发展了多种适于各类通信网络的系统,目前传输多媒体信息的主要有H.323、H.324和H.320等系统。IP技术的开放性特点使得它非常适合承载多种业务,随着IP的安全和QoS等问题的逐步解决,以IP作为承载网的优势将更加明显,下一代网络也将采用IP技术作为承载网技术。因此,本文以适用于在IP网上提供多媒体业务的H.323系统为主进行阐述。H.264是由JVT为实现视频的更高压缩比,更好的图像质量和良好的网络适应性而提出的新的视频编解码标准。事实证明,H.264编码更加节省码流,它内在的抗丢包、抗误码能力和良好网络适应性使它非常适于IP传输,H.264有望成为H.323系统中首选的视频标准。 
H.323系统对视频编解码标准提出了以下三个主要要求: 
(1)一些IP网络接入方式如xDSL可提供的带宽有限,除去音频、数据占用的带宽,传输视频的可用带宽就更少,这就要求视频编解码压缩率高,这样就可以在一定的比特率下具有更好的图像质量。 
(2)抗丢包性能和抗误码性能好,适应各种网络环境,包括丢包和误码严重的无线网络。 
(3)网络适应性好,便于视频流在网络中传输。 
二、H.264适于H.323系统的三个技术优势 
H.264在制定时充分考虑了多媒体通信对视频编解码的各种要求,并借鉴了以往视频标准的研究成果,因而具有明显的优势。以下将结合H.323系统对视频编解码技术的要求,阐述H.264的三个优势。 
1. 压缩率和图像质量方面 
对传统的帧内预测、帧间预测、变换编码和熵编码等算法的改进,使H.264的编码效率和图像质量在以往标准的基础上进一步提高。 
(1)可变块大小:帧间预测时可以灵活选择块的大小。在宏块(MB)划分上H.264采用了16×16,16×8,8×16,8×8四种模式;当划分为8×8模式时,又可进一步采用8×4、4×8、4×4三种子宏块划分模式进一步划分,这样可以使运动物体的划分更加精确,减小预测误差,提高编码效率。帧内预测一般采取两种亮度预测模式:Intra_4×4和Intra_16×16。Intra_4×4适合图像中细节丰富的区域,而Intra_16×16模式更适合粗糙的图像区域。 
(2)高精度运动估值:在H.264中亮度信号运动补偿预测的精度是1/4像素。如果运动矢量指向参考图像的整像素位置,预测值就是该位置上参考图像像素的值;否则使用6阶FIR滤波器的线性内插获得1/2像素位置的预测值,通过取整数和1/2像素位置像素值均值的方式获得1/4像素位置的值。显然采用高精度运动估计会进一步减小帧间预测误差。 
(3)多参考帧运动估值:每一个M×N亮度块都要经过运动补偿预测得到运动矢量和参考图像索引,子宏块中的每个子宏块划分都会有不同的运动矢量。选择参考图像过程是在子宏块层次上进行的,因而一个子宏块中的多个子宏块划分在预测时使用相同的参考图像,而同一个slice的多个子宏块之间选择的参考图像可以不同,这就是多参考帧运动估值。 
(4)参考图像的选取更加灵活:参考图像甚至可以是采用双向预测编码方式的图像,这就允许选取与当前图像更加匹配的图像为参考图像进行预测,从而可以减小预测误差。 
(5)加权预测:允许编码器以一定的系数对运动补偿预测值进行加权,从而在一定的场景下可以提高图像质量。
(6)运动补偿循环内的消除块效应滤波器:为消除在预测和变换过程中引入的块效应,H.264也采用了消除块效应滤波器,但不同的是H.264的消除块效应滤波器位于运动估计循环内部,因而可以利用消除块效应以后的图像去预测其他图像的运动,从而进一步提高预测精度。 
2. 抗丢包和抗误码方面 
参数集、片的使用、FMO、冗余片等关键技术的使用可以大大提高系统的抗丢包和抗误码性能。 
(1)参数集:参数集及其灵活的传送方式会大大降低因关键的头信息丢失而造成错误发生的可能。为保证参数集可靠地到达解码器端,可以采用重发的方式多次发送同一参数集,或传送多个参数集。 
(2)片(slice)的使用:图像可以划分成一个或几个片。将图像划分为多个片,当某一片不能正常解码时的空间视觉影响就会大大降低,而且片还提供了重同步点。 
(3)PAFF和MBAFF:当对隔行扫描图像进行编码时,由于两个场之间存在较大的扫描间隔,这样,对运动图像来说帧中相邻两行的空间相关性相对于逐行扫描时就会减小,这时对两个场分别进行编码会更节省码流。对帧来说,存在三种可选的编码方式,将两场合并作为一帧进行编码或将两场分别编码或将两场合并起来作为一帧,但不同的是将帧中垂直相邻的两个宏块合并为宏块对进行编码。前两种称为PAFF编码,对运动区域进行编码时场方式有效,非运动区域由于相邻两行有较大的相关性,因而帧方式会更有效。当图像同时存在运动区域和非运动区域时,在MB层次上,对运动区域采取场方式,对非运动区域采取帧方式会更加有效,这种方式就称为MBAFF。 
(4)FMO:通过FMO可以进一步提高片的差错恢复能力。通过片组(slice group)的使用,FMO改变了图像划分为片和宏块的方式。宏块到片组的映射定义了宏块属于哪一个片组。利用FMO技术,H.264定义了七种宏块扫描模式。图1给出了其中一种模式的示例。 
如图1所示,阴影部分宏块属于片组0,白色部分属于片组1。假设片组0在传输过程中丢失,由于丢失宏块的相邻宏块都属于片组1,这样差错恢复工具就会有更多的可利用信息来恢复丢失片的数据。片组可以进一步划分为大小合适的片以适应网络的MTU值。 
(1)帧内预测:H.264借鉴了以往视频编解码标准在帧内预测上的经验,值得注意的是,在H.264中,IDR图像可以使参考图像缓存无效,之后的图像在解码时不再参考IDR图像之前的图像,因而IDR图像具有很好的重同步作用。在一些丢包和误码严重的信道中,可以采取不定期传送IDR图像的方式进一步提高H.264的抗误码和抗丢包性能。 
(2)冗余图像:为提高H.264的解码器在发生数据丢失时的顽健性,可以采用传送冗余图像的方式。当基本图像丢失时,可以通过冗余图像重构原图像。 
(3)数据划分:由于运动矢量和宏块类型等信息相对于其他信息具有更高的重要性,因而在H.264中引入了数据划分的概念,将片中语义彼此相关的语法元素放在同一个划分中。在H.264中有三类不同的数据划分,三类数据划分分开传送,若第二类或第三类划分的信息丢失,使用差错恢复工具仍然可以通过第一类划分中的信息对丢失信息进行适当恢复。 
(4)多参考帧运动估值:多参考帧运动估值不但可以提高编码器的编码效率,还可以提高差错恢复能力。在H.323系统中,通过使用RTCP,当编码器得知有参考图像丢失时,可以选择解码器已经正确接收的图像作为参考图像。 
(5)为阻止错误在空间上的蔓延,解码器端可以指定当P片或B片中的宏块在做帧内预测时不使用相邻的非帧内编码宏块作为参考。 
3. 网络适应性方面 
为适应各种网络环境和应用场合,H.264定义了视频编码层(VCL)和网络提取层(NAL)。其中VCL功能是进行视频编解码,包括运动补偿预测,变换编码和熵编码等功能;NAL用于采用适当的格式对VCL视频数据进行封装打包。H.264编解码器的层结构如图2所示。 
(1)NAL Units:视频数据封装在整数字节的NALU中,它的第一个字节标志该单元中数据的类型。H.264定义了两种封装格式。基于包交换的网络(如H.323系统)可以使用RTP封装格式封装NALU。而另外一些系统可能要求将NALU作为顺序比特流传送,为此H.264定义了一种比特流格式的传输机制,使用start_code_prefix将NALU封装起来,从而确定NAL边界。 
(2)参数集:以往视频编解码标准中GOB/GOP/图像等头信息是至关重要的,包含这些信息的包的丢失常导致与这些信息相关的图像不能解码。为此H.264将这些很少变化并且对大量VCL NALU起作用的信息放在参数集中传送。参数集分为两种,即序列参数集和图像参数集。为适应多种网络环境,参数集可以带内传送,也可以采用带外方式传送。 
三、在H.323系统中实现H.264 
由于H.264是一种新的视频编解码标准,在H.323体系中应用H.264存在一些问题,比如如何在H.245能力协商过程中定义实体的H.264能力,因此必须对H.323标准进行必要的补充和修改。为此,ITU-T制定了H.241标准。本文仅介绍与H.323相关的修改。 
首先,要规定如何在H.245能力协商过程中定义H.264能力。H.264能力集是一个包含一个或多个H.264能力的列表,每一个H.264能力都包含Profile和Level两个必选参数和CustomMaxMBPS、CustomMaxFS等几个可选参数。在H.264中,Profile用于定义生成比特流的编码工具和算法,Level则是对一些关键的参数要求。H.264能力包含在GenericCapability结构中,其中CapabilityIdentifier的类型为standard,值为0.0.8.241.0.0.1,用于标识H.264能力。MaxBitRate用于定义最大比特率。Collapsing字段包含H.264能力参数。Collapsing字段第一个条目是Profile,ParameterIdentifier类型为standard,值为41,用于标识Profile,ParameterValue类型为booleanArray,其值标识Profile,可以为64、32或16,这三个值依次表示Baseline、Main和Extended三个Profile;Collapsing字段第二个条目是Level,ParameterIdentifier类型为standard,值为42,用于标识Level,ParameterValue类型为unsignedMin,其值标识H.264 AnnexA中定义的15个可选的Level值。其他的几个参数作为可选项出现。 
其次,由于H.264中图像的组织结构与传统的标准不同,一些原有的H.245信令不在适用于H.264,如MiscellaneousCommand中的videoFastUpdateGOB等,因此H.241重新定义了几个信令提供相应功能。 
最后,H.264的RTP封装参考RFC 3550,载荷类型(PT)域未作规定。 
四、结束语 
作为一种新的国际标准,H.264在编码效率、图像质量、网络适应性和抗误码方面都取得了成功。但随着终端和网络的快速发展,对视频编解码的要求在不断提高,因此H.264仍在继续地完善和发展以适应新的要求。现在对H.264的研究主要集中在如何进一步降低编解码时延、算法优化和进一步提高图像质量上。目前,使用H.264进行编解码的视频会议系统越来越多,大多数做到了在Baseline Profile上的互通。随着H.264自身的不断完善和视频通信的不断普及,相信H.264的应用将越来越广泛。



http://hi.baidu.com/komeworkroom/blog/item/5ff9e136f1e01e310a55a949.html

AVS标准简介 
 
AVS是中国自主制定的音视频编码技术标准。AVS工作组成立于2002年6月,在短短的一年多时间内,审议了182个提案,先后采纳了41项提案, AVS视频部分于2003年12月定稿。AVS标准以当前国际上最先进的MPEG-4 AVC/ H.264框架为起点,自主制定适合广泛数字视频应用的中国标准,其中强调自主知识产权,同时充分考虑实现难度。 
AVS与MPEG-4 AVC/ H.264标准的主要技术差异包括:8x8整数变换、量化、帧内预测、1/4精度像素插值、特殊的帧间预测运动补偿、二维熵编码、去块效应环内滤波等。 
AVS采用整数8x8变换,它可以在16位处理器上无失配地实现,从而克服了MPEG-4 AVC/ H.264之前所有视频压缩编码国际标准中采用的8x8 DCT变换存在失配的固有问题。而MPEG-4 AVC/ H.264所采用的4x4整数变换在高分辨率的视频图像上的去相关性能不及8x8的变换有效。AVS采用了64级量化,可以完全适应不同的应用和业务对码率和质量的要求。目前AVS所采用的8x8变换与量化方案大大降低了芯片的实现难度(即可大大降低芯片功耗,这一点对移动类产品是十分宝贵的)。参照MPEG-4 AVC/ H.264帧内预测的思路,AVS采用帧内预测技术,用相邻块的像素预测当前块,同时采用代表空间域纹理方向的多种预测模式。但AVS亮度和色度帧内预测都是以8x8块为单位的。亮度块采用5种预测模式,色度块采用4种预测模式,而这4种模式中又有3种和亮度块的预测模式相同。在编码质量相当的前提下,AVS采用较少的预测模式,使方案更加简洁、实现的复杂度大为降低。 
帧间运动补偿编码是混合编码技术框架中最重要的部分之一。AVS标准采用了16×16,16×8,8×16和8×8的块模式进行运动补偿,而去除了MPEG-4 AVC/ H.264标准中的8×4,4×8,4×4的块模式,目的是能更好地刻画物体运动,提高运动搜索的准确性。实验表明,对于高分辨率视频,AVS选用的块模式已经能足够精细地表达物体的运动。较少的块模式,能降低运动矢量和块模式传输的开销,从而提高压缩效率、降低编解码实现的复杂度。 
AVS和MPEG-4 AVC/ H.264都采用了1/4像素精度的运动补偿技术。MPEG-4 AVC/ H.264采用6抽头滤波器进行半像素插值并采用双线性滤波器进行1/4像素插值。而AVS采用了不同的4抽头滤波器进行半像素插值和1/4像素插值,在不降低性能的情况下减少插值所需要的参考像素点,减小了数据存取带宽需求,这在高分辨率视频压缩应用中是非常有意义的。 
在传统的视频编码标准(MPEG-x系列与H.26x系列)中,双向预测帧B帧都只有一个前向参考帧与一个后向参考帧,而前向预测帧P 帧则只有一个前向参考帧。而新近的MPEG-4 AVC/ H.264充分地利用图片之间的时域相关性,允许P帧和B帧有多个参考帧,最多可以有31个参考帧。多帧参考技术在提高压缩效率的同时也将极大地增加存储空间与数据存取的开销。AVS中P帧可以利用至多2帧的前向参考帧,而B帧采用前后各一个参考帧,P帧与B帧(包括后向参考帧)的参考帧数相同,其参考帧存储空间与数据存取的开销并不比传统视频编码的标准大,而恰恰是充分利用了必须预留的资源。 
AVS的B帧双向预测使用了直接模式(direct mode)、对称模式(symmetric mode)和跳跃模式(skip mode)。使用对称模式时,码流只需要传送前向运动矢量,后向运动矢量可由前向运动矢量导出,从而节省后向运动矢量的编码开销。对于直接模式,前块的前、后向运动矢量都是由后向参考图像相应位置块的运动矢量导出,无需传输运动矢量,因此也可以节省运动矢量的编码开销。跳跃模式的运动矢量导出方法和直接模式的相同,跳跃模式编码块的运动补偿的残差也均为零,即该模式下宏块只需要传输模式信号,而不需要传输运动矢量、补偿残差等附加信息。

AVS熵编码采用自适应变长编码技术。在AVS熵编码过程中,所有的语法元素和残差数据都是以指数哥伦布码的形式映射成二进制比特流。采用指数哥伦布码的优势在于:一方面,它的硬件复杂度比较低,可以根据闭合公式解析码字,无需查表;另一方面,它可以根据编码元素的概率分布灵活地确定以k阶指数哥伦布码编码,如果k选得恰当,则编码效率可以逼近信息熵。

对预测残差的块变换系数,经扫描形成(level、run)对串,level、run不是独立事件,而存在着很强的相关性,在AVS中level、run采用二维联合编码,并根据当前level、run的不同概率分布趋势,自适应改变指数哥伦布码的阶数。 
AVS-视频目前定义了一个档次(profile)即基准档次。该基准档次又分为4个级别(level),分别对应高清晰度与标准清晰度应用。与MPEG-4 AVC/ H.264的baseline profile相比,AVS-视频增加了B帧、interlace等技术,因此其压缩效率明显提高,而与MPEG-4 AVC/ H.264的main profile相比,又减少了CABAC等实现难度大的技术。 
AVS标准的主要特点是应用目标明确,技术有针对性。因此在高分辨率应用中,其压缩效率明显比现在在数字电视、光存储媒体中常用的MPEG-2视频提高一个层次。在压缩效率相当的前提下,又较MPEG-4 AVC/ H.264的 main profile的实现复杂度大为降低。
目前的AVS视频技术可实现标准清晰度(CCIR 601或相当清晰度)、低清晰度(CIF、SIF)等不同格式视频的压缩,但针对此类应用的压缩效率还有待提高,这应当是AVS视频下一步的工作重点。
二、AVS面临的机遇与挑战
数字音视频编解码标准是数字音视频产业的基础标准,在广电、电信和消费类电子产品等领域具有巨大的产业需求。跨入新世纪以来,随着编解码技术本身的进步和芯片集成度和计算速度的迅速提高,数字音视频编解码技术标准面临更新换代的历史性机遇。在数字电视、高清晰度视盘、流媒体和多媒体通信这个即将来临的产业大潮中,AVS 标准为我国构建“技术-专利-标准-芯片与软件-整机与系统制造-数字媒体网络”的产业链提供了难得机遇。
中国数字音视频产业的市场是非常庞大的,而在市场经济的浪潮中,企业追求的是快速高效的市场占有率和利润。在MPEG-4 AVC/ H.264与AVS标准的选择上,企业看中的是技术的成熟与可靠(实质上是成熟可靠的专用芯片及完整的系统解决方案)。AVS应当首先在这方面下功夫,以便在相关行业造成既成事实的行业标准,同时力争将其纳入国际标准。AVS产业联盟首次筹备会的召开,意味着各企业将组织起来,把有限的资金通过分工合作的方式在AVS方面组成完整的产业链,使我国的音视频产业少受制约。通过AVS产业联盟,获取国家更多的支持;同时通过联盟的内部规则和约束手段,尽量规范市场、避免恶性竞争。
AVS工作组组长高文介绍说,2005年以前,是AVS的产业化推进期,AVS编解码器软件已经实现,在此基础上,AVS卫星端到端直播系统已经在鑫诺卫星上试播成功。2005~2008年,是AVS的增长成熟期,从2005年开始,计划AVS解码器年部署量超过1000万台。2008~2015年,是AVS的平稳期,在此期间,AVS解码设备年均产量将达到4000万。

据估计,2004年到2012年,中国国内将会销售4亿台数字电视机(含机顶盒)和激光视盘机,如按照MPEG-2每台设备需要交2.5美元的专利使用费,我国相关企业将会需要付出近10亿美元的代价。而加速推进AVS的产业化可以节省相当可观的MPEG-2专利费,从技术上来看,如果利用MPEG-2技术传送高清晰电视需占20M带宽,用AVS技术传送同样质量的节目只要8Mbit/s带宽。如果利用现有MPEG-2技术,现有DVD盘片只能存二十几分钟的高清节目,而利用AVS技术,单张DVD盘片可放一部高清电影。AVS的产业化不仅可以节省相当可观的专利费,还能节省信道资源和光盘存储资源,为我国数字电视等音视频产业和相关芯片产业提供跨越发展的技术源头,让我国AV产业在竞争中直起腰杆。中国AVS工作组首席顾问、美国MPEG前视频组组长CliffReader先生公开表示,中国AVS将是世界第一个高清DVD标准、第一个高效编码高清数字电视标准。
AVS标准是一个极具战略性的领域,它会影响到从多媒体数字信号编解码器芯片和移动网络到数字电视、高清晰度光盘和宽带网络应用程序等等重大关键数字音视频前端系统与信息家电产业。AVS标准包括系统、视频、音频、数字版权管理等四个主要技术标准和一致性测试等支撑标准。最初的应用领域主要有两个。首先是新一代EVD,也被称作EVD2。这种光盘规格处理的是1080p格式视频图像。另一个就是中国的卫星电视。将用于中国计划明年开通的卫星电视(DBS),有关将AVS用于3G移动通信系统的研究工作最近已经开始。

三、AVS的发展是一个系统工程
AVS标准的制定在整个产业链中是龙头地位,可以带动整个产业链的发展,标准化是为了规范不同设备制造商的产品实现互通和兼容,是支持社会化大生产的一种重要机制。制定我国的AVS视频标准,今后生产DVD、数字电视、手机、多媒体通信及视讯会议等新兴音视频产品的企业不用再因技术和专利使用费等受制于人。
我们要充分认识到一个标准的制定是否能取得预期的成功会受到很多因素的影响,它的发展是一项系统工程。现代市场经济使得企业在做决策时非常实际,政府的干预只能在一定的限度内。只有当AVS标准及相关核心芯片和系统与当前MPEG-4 AVC/ H.264标准相比具备充分的优势时,才能赢得众多整机生产厂商的青睐。
AVS的发展速度始终是一个关键性因素,许多生产厂商决不愿意做冒险尝试,他们希望有成熟稳定的芯片和系统设计。一旦选定一项,很难再下决心重新选择新的芯片和系统设计,除非能充分证明新系统有很好的性能稳定性,并能从中获得极大的利润空间。这就要求AVS标准在产业的发展初期就能迅速占领尽可能大的市场份额,从而更好地促进AVS标准的发展。在“技术-专利-标准-芯片与软件-整机与系统制造-数字媒体网络”的产业链中,任何一个环节的变化都会影响到AVS标准的发展,应当把它看成是一项系统工程,抓好每个环节,统筹考虑,全面发展。


AVS-视频技术概述
AVS是中国自主制定的音视频编码技术标准。AVS工作组成立于2002年6月,当年8月开始了第一次的工作会议。经过7次AVS正式工作会议和3次视频组附加会议,经历一年半的时间,审议了182个提案,先后采纳了41项提案,2003年12月19日AVS视频部分终于定稿!
当前,AVS视频主要面向高清晰度电视、高密度光存储媒体等应用中的视频压缩。
在2002年的最初几次会议中,视频组专家统一了以当前国际上最先进的MPEG-4 AVC/ H.264框架为起点,自主制定适合既定应用的中国标准,其中强调自主知识产权,同时充分考虑实现复杂度。

 

一、AVS-视频的核心技术

 

AVS-视频当中具有特征性的核心技术包括:8x8整数变换、量化、帧内预测、1/4精度像素插值、特殊的帧间预测运动补偿、二维熵编码、去块效应环内滤波等。

 

1.变换量化

 

AVS的8x8变换与量化可以在16位处理器上无失配地实现,从而克服了MPEG-4 AVC/ H.264之前所有视频压缩编码国际标准中采用的8x8 DCT变换存在失配的固有问题。而MPEG-4 AVC/ H.264所采用的4x4整数变换在高分辨率的视频图像上的去相关性能不及8x8的变换有效。AVS采用了64级量化,可以完全适应不同的应用和业务对码率和质量的要求。在解决了16位实现的问题后,目前AVS所采用的8x8变换与量化方案,即适合于16位DSP或其他软件方式的快速实现,也适合于ASIC的优化实现。

 

2.帧内预测

 

AVS的帧内预测技术沿袭了MPEG-4 AVC/ H.264帧内预测的思路,用相邻块的像素预测当前块,采用代表空间域纹理方向的多种预测模式。但AVS亮度和色度帧内预测都是以8x8块为单位的。亮度块采用5种预测模式,色度块采用4种预测模式,而这4种模式中又有3种和亮度块的预测模式相同。在编码质量相当的前提下,AVS采用较少的预测模式,使方案更加简洁、实现的复杂度大为降低。

 

3.帧间预测

 

帧间运动补偿编码是混合编码技术框架中最重要的部分之一。AVS标准采用了16×16,16×8,8×16和8×8的块模式进行运动补偿,而去除了MPEG-4 AVC/ H.264标准中的8×4,4×8,4×4的块模式,目的是能更好地刻画物体运动,提高运动搜索的准确性。实验表明,对于高分辨率视频,AVS选用的块模式已经能足够精细地表达物体的运动。较少的块模式,能降低运动矢量和块模式传输的开销,从而提高压缩效率、降低编解码实现的复杂度。
AVS和MPEG-4 AVC/ H.264都采用了1/4像素精度的运动补偿技术。MPEG-4 AVC/ H.264采用6抽头滤波器进行半像素插值并采用双线性滤波器进行1/4像素插值。而AVS采用了不同的4抽头滤波器进行半像素插值和1/4像素插值,在不降低性能的情况下减少插值所需要的参考像素点,减小了数据存取带宽需求,这在高分辨率视频压缩应用中是非常有意义的。
在传统的视频编码标准(MPEG-x系列与H.26x系列)中,双向预测帧B帧都只有一个前向参考帧与一个后向参考帧,而前向预测帧P 帧则只有一个前向参考帧。而新近的MPEG-4 AVC/ H.264充分地利用图片之间的时域相关性,允许P帧和B帧有多个参考帧,最多可以有31个参考帧。多帧参考技术在提高压缩效率的同时也将极大地增加存储空间与数据存取的开销。AVS中P帧可以利用至多2帧的前向参考帧,而B帧采用前后各一个参考帧,P帧与B帧(包括后向参考帧)的参考帧数相同,其参考帧存储空间与数据存取的开销并不比传统视频编码的标准大,而恰恰是充分利用了必须预留的资源。
AVS的B帧的双向预测使用了直接模式(direct mode)、对称模式(symmetric mode)和跳过模式(skip mode)。使用对称模式时,码流只需要传送前向运动矢量,后向运动矢量可由前向运动矢量导出,从而节省后向运动矢量的编码开销。对于直接模式,当前块的前、后向运动矢量都是由后向参考图像相应位置块的运动矢量导出,无需传输运动矢量,因此也可以节省运动矢量的编码开销。跳过模式的运动矢量的导出方法和直接模式的相同,跳过模式编码的块其运动补偿的残差也均为零,即该模式下宏块只需要传输模式信号,而不需要传输运动矢量、补偿残差等附加信息。

 

4.熵编码

 

AVS熵编码采用自适应变长编码技术。
在AVS熵编码过程中,所有的语法元素和残差数据都是以指数哥伦布码的形式映射成二进制比特流。采用指数哥伦布码的优势在于:一方面,它的硬件复杂度比较低,可以根据闭合公式解析码字,无需查表;另一方面,它可以根据编码元素的概率分布灵活地确定以k阶指数哥伦布码编码,如果k选得恰当,则编码效率可以逼近信息熵。
对预测残差的块变换系数,经扫描形成(level、run)对串,level、run不是独立事件,而存在着很强的相关性,在AVS中level、run采用二维联合编码,并根据当前level、run的不同概率分布趋势,自适应改变指数哥伦布码的阶数。

 

二、AVS-视频目前的性能与应用

 

AVS-视频目前定义了一个档次(profile)即基准档次。该基准档次又分为4个级别(level),分别对应高清晰度与标准清晰度应用。
与MPEG-4 AVC/ H.264的baseline profile相比,AVS-视频增加了B帧、interlace等技术,因此其压缩效率明显提高,而与MPEG-4 AVC/ H.264的main profile相比,又减少了CABAC等实现难度大的技术,从而增强了可实现性。
AVS-视频的主要特点是应用目标明确,技术有针对性。因此在高分辨率应用中,其压缩效率明显比现在在数字电视、光存储媒体中常用的MPEG-2视频提高一个层次。在压缩效率相当的前提下,又较MPEG-4 AVC/ H.264的 main profile的实现复杂度大为降低。图1为一个高清晰度视频序列(1280 x 720、60p)的压缩实例。其中AVS采用参考软件RM5.0,H.264 baseline和 main profile 均采用JM6.1e。除H.264 baseline帧类型设置为IPPP…外,AVS、H.264 main profile、MPEG-2 帧类型均设置为IBBPBBP…的格式,每隔0.5s出现1个I帧。
目前的AVS-视频技术可实现标准清晰度(CCIR 601或相当清晰度)、低清晰度(CIF、SIF)等不同格式视频的压缩,但针对此类应用的压缩效率还有待提高,这应当是AVS-视频下一步的工作重点。

你可能感兴趣的:(音视频编解码基础知识)