Software 版 (精华区)

发信人: joyfree (东风破·乘风破浪), 信区: Software
标  题: XviD的历史与特点
发信站: 哈工大紫丁香 (2003年12月04日21:39:26 星期四), 站内信件

(zz)
2002年,TDX2002的规则中,除了允许使用旧有的DivX3.11编码之外,新加入了第二种核准
使用的编码--也就是本文标题中的XivD编码。作为每年在网上放出数千部最新影片的网上
高品质影音组织,他们所遵循的规则对于整个MPEG-4编码的应用市场来说,都有决定性的
重要意义。XviD在TDX2002中,以DivX3.11的替代者的姿态出现,还有人戏称:XviD是继承
DivX3.11的非商业同人版。那么XviD到底是什么?它又有些什么样通天彻底的视频压缩本
领?或许您并不知道的是:XviD是个本来不会出现的东西…… 
几经波折的诞生记 
4年以前,在PC上能用的唯一MPEG-4编码器就是由微软所开发的,包括MS MPEG4V1、MS 
MPEG4V2、MS MPEG4V3的系列编码内核。其中前面两种都可以用来制作AVI文件,至今都作
为Windows的默认组件。不过V1和V2的编码质量都还不太好,直到MS MPEG4V3开始,画面质
量有了显著的进步。不过微软却决定仅将这个MS MPEG4V3 的视频编码内核封闭在Windows 
Media流媒体技术,也就是我们熟知的ASF文件之中,不再能用于AVI文件。ASF文件虽然有
一些好处,但是过于封闭甚至不能被编辑,惹恼了天不怕地不怕的电影黑客。很快便有小
组修改了微软的MS MPEG4V3,解除了不能用于AVI文件的限制,并开放了其中一些压缩参数
,由此,也就诞生了我们今天所熟悉的MPEG4编码器DivX;-)3。11。 
DivX广泛流行,成为DVDRip的标准,问题是,它的基础技术是非法盗用微软的,只能在地
下里流传却上不了台面,无法进行更广泛的产品化,更无法生产硬件播放机。在这种情况
下,一些精通视频编码的程序员(包括原DivX 3.11的开发者)成立了一家名为DivXNetwor
ks Inc.的公司,简称DXN。DXN发起一个开放源码项目ProjectMayo,目标是开发一套全新
的、开放源码的MPEG4编码软件。特别是完全符合ISO MPEG4标准的OpenDivX CODEC吸引了
许多软件高手参与,并很快开发出OpenDivX编码器和解码器原型,之后又开发出更高性能
的编码器Encore 2等等。这一时期,主要编码工作是DXN的人在做,而许多技术难关的解决
得力于来自开放源码社会的帮助。 
就在一切都看起来进展顺利的时候,好戏上演了。ProjectMayo虽然是开放源码,但不是依
据GPL(通用公共许可证,一种开放源码项目中常用的保障自由使用和修改的软件或源码的
协议)。DXN在设计授权协议时留了一手,2001年7月,就在Encore 2基本成型,差不多可
以产品化的时候,DXN另搞了一个DIVX.COM网站,封闭了源码,发布了他们自己的DivX 4。
DivX 4的基础就是OpenDivX中的Encore 2,但利用了DivX的牌号,可以说出乎意料的摆了
所有人一刀。由于DXN不再参与,ProjectMayo陷于停顿,Encore2的源码也被DXN从服务器
上撤下。经过激烈的争论,DXN虽然承认Encore 2在法律上是开放的,但仍然拒绝把它放回
服务器。开放源码社会就这样被狠狠地涮了一回。 
OpenDivX尚不能实际使用,而DivX 4(以及后续的收费版本--DivX 5)等等都成了私有财
产,许多人为打破微软垄断而无偿付出的智慧和劳动仅仅是帮助了DXN发财,这种结果当然
是不能被接受的。为此,整个0dayz组织永远的拒绝了DXN公司的DivX4\5,而原OpenDivX
开发组中的幸存者,逐渐重新聚拢开发力量,在最后一个OpenDivX版本的基础上,发展出
了XviD。 
劫后余生的XVID到现在又度过了近1年时间,它继承并发展了OpenDIVX Encore 2,性能得
到极大提高,被认为目前世界上速度最快的MPEG4 CODEC。XVID重写了所有代码,并吸取前
车之鉴依照GPL发布(注意不再是LGPL,所以谁要是想用它做成产品而不开放源码是非法的
)。不过,因为MPEG4还存在专利权的问题,所以XVID只能仿照LAME的做法,仅仅作为对如
何实现ISO MPEG-4标准的一种研究交流,网站上只提供源码,如果要使用就要自己编译源
码或者到第三方网站下载编译好的可运行版本。 
想当初Gaj之流的几个家伙搞OpenDivX的时候,一开始是很像一个像模像样的开放源码项目
,很多人都被吸引过去一起开发,测试。直到后来,那几个家伙一夜之间露出骗子的本来
面目了,把OpenDivX的成果一股脑带走,变成了封闭源码的DivX4,而后进一步变成现在的
收费的DivX5了。本来很好的OpenDivX被逼流产,不过也就促成了今天XviD的诞生、发展和
壮大。现在的XVID更可以说超越了DivX 5,以更好的质量,更强的功能挑战着新一代的MPE
G4应用战场。 
丰富多彩的技术特性 
不仅XviD的出现本身就是开放源码社会中典型的一部教科书,它在技术上的各种新特性也
都是货真价实、童叟无欺的。对于一个第二代的MPEG4视频编码内核来说,XviD的各种算法
设计都有代表性的先进意义。 
多种编码模式: 
除了最原始单重估定码流压缩(1-pass CBR)之外,XviD提供了包括:单重质量模式动态
码流压缩、单重量化(Quantization)模式动态码流压缩、和包括外部控制和内部控制的
两种双重(2-pass)动态码流压缩模式。XviD显然是目前PC上的MPEG4编码内核中, 
可选模式最多的视频编码。 
其中特别是双重(2-pass)动态码流压缩模式,通过检测画面运动幅度以最优化的方式曲
线分配画面量化幅度,使充满活性元素的视频影片可以在占用空间和画面质量之间获得最
佳的平衡。而单重量化(Quantization)模式动态码流压缩,可以高速地一次性生成可控
画面细节的动态码流视频文件,在较少的压缩时间代价之下,可以获得较稳定的画面细节
质量,这都是单纯的DivX3.11所不具有的优秀功能。 
量化(Quantization)方式和范围控制 
量化(Quantization),简单的说就是在编码时通过对时间或空间上相邻的画面单元进行
同化、模糊细节的程度,是对画面质量最基本的控制因素。XviD不仅提供了标准的MPEG量
化方式,还特地提供了更适合低码流压缩的.h263量化方式。并且XviD还可以在双重(2-pa
ss)运算时,根据对画面信息的综合分析,动态的决定某段场景的画面量化方式,真可以
说是为网络媒体文件传播中,空间与画质的平衡而考虑,设计贴心得到家了。 

