Xvid是一个
开放源代码的
MPEG-4视频编解码器,它是基于OpenDivX而编写的。Xvid是由一群原OpenDivX义务开发者在OpenDivX于2001年7月停止开发后自行开发的。Xvid支持多种
编码模式,量化(Quantization)方式和范围控,
运动侦测(Motion Search)和曲线平衡分配(Curve)等众多编码技术,对用户来说功能十分强大。Xvid的主要竞争对手是DivX。但Xvid是开放源代码的,而DivX则只有免费(不是自由)的版本和商用版本。
重要性
近五年来,XviD一直是世界上最流行的
视频编码器。估计在BT(
BitTorrent)和
eMule上至少90%的电影、电视剧是用XviD压制的。但是在中国的情况有些特殊,因为中国的影视发布者喜欢用real9.0编码的
RMVB。
扩展名
XviD的
文件扩展名可以是AVI、MKV、MP4等。需要说明的是,仅从扩展名并不能看出这个视频的编码格式。比如说一部电影是.avi格式,但是实际上的
视频编码格式可以是DV Code,也可以是XviD或者其他的;音频编码格式可以是PCM、AC3或者MP3。
MP4和MKV格式比AVI更先进,支持更多的功能,比如
字幕。AVI视频的字幕需要另外的SRT文件。国外绝大多数的影视资源都是
AVI格式。
文件大小
网上的视频资源大都采用固定码率(
CBR),所以文件大小很稳定,并不会因为资源发布者的不同而改变。
1. 一集43分钟的剧集,文件大小为350MB左右。按照每季22集计算,一季美剧需要7.5 GB的硬盘空间。
2. 一集22分钟的剧集,文件大小为175MB左右。
3. 电影文件的大小由电影的长度决定。
影视资源
国外电视剧制作组发布的欧美电视剧,其文件名的具体含义
剧名.S季数E集数.集名(有的没有标).信号采集源.音频编码(默认的MP3可以不标).
视频编码-制作组
例如:
Prison.Break.S02E01.Manhunt.HR.HDTV.AC3.5.1.XviD-DiMENSION
S季数 - S02
E集数 - E01
集名 - Manhunt
信号采集源 - HDTV
音频编码 - AC3.5.1
制作组 - DiMENSION
诞生历程
在1998年以前,PC 上唯一能用的 MPEG-4 编码器是由微软所开发的,包括 MS MPEG4 V1、MS MPEG4 V2、MS MPEG4 V3 的系列编码核心。其中前面两种都可以用来制作 AVI 文件,至今都作为 Windows 的默认组件。不过 V1 和 V2 的编码质量都还不太好,直到 MS MPEG4 V3 开始,画面质量有了显著的进步。不过微软却决定将这个 MS MPEG4 V3 的
视频编码核心封闭在 Windows Media
流媒体技术——也就是我们熟知的 ASF 格式之中,不再能用于 AVI 格式。ASF 格式当然有一些好处,但是过于封闭甚至不能被编辑,惹恼了天不怕地不怕的电影骇客。很快便有小组修改了微软的 MS MPEG4 V3,解除了不能用于 AVI 格式的限制,并开放了其中一些压缩参数,由此,也就诞生了我们今天所熟悉的 MPEG4 编码器 DivX;-)3.11。
DivX广泛流行,成为 DVDRip 的标准,问题是,它的基础技术是非法盗用微软的,只能在地下里流传却上不了台面,无法进行更广泛的产品化,更无法生产硬件播放机。在这种情况下,一些精通
视频编码的工程师 (包括原 DivX 3.11 的开发者) 成立了一家名为 DivX Networks Inc. 的公司,简称 DXN。DXN 发起一个开放原始码项目 Project Mayo,目标是开发一套全新的、开放原始码的 MPEG4 编码软件。特别是完全符合 ISO MPEG4 标准的 Open DivX CODEC 吸引了许多软件高手参与,并很快开发出Open DivX 编码器和
译码器原型,之后又开发出更高性能的编码器 Encore 2 等等。这一时期,主要编码工作是 DXN 的人在做,而许多技术难关的解决得力于来自
开放源代码社会的帮助。
就在一切都看]起来进展顺利的时候,好戏上演了。Project Mayo 当然是
开放源代码,但不是依据 GPL (通用公共许可证,一种开放源代码项目中常用的保障自由使用和自由修改软件权利的协议)而是LGPL协议(LGPL协议:次级GPL(Lesser GPL),与GPL一样,是一种公共许可证。与GPL的最大不同是它允许私有。)。DXN 在设计授权协议时留了一手,2001 年 7 月,就在 Encore 2 基本成型,差不多可以产品化的时候,DXN 另搞了一个 DIVX 网站,封闭了原始代码,发布了他们自己的 DivX 4。DivX 4 的基础就是 Open DivX中的 Encore 2,但利用了 DivX 的牌号,出乎意料的摆了所有人预料。由于DXN 不再参与,Project Mayo 陷于停顿,Encore 2 的原始代码也被 DXN 从服务器上撤下。经过激烈的争论,DXN 当然承认 Encore 2 在法律上是开放的,但仍然拒绝把它放回服务器。开源社区就这样被狠狠地涮了一回。
Open DivX 尚不能实际使用,而 DivX 4 (以及后续的收费版本DivX 5) 等成了私有财产,许多人为打破微软垄断而无偿付出的智能和劳动仅仅是帮助了 DXN 公司发财。这种结果当然是不能被接受的,因此,整个 0dayz 组织永远的拒绝了 DXN 公司的 DivX4/5,而原 Open DivX 开发组中的幸存者,逐渐重新聚拢开发力量,在最后一个 Open DivX 版本的基础上,发展出了 XviD。
劫后余生的 XviD 又度过了近 1 年时间,它继承并发展了 Open DivX Encore 2,性能得到极大提高,被认为世界上速度最快的 MPEG4 CODEC。XviD重写了所有代码,并吸取前车之鉴依照 GPL 发布 (注意不再是 LGPL,所以谁要是想用它做成产品而不
开放源代码是非法的)。不过,因为 MPEG4 还存在专利权的问题,所以 XviD 只能仿照 LAME 的做法,仅仅作为对如何实现 ISO MPEG-4 标准的一种研究交流,网站上只提供原始码,如果要使用就要自己编译原始码或者到第三方网站下载编译好的可运行版本。
想当初Gaj 之流的几个家伙搞 Open DivX 的时候,一开始是很像一个像模像样的开放原始码项目,很多人都被吸引过去一起开发,测试。直到后来,那几个家伙一夜之间露出骗子的本来面目了,把 Open DivX 的成果一股脑带走,变成了封闭源代码的 DivX4,而后进一步变成收费的 DivX 5 了。本来很好的 Open DivX 被逼流产,不过也就促成了今天 XviD 的诞生、发展和壮大。 XviD 更可以说超越了 DivX 5,以更好的质量,更强的功能挑战着新一代的 MPEG4 应用战场。
历史发展
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 跟 XviD 采用不定时设立关键画面来改善原先固定时间关键画面所造成的动态画面画质不佳的情形,而 2 PASS 的压缩模式使画质更加滑顺,基本上两种编码的效果差别不大,不过就同画质的文件大小来说 XviD 更省容量,一部1.5小时的电影,DivX 编码的大多为两片 CD,而 XviD 编码的大多仅需一片 CD 容量即可!
DivX 的版本从 2,3,4 一直跳到 5,本来是非盈利提供网友使用,后来自 DivX 后开始当成商业软件,其中有一部份就离开再行开发出非盈利的译码程序,那就是XViD。(大概这也就是为何要把 DivX 倒过来写的原因!)
不仅 XviD 的出现本身就是
开放源代码社会中典型的一部教科书,它在技术上的各种新特性也都是货真价实、童叟无欺的。对于一个第二代的 MPEG4
视频编码核心来说,XviD 的各种算法设计都有代表性的先进意义。
多种编码模式
除了最原始单重估定码流压缩 (1-pass CBR) 之外,XviD 提供了包括 : 单重质量模式动态码流压缩、单重量化 (Quantization) 模式动态码流压缩、和包括外部控制和内部控制的两种双重 (2-pass) 动态码流压缩模式。XviD 显然是 PC 上的MPEG4 编码核心中,可选模式最多的
视频编码。
其中特别是双重 (2-pass) 动态码流压缩模式,通过检测画面
运动幅度以最优化的方式曲线分配画面量化幅度,使充满活性元素的视频影片可以在占用空间和画面质量之间获得最佳的平衡。而单重量化Quantization) 模式动态码流压缩,可以高速地一次性生成可控画面细节的动态码流视频档案,在较少的压缩时间代价之下,可以获得较稳定的画面细节质量,这都是单纯的 DivX 3.11 所不具有的优秀功能。
量化 方式和范围控制
量化 (Quantization),简单的说就是在编码时通过对时间或空间上相邻的画面单元进行同化、模糊细节的程度,是对画面质量最基本的控制因素。XviD 不仅提供了标准的 MPEG 量化方式,还特地提供了更适合低码流压缩的 .h263 量化方式。并且XviD 还可以在双重 (2-pass) 运算时,根据对画面信息的综合分析,动态的决定某段场景的画面量化方式,真可以说是为网络媒体档案传播中,空间与画质的平衡而考虑,设计贴心得到家了。
除了量化方式选择,XviD 还提供了强大的对压缩过程中的量化幅度的范围控制。用户可以选定压缩时允许使用的量化幅度范围。例如设定一个量化的上限,就可以避免可能出线的画质大幅下降的情况。
运动侦测和曲线平衡
对画面逐帧进行运动侦测,以及对全片段的运动侦测结果进行分析后,重新以曲线平衡分配每一帧的量化幅度,以做到 : 需要高码流的运动画面可以分配更多空间、更高的码流、更低的量化幅度来保持画面的细节; 而对于不包含太多运动信息的静态画面,则消减分配预算。这种把好钢用在刀刃上的做法,是 XviD 做为第二代MPEG4 编码的核心内容。
XviD提供了多极
运动侦测精度,包括半像素插值 (half pixel interpolation) 的技术以 16x16 像素的微区块为单元标示上运动向量; 以及 4 分运动向量 (inter4v motion vectors) 的方式,以 8x8 的像素区块为单元更细致的纪录运动向量以供二重分析。
动态关键帧距
动态关键帧距是另一个 XviD 所具有的,在空间和画面之间获得最大平衡的技术。我们知道在视频压缩中不是每一帧都记录着全部的画面信息,事实上只有关键帧记录着完整的画面信息,而后续的 P 帧 (P-Frame) 仅仅是纪录下与之前一帧的差值。如果关键帧之间的画面变化很大,则会浪费宝贵的空间在 P-Frame 上; 而加入把变化很大的那一帧记录在关键帧里,那么由于后续的帧不再有更大的变化,就可以节省P 帧所需的空间。因此,根据画面镜头切换和
运动幅度来变换关键帧的位置,对于视频压缩下的画面质量提高,就有着事半功倍的效果。
心理视觉亮度修正
除了基本的 MPEG4 编码外,XviD 还提供了不少附加功能。其中典型的就是心理视觉亮度修正。这个功能可能通过去除肉眼不能分辨的亮度信号和亮度差异,来提高压缩效率。遗憾的尽管这个设计非常的有创意,但是实际应用中却会导致肉眼可见的画面质量下降,还期待在日后的版本中可以有所改进。
演职员表选项
外部自定义控制
除了 XivD 自己的内部曲线分配控制方式外,XviD 也提供了外部的开放接口。允许使用者略过 XviD 本身的编码分析核心,利用第三方提供的外部分析工具,例如Gordian Knot,生成的分配好的控制档案,再交还 XviD 做最终的二重运算压缩。这种方式扩展了 XviD 的可用性和用户控制程度,因为像 Gordian Knot 这种软件甚至可以做到由用户控制每一帧的量化幅度和码流分配额度,可以为高级应用提供更多的可能性。
运动向量加速编码
XviD 还有专为提高编码效率而开发的设计,就是纪录下画面的运动向量信息至一个 Log 档案中。再在二重运算压缩时通过直接读取该档案中的信息,节省下对运动向量信息的重复运算,大幅提高编码速度。
画面优化译码
正在开发的 B 帧
另一个 XviD 中引人注目的技术发展,就是 B 帧。我们知道 I 帧就是关键帧,P 帧在关键帧之间,只储存与之前一幅已解压画面的差值。B 帧与 P 帧的原理一样,但除了三者之前解压了的画面外,亦会参考后面一帧中的画面信息。因此 B 帧解压出来的画面比P帧就要来的好。
之前的 MPEG4 编码核心都仅仅使用了 I 帧和 P 帧存储画面。如果能在此基础上使用 B 帧技术,自然可以在画质和压缩比上更上一层楼。 XviD 已经为开发人员提供了测试性质 B 帧体验版的 XviD 编码核心,相信不久的将来,XviD 就可以把 MPEG4 编码的优势发挥到极致,成为网上视频记录格式的盟主。
关于DivX起源的小知识
这种名为DivX 的技术,由一个27岁的法籍影音发烧友罗达(Rota)及电脑黑客基尔(Gej)创造出来得。
原来DivX所采的技术并非这两位仁兄发明的,他们只不过是个盗版天才。随着Windows的大行其道,微软开发了MPEG-4技术,能够将视频影像文件容量压缩到很小。罗达与基尔将程式重写一遍,但将其改名为DivX,且放在网上随意任人下载。
微软声称将对所有推动DivX发展的人、企业作出追究。可是罗达正全面申请将他们的DivX合法化。由于DivX虽然是从Windows的发明出来的,但却没有用过任何微软的技术。而且,他更与美国一些技术人士及财经人员开会,和组新公司 ProjectMayo全力推广DivX。
其实,DivX是视频DVD的另一种保存方式,要靠DeCSS程序(注)才能做到。因为DVD本身有防复制的标记,让DVD不能随便复制到电脑里,但DeCSS能将它解码,令其可以复制,压缩成DivX电影。针对这一做法,各大电影商立即采取行动,防止DeCSS外流及散播,但为时已晚,DeCSS在Yahoo!、Google上都能找到。
播放方式
对于大多数用户来说,只要安装
暴风影音或者K-Lite Codec Pack就可以顺利地播放XviD视频了。其实这些播放软件大都是用
ffdshow来解码的,所以在播放视频的时候,Windows任务栏会出现ffdshow的图标。