XviD是最新的MPEG-4 codec,而且是第一個(gè)真正開(kāi)放源代碼的,一旦完成就會(huì )通過(guò)GPL協(xié)議發(fā)布。在最近的codec比較中,我發(fā)現XviD的表現令人驚奇的好,盡管在alpha版本中不盡人意。若作為一個(gè)beta版的測試者不會(huì )嚇到你的話(huà),XviD也許正是你所需要的。
DivX 跟 XviD 采用不定時(shí)設立關(guān)鍵畫(huà)面來(lái)改善原先固定時(shí)間關(guān)鍵畫(huà)面所造成的動(dòng)態(tài)畫(huà)面畫(huà)質(zhì)不佳的情形, 而 2 PASS 的壓縮模式使畫(huà)質(zhì)更加滑順, 基本上兩種編碼的效果差別不大, 不過(guò)就同畫(huà)質(zhì)的檔案大小來(lái)說(shuō) XviD 更省容量, 這也就是網(wǎng)絡(luò )上流傳的影片, DivX 編碼的大多為兩片 CD, 而 XviD 編碼的大多僅需一片 CD 容量即可!
DivX 的版本從 2,3,4 一直跳到 5, 本來(lái)是非營(yíng)利提供網(wǎng)友使用, 后來(lái)自 DivX 后開(kāi)始當成商業(yè)軟件, 其中有一部份就離開(kāi)再行開(kāi)發(fā)出非營(yíng)利的譯碼程序, 那就是XViD。(大概這也就是為何要把 DivX 倒過(guò)來(lái)寫(xiě)的原因!)
幾經(jīng)波折的誕生記
4 年以前, 在 PC 上能用的唯一 MPEG-4 編碼器就是由微軟所開(kāi)發(fā)的, 包括 MS MPEG4 V1、MS MPEG4 V2、MS MPEG4 V3 的系列編碼核心。其中前面兩種都可以用來(lái)制作 AVI 檔案, 至今都作為 Windows 的默認組件。不過(guò) V1 和 V2 的編碼質(zhì)量都還不太好, 直到 MS MPEG4 V3 開(kāi)始, 畫(huà)面質(zhì)量有了顯著(zhù)的進(jìn)步。不過(guò)微軟卻決定僅將這個(gè) MS MPEG4 V3 的視頻編碼核心封閉在 Windows Media 流媒體技術(shù), 也就是我們熟知的 ASF 檔案之中, 不再能用于 AVI 檔案。ASF 檔案當然有一些好處, 但是過(guò)于封閉甚至不能被編輯, 惹惱了天不怕地不怕的電影駭客。很快便有小組修改了微軟的 MS MPEG4 V3, 解除了不能用于 AVI 檔案的限制, 并開(kāi)放了其中一些壓縮參數,由此, 也就誕生了我們今天所熟悉的 MPEG4 編碼器 DivX 3.11。
DivX廣泛流行, 成為 DVDRip 的標準, 問(wèn)題是, 它的基礎技術(shù)是非法盜用微軟的,只能在地下里流傳卻上不了臺面, 無(wú)法進(jìn)行更廣泛的產(chǎn)品化, 更無(wú)法生產(chǎn)硬件播放機。在這種情況下, 一些精通視頻編碼的工程師 (包括原 DivX 3.11 的開(kāi)發(fā)者) 成立了一家名為 DivX Networks Inc. 的公司, 簡(jiǎn)稱(chēng) DXN。DXN 發(fā)起一個(gè)開(kāi)放原始碼項目 Project Mayo, 目標是開(kāi)發(fā)一套全新的、開(kāi)放原始碼的 MPEG4 編碼軟件。特別是完全符合 ISO MPEG4 標準的 Open DivX CODEC 吸引了許多軟件高手參與, 并很快開(kāi)發(fā)出Open DivX 編碼器和譯碼器原型, 之后又開(kāi)發(fā)出更高性能的編碼器 Encore 2 等等。這一時(shí)期, 主要編碼工作是 DXN 的人在做, 而許多技術(shù)難關(guān)的解決得力于來(lái)自開(kāi)放原始碼社會(huì )的幫助。
就在一切都看起來(lái)進(jìn)展順利的時(shí)候, 好戲上演了。Project Mayo 當然是開(kāi)放原始碼, 但不是依據 GPL (通用公共許可證, 一種開(kāi)放原始碼項目中常用的保障自由使用和修改的軟件或原始碼的協(xié)議) 。DXN 在設計授權協(xié)議時(shí)留了一手, 2001 年 7 月, 就在 Encore 2 基本成型, 差不多可以產(chǎn)品化的時(shí)候, DXN 另搞了一個(gè) DIVX.COM 網(wǎng)站, 封閉了原始碼, 發(fā)布了他們自己的 DivX 4。DivX 4 的基礎就是 Open DivX中的 Encore 2, 但利用了 DivX 的牌號, 可以說(shuō)出乎意料的擺了所有人一道。由于DXN 不再參與, Project Mayo 陷于停頓, Encore 2 的原始碼也被 DXN 從服務(wù)器上撤下。經(jīng)過(guò)激烈的爭論, DXN 當然承認 Encore 2 在法律上是開(kāi)放的, 但仍然拒絕把它放回服務(wù)器。開(kāi)放原始碼社會(huì )就這樣被狠狠地涮了一回。
Open DivX 尚不能實(shí)際使用, 而 DivX 4 (以及后續的收費版本 - DivX 5) 等等都成了私有財產(chǎn), 許多人為打破微軟壟斷而無(wú)償付出的智能和勞動(dòng)僅僅是幫助了 DXN發(fā)財, 這種結果當然是不能被接受的。為此, 整個(gè) 0dayz 組織永遠的拒絕了 DXN 公司的 DivX4, 而原 Open DivX 開(kāi)發(fā)組中的幸存者, 逐漸重新聚攏開(kāi)發(fā)力量, 在最后一個(gè) Open DivX 版本的基礎上, 發(fā)展出了 XviD。
劫后余生的 XviD 到線(xiàn)在又度過(guò)了近 1 年時(shí)間, 它繼承并發(fā)展了 Open DivX Encore 2, 性能得到極大提高, 被認為目前世界上速度最快的 MPEG4 CODEC。XviD重寫(xiě)了所有代碼, 并吸取前車(chē)之鑒依照 GPL 發(fā)布 (注意不再是 LGPL, 所以誰(shuí)要是想用它做成產(chǎn)品而不開(kāi)放原始碼是非法的) 。不過(guò), 因為 MPEG4 還存在專(zhuān)利權的問(wèn)題, 所以 XviD 只能仿照 LAME 的做法, 僅僅作為對如何實(shí)現 ISO MPEG-4 標準的一種研究交流, 網(wǎng)站上只提供原始碼, 如果要使用就要自己編譯原始碼或者到第三方網(wǎng)站下載編譯好的可運行版本。
想當初 Gaj 之流的幾個(gè)家伙搞 Open DivX 的時(shí)候, 一開(kāi)始是很像一個(gè)像模象樣的開(kāi)放原始碼項目, 很多人都被吸引過(guò)去一起開(kāi)發(fā), 測試。直到后來(lái), 那幾個(gè)家伙一夜之間露出騙子的本來(lái)面目了, 把 Open DivX 的成果一股腦帶走, 變成了封閉原始碼的 DivX4, 而后進(jìn)一步變成現在的收費的 DivX 5 了。本來(lái)很好的 Open DivX 被逼流產(chǎn), 不過(guò)也就促成了今天 XviD 的誕生、發(fā)展和壯大?,F在的 XviD 更可以說(shuō)超越了 DivX 5, 以更好的質(zhì)量, 更強的功能挑戰著(zhù)新一代的 MPEG4 應用戰場(chǎng)。
豐富多彩的技術(shù)特性
不僅 XviD 的出線(xiàn)本身就是開(kāi)放原始碼社會(huì )中典型的一部教科書(shū), 它在技術(shù)上的各種新特性也都是貨真價(jià)實(shí)、童叟無(wú)欺的。對于一個(gè)第二代的 MPEG4 視頻編碼核心來(lái)說(shuō), XviD 的各種算法設計都有代表性的先進(jìn)意義。
多種編碼模式:
除了最原始單重估定碼流壓縮 (1-pass CBR) 之外, XviD 提供了包括 : 單重質(zhì)量模式動(dòng)態(tài)碼流壓縮、單重量化 (Quantization) 模式動(dòng)態(tài)碼流壓縮、和包括外部控制和內部控制的兩種雙重 (2-pass) 動(dòng)態(tài)碼流壓縮模式。XviD 顯然是目前 PC 上的MPEG4 編碼核心中, 可選模式最多的視頻編碼。
其中特別是雙重 (2-pass) 動(dòng)態(tài)碼流壓縮模式, 通過(guò)檢測畫(huà)面運動(dòng)幅度以最優(yōu)化的方式曲線(xiàn)分配畫(huà)面量化幅度, 使充滿(mǎn)活性元素的視頻影片可以在占用空間和畫(huà)面質(zhì)量之間獲得最佳的平衡。而單重量化Quantization) 模式動(dòng)態(tài)碼流壓縮, 可以高速地一次性生成可控畫(huà)面細節的動(dòng)態(tài)碼流視頻檔案, 在較少的壓縮時(shí)間代價(jià)之下, 可以獲得較穩定的畫(huà)面細節質(zhì)量, 這都是單純的 DivX 3.11 所不具有的優(yōu)秀功能。
量化 (Quantization) 方式和范圍控制
量化 (Quantization) , 簡(jiǎn)單的說(shuō)就是在編碼時(shí)通過(guò)對時(shí)間或空間上相鄰的畫(huà)面單元進(jìn)行同化、模糊細節的程度, 是對畫(huà)面質(zhì)量最基本的控制因素。XviD 不僅提供了標準的 MPEG 量化方式, 還特地提供了更適合低碼流壓縮的 .h263 量化方式。并且XviD 還可以在雙重 (2-pass) 運算時(shí), 根據對畫(huà)面信息的綜合分析, 動(dòng)態(tài)的決定某段場(chǎng)景的畫(huà)面量化方式, 真可以說(shuō)是為網(wǎng)絡(luò )媒體檔案傳播中, 空間與畫(huà)質(zhì)的平衡而考慮, 設計貼心得到家了。
除了量化方式選擇, XviD 還提供了強大的對壓縮過(guò)程中的量化幅度的范圍控制。用戶(hù)可以選定壓縮時(shí)允許使用的量化幅度范圍。例如設定一個(gè)量化的上限, 就可以避免可能出線(xiàn)的畫(huà)質(zhì)大幅下降的情況。
運動(dòng)偵測 (Motion Search) 和曲線(xiàn)平衡分配 (Curve)
對畫(huà)面逐幀進(jìn)行運動(dòng)偵測, 以及對全片段的運動(dòng)偵測結果進(jìn)行分析后, 重新以曲線(xiàn)平衡分配每一幀的量化幅度, 以做到 : 需要高碼流的運動(dòng)畫(huà)面可以分配更多空間、更高的碼流、更低的量化幅度來(lái)保持畫(huà)面的細節; 而對于不包含太多運動(dòng)信息的靜態(tài)畫(huà)面, 則消減分配預算。這種把好鋼用在刀刃上的做法, 是 XviD 做為第二代MPEG4 編碼的核心內容。
XviD提供了多極運動(dòng)偵測精度, 包括半像素插值 (half pixel interpolation) 的技術(shù)以 16x16 像素的微區塊為單元標示上運動(dòng)向量; 以及 4 分運動(dòng)向量 (inter4v motion vectors) 的方式, 以 8x8 的像素區塊為單元更細致的紀錄運動(dòng)向量以供二重分析。
動(dòng)態(tài)關(guān)鍵幀距 (I-frame interval)
動(dòng)態(tài)關(guān)鍵幀距是另一個(gè) XviD 所具有的, 在空間和畫(huà)面之間獲得最大平衡的技術(shù)。我們知道在視頻壓縮中不是每一幀都記錄著(zhù)全部的畫(huà)面信息, 事實(shí)上只有關(guān)鍵幀記錄著(zhù)完整的畫(huà)面信息, 而后續的 P 幀 (P-Frame) 僅僅是紀錄下與之前一幀的差值。如果關(guān)鍵幀之間的畫(huà)面變化很大, 則會(huì )浪費寶貴的空間在 P-Frame 上; 而加入把變化很大的那一幀記錄在關(guān)鍵幀里, 那幺由于后續的幀不再有更大的變化, 就可以節省P 幀所需的空間。因此, 根據畫(huà)面鏡頭切換和運動(dòng)幅度來(lái)變換關(guān)鍵幀的位置, 對于視頻壓縮下的畫(huà)面質(zhì)量提高, 就有著(zhù)事半功倍的效果。
心理視覺(jué)亮度修正
除了基本的 MPEG4 編碼外, XviD 還提供了不少附加功能。其中典型的就是心理視覺(jué)亮度修正。這個(gè)功能可能通過(guò)去除肉眼不能分辨的亮度信號和亮度差異, 來(lái)提高壓縮效率。遺憾的盡管這個(gè)設計非常的有創(chuàng )意, 但是目前的實(shí)際應用中卻會(huì )導致肉眼可見(jiàn)的畫(huà)面質(zhì)量下降, 還期待在日后的版本中可以有所改進(jìn)。
演職員表選項
另外一個(gè)貼心的設計是電影專(zhuān)用的"演職員表選項"。這個(gè)功能可以在用戶(hù)指定的某些不必要保留細節的段落處 (例如電影的演職員表) , 設定下極低的碼流。甚至壓縮到正片碼流的10%以下, 可以節省不少空間, 設計的也非常的貼心。
外部自定義控制
除了 XivD 自己的內部曲線(xiàn)分配控制方式外, XviD 也提供了外部的開(kāi)放接口。允許使用者略過(guò) XviD 本身的編碼分析核心, 利用第三方提供的外部分析工具, 例如Gordian Knot, 生成的分配好的控制檔案, 再交還 XviD 做最終的二重運算壓縮。這種方式擴展了 XviD 的可用性和用戶(hù)控制程度, 因為像 Gordian Knot 這種軟件甚至可以做到由用戶(hù)控制每一幀的量化幅度和碼流分配額度, 可以為高級應用提供更多的可能性。
運動(dòng)向量加速 (Hinted Me) 編碼
XviD 還有專(zhuān)為提高編碼效率而開(kāi)發(fā)的設計, 就是紀錄下畫(huà)面的運動(dòng)向量信息至一個(gè) Log 檔案中。再在二重運算壓縮時(shí)通過(guò)直接讀取該檔案中的信息, 節省下對運動(dòng)向量信息的重復運算, 大幅提高編碼速度。
畫(huà)面優(yōu)化譯碼
不僅在編碼上 XivD 擁有強大的功能, 在譯碼時(shí)的畫(huà)面優(yōu)化方面, XviD 也有很多新的建樹(shù)。例如 "Horizontal deblock (Y)" 可以柔化水平方向的亮度馬賽克; "Horizontal deblock (C)" 可以柔化水平相的色度馬賽克; "Deringing(Y)" 可以柔化環(huán)狀亮度色斑; "Deinging (C)" 可以柔化環(huán)狀色度色斑; "mosquito" 可以減少畫(huà)面中的蚊狀噪斑。并且, 這些 XviD 的畫(huà)面優(yōu)化手段都是可選的, 因此只要關(guān)閉
幾個(gè)不是那幺必要的選項, 就可以在低配置的PC機上播放。
正在開(kāi)發(fā)的 B 影格
另一個(gè) XviD 中引人注目的技術(shù)發(fā)展, 就是 B 影格。我們知道 I 影格就是關(guān)鍵影格, P 影格在關(guān)鍵影格之間, 只儲存與之前一幅已解壓畫(huà)面的差值。B 影格與 P 影格的原理一樣, 但除了三者之前解壓了的畫(huà)面外, 亦會(huì )參考后面一影格中的畫(huà)面信息。因此 B 影格解壓出來(lái)的畫(huà)面比P影格就要來(lái)的好。
之前的 MPEG4 編碼核心都僅僅使用了 I 影格和 P 影格存儲畫(huà)面。如果能在此基礎上使用 B 影格技術(shù), 自然可以在畫(huà)質(zhì)和壓縮比上更上一層樓。目前 XviD 已經(jīng)為開(kāi)發(fā)人員提供了測試性質(zhì) B 影格體驗版的 XviD 編碼核心, 相信不久的將來(lái), XviD 就可以把 MPEG4 編碼的優(yōu)勢發(fā)揮到極致, 成為網(wǎng)上視頻記錄格式的盟主。
聯(lián)系客服