除了量化方式选择,XviD还提供了强大的对压缩过程中的量化幅度的范围控制。用户可以
选定压缩时允许使用的量化幅度范围。例如设定一个量化的上限,就可以避免可能出现的
画质大幅下降的情况。 
运动侦测(Motion Search)和曲线平衡分配(Curve) 
对画面逐帧进行运动侦测,以及对全片段的运动侦测结果进行分析后,重新以曲线平衡分
配每一帧的量化幅度,以做到:需要高码流的运动画面可以分配更多空间、更高的码流、
更低的量化幅度来保持画面的细节;而对于不包含太多运动信息的静态画面,则消减分配
预算。这种把好钢用在刀刃上的做法,是XviD做为第二代MPEG4编码的核心内容。 

XviD提供了多极运动侦测精度,包括半像素插值(half pixel interpolation)的技术以1
6x16像素的微区块为单元标示上运动矢量;以及4分运动矢量(inter4v motion vectors)
的方式,以8x8的像素区块为单元更细致的纪录运动向量以供二重分析。 
动态关键帧距(I-frame interval) 
动态关键帧距是另一个XviD所具有的,在空间和画面之间获得最大平衡的技术。我们知道
在视频压缩中不是每一帧都记录着全部的画面信息,事实上只有关键帧记录着完整的画面
信息,而后续的P帧(P-Frame)仅仅是纪录下与之前一帧的差值。如果关键帧之间的画面
变化很大,则会浪费宝贵的空间在P-Frame上;而加入把变化很大的那一帧记录在关键帧里
,那么由于后续的帧不再有更大的变化,就可以节省P帧所需的空间。因此,根据画面镜头
切换和运动幅度来变换关键帧的位置,对于视频压缩下的画面质量提高,就有着事半功倍
的效果。 
心理视觉亮度修正 
除了基本的MPEG4编码外,XviD还提供了不少附加功能。其中典型的就是心理视觉亮度修正
。这个功能可能通过去除肉眼不能分辨的亮度信号和亮度差异,来提高压缩效率。遗憾的
尽管这个设计非常的有创意,但是目前的实际应用中却会导致肉眼可见的画面质量下降,
还期待在日后的版本中可以有所改进。 
演职员表选项 
另外一个贴心的设计是电影专用的"演职员表选项"。这个功能可以在用户指定的某些不必
要保留细节的段落处(例如电影的演职员表),设定下极低的码流。甚至压缩到正片码流
的10%以下,可以节省不少空间,设计的也非常的贴心。 
外部自定义控制 
除了XivD自己的内部曲线分配控制方式外,XviD也提供了外部的开放接口。允许使用者略
过XviD本身的编码分析内核,利用第三方提供的外部分析工具,例如Gordian Knot,生成
的分配好的控制文件,再交还XviD做最终的二重运算压缩。这种方式扩展了XviD的可用性
和用户控制程度,因为像Gordian Knot这种软件甚至可以做到由用户控制每一帧的量化幅
度和码流分配额度,可以为高级应用提供更多的可能性。 
运动矢量加速(Hinted Me)编码 
XviD还有专为提高编码效率而开发的设计,就是纪录下画面的运动矢量信息至一个Log文件
中。再在二重运算压缩时通过直接读取该文件中的信息,节省下对运动矢量信息的重复运
算,大幅提高编码速度。 
画面优化解码 
不仅在编码上XivD拥有强大的功能,在解码时的画面优化方面,XviD也有很多新的建树。
例如"Horizontal deblock (Y)"可以柔化水平方向的亮度马赛克;"Horizontal deblock 
(C)"可以柔化水平相的色度马赛克;"Deringing(Y)"可以柔化环状亮度色斑;"Deinging 
(C)"可以柔化环状色度色斑;"mosquito"可以减少画面中的蚊状噪斑。并且,这些XviD的
画面优化手段都是可选的,因此只要关闭几个不是那么必要的选项,就可以在低配置的PC
机上播放。 
正在开发的B帧 
另一个XviD中引人注目的技术发展,就是B帧。我们知道I帧就是关键帧,P帧在关键帧之间
,只储存与之前一幅已解压画面的差值。B帧与P帧的原理一样,但除了叁考之前解压了的
画面外,亦会参考后面一帧中的画面信息。因此B帧解压出来的画面比P帧就要来的好。 
之前的MPEG4编码内核都仅仅使用了I帧和P帧存储画面。如果能在此基础上使用B帧技术,
自然可以在画质和压缩比上更上一层楼。目前XviD已经为开发人员提供了测试性质B帧体验
版的XviD编码内核,相信不久的将来,XviD就可以把MPEG4编码的优势发挥到极致,成为网
上视频记录格式的盟主。 
--
╦╔═╬═╮╔═╮╭╮  ╔╦══╦╮╔╬╮╔═╮╔╔═╮     对事业         
║╔═╯    ╠═╣╔╬╮╔╬═★╬╮  ║║║  ║  ╔═╬═╮     我永远追求 
║║  ★    ║  ║  ║  ║║    ║║  ║║║  ║╔║  ║  ║                
║║  ╠═╯╠═╣★╯╮╚╩══╩╯  ★║║  ║  ★═╬═╣ 对爱情         
║║  ║    ╚╯╯╰╝╝╚╬══╬╯  ║║║  ║  ║  ║  ║     我早已放弃 
╚╰╝╚═╯╚╯╝╚╯╝╚╩══╯╯╚╯╯╚═╯╰╚═╩═╯                

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 61.190.81.189]
※ 修改:·joyfree 於 12月04日21:39:45 修改本文·[FROM: 61.190.81.189]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.240毫秒