xvid 详解 代码分析 编译等
1.?? Xvid參數(shù)詳解
眾所周知,Mencoder以其極高的壓縮速率和不錯的畫質(zhì)贏得了很多朋友的認(rèn)同!
原來用Mencoder壓縮Xvid的AVI都是使用Xvid編碼器的默認(rèn)設(shè)置,現(xiàn)在我來給大家沖沖電,講解一下怎樣使用Mencoder命令行高級參數(shù)制作Xvid編碼格式AVI影片。經(jīng)過測試,可以毫不夸張的說:在減小50%的文件體積同時能夠保持原有畫質(zhì)!
大家平時用WisMencoder壓縮電影的時候也許會感覺到雖然它速度飛快,但是關(guān)于Xvid編碼器的設(shè)置卻少得可憐!并沒有完全發(fā)揮出Xvid編碼的優(yōu)勢!
首先介紹一下這些高級參數(shù)的作用:
cartoon——卡通模式
vhq=4——VHQ MODE,有0-4五個值,越大畫質(zhì)越好,但是編碼速度越慢
chroma_me——動態(tài)檢索
max_key_interval——最大關(guān)鍵幀距離
Quant_type=mpeg——量化矩陣,Mpeg模式,如果壓縮時去掉這段就默認(rèn)量化矩陣為H.263
trellis——高質(zhì)量量化模式
GMC——全域動態(tài)補(bǔ)償
qpel——四分之一像素精確動態(tài)補(bǔ)償(如果使用了該功能則可能降低解碼速率,建議不用)
bvhq=1——在B幀上啟用VHQ
lumi_mask——加大畫面明暗部分壓縮率(一般不用,有時會導(dǎo)致畫面失真)
greyscale——使用灰度,但是便出來的畫面是黑白的(一般不使用)
interlacing——隔行處理,適用于交錯片源(一般不使用)
chroma_opt——色度優(yōu)化
Quantization量化選項(關(guān)鍵的關(guān)鍵就在這里!)
量化器級別(quantizer level)即Q值越高畫面細(xì)節(jié)越豐富,但是在低碼率下越高的量化器級別,會帶來越低的畫面質(zhì)量,Q 值越小,質(zhì)量越好,碼率越大;Q 值越大,質(zhì)量越差,碼率越小。(實際上,它的原始概念更復(fù)雜,我們干脆簡單地認(rèn)為1就是100%原質(zhì)量,31就是1/31的原質(zhì)量好了)。P-frame(即未來單項預(yù)測幀)建議設(shè)置在1--15之間,(它的作用是只儲存與之前一個已解壓畫面的差值。即僅僅描述它與前一幀的區(qū)別)。I -frame(即關(guān)鍵幀)的Q值只用能作用于2pass-second壓制上,在VirtualDub被標(biāo)示為 [K],關(guān)鍵幀是構(gòu)成一個幀組(GOP, Group of Picture)的第一個幀。I-Frame 保留了一個場景的所有信息(Keyframe原意是指可以單獨解碼、用于同步的 frame,不過在MPEG系統(tǒng)中只有I-frame有這個特性,因為BF和PF都是預(yù)測幀,要靠I-Frame來還原)。B-frame(即雙向預(yù)測幀)除了參考之前解壓過了的畫面外,亦會參考后面一幀中的畫面信息。這三個設(shè)置的范圍都是1-31,應(yīng)該注意的是在場景昏暗的條件下不要讓B-frame 過低。
min_iquant=1——IF的量化最低值(取值范圍在1-31之間)
max_iquant=10——IF的量化最高值(取值范圍在1-31之間)
min_pquant=1——PF的量化最低值(取值范圍在1-31之間)
max_pquant=10——PF的量化最高值(取值范圍在1-31之間)
min_bquant=1——BF的量化最低值(取值范圍在1-31之間)
max_bquant=30——BF的量化最低值(取值范圍在1-31之間)
-sws 9 取值范圍在(0-9)之間,不同值代表不同的Resize算法!建議用 -sws 9
0?????????????????? 快速二次線性(默認(rèn))(速度較快)
1?????????????????? 二次線性
2?????????????????? 二次立方(質(zhì)量很好)
3?????????????????? 實驗中
4?????????????????? 最短距離 (bad quality)
5?????????????????? 區(qū)域
6?????????????????? 亮度二次立方 度二次線性
7?????????????????? 高斯
8?????????????????? sincR
9?????????????????? lanczos(速度較快,而且畫面銳利)
10?????????????????? 雙三次樣條曲線
實際應(yīng)用舉例:
把
vhq=4:cartoon:chroma_me:min_iquant=1:chroma_opt:min_iquant=1:max_iquant=12:min_pquant=1:max_pquant=12:bvhq=1:min_bquant=1
添加到WisMencoder的手動參數(shù)中的視頻編碼處,如本樓底部圖片:
然后再把 -sws 9 參數(shù)添加到視頻濾鏡處即可!記得-sws 9前一定加個空格,要不編碼器不會啟動!
當(dāng)然你也可以自己摸索適合的方案,做出效果更佳的方案!
Xvid大概介紹:(個人認(rèn)為XVID編碼比DIVX編碼的畫質(zhì)更好,故只講XVID的參數(shù)。了解以下內(nèi)容對轉(zhuǎn)換影片有一定幫助,尤其是要放在硬盤上用PC觀看的視頻,當(dāng)然對轉(zhuǎn)換成手機(jī)觀看的影片也是有好處的,使你不至于盲目的轉(zhuǎn)換)
???????????????????????????? (此文是參照電腦雜志上的介紹而寫,在此感謝寫出那篇文章的作者。所涉及到的圖片是自己抓的,文字也是一個一個字打出來的,并非從網(wǎng)上轉(zhuǎn)抄,我無非是想讓有興趣于此道的朋友更多的了解xvid這個編碼器)
如果在網(wǎng)頁上看不太清楚的圖片,請下載到個人電腦上查看
xvid有兩種編碼方式:single pass和twopass
single pass模式編碼簡單,速度也快,但最終效果不如twopass。
twopass就是視頻壓制需要經(jīng)過兩次編碼,分別為twopass-1st pass(簡稱1pass)和twopass-2nd pass(簡稱2pass)
1pass時,編碼器會用最高質(zhì)量編碼采集可供第2次運算參考的畫面信息,而在2 pass時。編碼器會根據(jù)第一次壓縮獲得的信息和用戶指定的文件大小,自動分配比特率,使需要高流量的運動畫面分配到更多的空間,更高的比特率來保證畫面質(zhì)量。相對的,對于那些不包含太多運動信息的靜態(tài)畫面則用較低的比特率。追求畫質(zhì)的朋友當(dāng)然會選擇這種方式,但運算比single pass更費時。
接下來介紹一些基本概念:
Q值——量化值,它被用來描述1幀的質(zhì)量,每幀都有一個Q值,取值范圍在1-31之間。Q值越小,畫質(zhì)越好,比特率越大
I-frame——關(guān)鍵幀,常被縮寫為IF。關(guān)鍵幀是構(gòu)成一個幀組的第一幀。IF保留了一個場景的所有信息
P-frame——未來單項預(yù)測幀,縮寫為PF,只儲存與之前一個已解壓畫面的差值
B-frame——雙向預(yù)測幀,縮寫為BF,除了參考之前解壓的畫面以外,也會參考后一幀的畫面信息
第一步:Profile@Level(框架級別)設(shè)置
選擇Profile@Level旁的more按鈕來進(jìn)行框架設(shè)置。Profile@Level里方案的層級越低,編碼的比特率及分辨率限制的越多。在制作 DVDrip時一般選擇AS@L5或者unrestricted(不限定比特率,讓編碼器自行分配)。我在制作手機(jī)影片時通常選用AS@L5,因為可選擇的方案更多,而且比特率可自己隨意調(diào)節(jié),只要手機(jī)能跑的動就行!!
(注意:在single pass模式下,Profile@Level的設(shè)定無效,由編碼器自行分配比特率)
第二步:Encoding type(編碼類型)設(shè)置?????????? (這里是重中之重)
第1種方式:
single pass,求快可以用這種一次性編碼來壓縮視頻。但因為每幀的壓縮率相同,流量自行分配,所以壓縮后的視頻容量無法控制。 single pass有Target quantizer和Target bitrate兩種模式,在主界面的Encoding type里先選擇 single pass,再點擊左下方的Target XXX按鈕在兩種模式中進(jìn)行切換
名詞解釋:
Target bitrate——目標(biāo)比特率模式。選擇平均比特率編碼,相對容易控制文件大小。
Target quantizer——目標(biāo)Q值模式,采用動態(tài)比特率編碼。設(shè)置為“1”是最高質(zhì)量,31是最低質(zhì)量。設(shè)置為2是容量與效果的最佳比,但文件體積很大,可以設(shè)置小一點的數(shù)值,例如2.5,如果不確定,可以按主界面上的“calc”按鈕計算目標(biāo)容量大小(詳細(xì)的計算方法請看下一節(jié))
如何用calc計算容量:
Target size:目標(biāo)容量的大小,舉例來說,如果我們想將視頻容量控制在1CD以內(nèi),由于1M等于1024KB,所以其值不能高于716800KB。
subtitles:選擇此項能將外掛字幕的大小納入計算
container:按照你想制作的最終視頻格式選擇
video:設(shè)定視頻長度及fps
Audio:設(shè)定音頻格式
第2種方式:
為了保證視頻的質(zhì)量,很多時候我們會選擇twopass模式來壓縮視頻
step 1:
在主窗口的“Encoding type”下拉菜單中選擇1pass模式,再點擊旁邊的more按鈕。在彈出的窗口中勾選 “Discard first pass”(不輸出第一次運算結(jié)果)否則可能生成一個高達(dá)幾GB的無用文件。 “full quality first pass”是指優(yōu)質(zhì)進(jìn)行1pass,通常這是沒必要的,這樣反而會降低1pass的編碼速度
step 2:
再返回到主窗口,在“Encoding type”下拉菜單中選擇2pass模式,點擊旁邊的more按鈕進(jìn)行設(shè)置。
首先點擊“stats filename”這一欄的按鈕,選擇在1pass編碼時生成的*.pass文件。
其余講解請看圖
以上介紹了兩種編碼方式,現(xiàn)在講一下視頻的優(yōu)化:
01.Advanced Options:
Motion search Precision(運動檢索精確度):設(shè)定運動檢測的精密度,數(shù)值越高,文件轉(zhuǎn)換時間越長,建議選用“6-ultra High”
VHQ mode(VHQ模式):根據(jù)人類視覺特性進(jìn)行建模,可以使肉眼可分辨的區(qū)域壓縮的好一點,從而提升肉眼所見部分的視頻質(zhì)量。若想效率與質(zhì)量兼顧,可以將VHQ設(shè)置為1,若想求得最佳畫質(zhì)則可以將VHQ設(shè)置為4
Use VHQ for bframes too:對BF也使用VHQ模式
Use chroma motion:使用chroma(色度)信息來動態(tài)計算,雖然會增加編碼時間,但可以有效地防止色塊和亮塊,建議選擇
Turbo:開啟BF時可以提高編碼速度,但會降低一點畫質(zhì),不建議選取
Frame drop ratio(丟幀率):保持為0,因為我們希望每一幀都被編碼
Maximum I-frame interval:最大IF幀距,一般為幀率的10倍。例如一段視頻的幀率為24,則該處就填寫240,最好是維持為240,這樣可確保每240幀就會有一個IF。如果場景變換偵測出需要插入IF的幀數(shù)小于這個值的話,它就會重新計算
02.Quantization(量化)設(shè)置:
設(shè)定IF/PF/BF最小及最大Q值,從XVID1.1開始,它的流量控制做的很好,在比特率足夠的情形下,不會出現(xiàn)過高的Q值,保持默認(rèn)可防止目標(biāo)容量超出或者小于設(shè)置的情況。但在single pass模式下設(shè)定Q值是無效的
Trellis quantization:在2pass模式下可以提升畫質(zhì),但在single pass模式則會使畫質(zhì)有一些下降,容量也有所減少
03.Debug設(shè)置:
Performance optimizations:性能優(yōu)化,可以選擇特定的cpu指令集優(yōu)化,建議選擇第一項
Fourcc used:默認(rèn)值是xvid,改變此設(shè)定可以讓你使用divx等其他播放filter來播放,但有時會不兼容,建議不修改此項設(shè)置
04.Zone options設(shè)置:
zone其實就是將影片劃分為幾段,分別為這些片斷定制一些設(shè)置(此項設(shè)置用于轉(zhuǎn)換pc上觀看的影片較多,在此不作細(xì)講)
小提示:如果在片頭之類非重要片段使用Quantizer模式,應(yīng)該在1pass中也使用相同的設(shè)置。而若要用Weight模式則只需要在2pass中設(shè)置即可
至此,xvid的參數(shù)設(shè)置已講解完了,有興趣于此道的朋友可以多作嘗試,找出適合你的具體參數(shù)。
我先獻(xiàn)丑了,把自己的參數(shù)設(shè)置提供給大家
手機(jī)機(jī)型:QD
片源:一般都是網(wǎng)上下載的AVI文件
轉(zhuǎn)換軟件:TMPGEnc3XP
視頻編碼器:xvid
編碼參數(shù):幀率:15fps?? ,碼率:128-160kbps(動畫片的碼率有時更小) 編碼方式:single pass(上傳到論壇的視頻都是用的 single pass,主要是為了節(jié)省時間,而且手機(jī)不能支持較高的碼率,故個人感覺在此single pass和twopass差別不大。如果用于 pc上,還是建議用twopass) 其余的設(shè)置均是參照上文
音頻編碼:MPEG Layer-3???????? 32000hz?? ,48kbps?? CBR?? ,Mono
濾鏡:只在加字幕文件的時候用到,一般是制作的SRT字幕,濾鏡是Text Sub2.23
如果有朋友經(jīng)常用DIVX編碼,請發(fā)個帖子作一下詳細(xì)的介紹,大家交流一下經(jīng)驗!!!
2.??
Xvid命令行高級參數(shù)詳解
Xvid編碼高級參數(shù): 壓縮過程中的視頻碼率建議不要超過192Kbps(因為對于加入了手動參數(shù)的Xvid編碼器,畫質(zhì)提升是相當(dāng)明顯的),強(qiáng)烈建議用2-Pass壓縮! 首先介紹一下這些高級參數(shù)的作用: cartoon:卡通模式,非卡通則去掉此參數(shù)vhq=4:VHQ MODE(動態(tài)搜索算法),有0-4五個值,越大畫質(zhì)越好,但是編碼速度越慢
me_quality=6: 動態(tài)搜索精度(6為精度最大值)
chroma_me:動態(tài)檢索 ,色彩動態(tài)評估 max_bframes=0 :B幀最大間距,設(shè)為0表示關(guān)閉B幀功能
profile=XXX :小于等于15fps設(shè)置為sp3,大于15fps設(shè)置為asp3
max_key_interval=XXX :最大I幀(關(guān)鍵幀)間隔,一般設(shè)置成幀數(shù)的10倍
Quant_type=mpeg:量化矩陣,Mpeg模式,如果壓縮時去掉這段就默認(rèn)量化矩陣為H.263
trellis:高質(zhì)量量化模式
GMC:全域動態(tài)補(bǔ)償
qpel:四分之一像素精確動態(tài)補(bǔ)償(如果使用了該功能則可能降低解碼速率,建議不用)
bvhq=1:在B幀上啟用VHQ
lumi_mask:加大畫面明暗部分壓縮率(一般不用,有時會導(dǎo)致畫面失真)
greyscale:使用灰度,但是便出來的畫面是黑白的(一般不使用)
interlacing:隔行處理,適用于交錯片源(一般不使用)
chroma_opt:色度優(yōu)化 ,色彩最佳化
Quantization量化選項(關(guān)鍵的關(guān)鍵就在這里!) 量化器級別(quantizer level)即Q值越高畫面細(xì)節(jié)越豐富,但是在低碼率下越高的量化器級別,會帶來越低的畫面質(zhì)量,Q 值越小,質(zhì)量越好,碼率越大;Q 值越大,質(zhì)量越差,碼率越小。(實際上,它的原始概念更復(fù)雜,我們干脆簡單地認(rèn)為1就是100%原質(zhì)量,31就是1/31的原質(zhì)量好了)。P- frame(即未來單項預(yù)測幀)建議設(shè)置在1--15之間,(它的作用是只儲存與之前一個已解壓畫面的差值。即僅僅描述它與前一幀的區(qū)別)。I- frame(即關(guān)鍵幀)的Q值只用能作用于2pass-second壓制上,在VirtualDub被標(biāo)示為 [K],關(guān)鍵幀是構(gòu)成一個幀組(GOP,Group of Picture)的第一個幀。I-Frame 保留了一個場景的所有信息(Keyframe原意是指可以單獨解碼、用于同步的frame,不過在MPEG系統(tǒng)中只有I-frame有這個特性,因為BF 和PF都是預(yù)測幀,要靠I-Frame來還原)。B-frame(即雙向預(yù)測幀)除了參考之前解壓過了的畫面外,亦會參考后面一幀中的畫面信息。這三個設(shè) 置的范圍都是1-31,應(yīng)該注意的是在場景昏暗的條件下不要讓B-frame過低。
min_iquant=1——IF的量化最低值(取值范圍在1-31之間)
max_iquant=10——IF的量化最高值(取值范圍在1-31之間)
min_pquant=1——PF的量化最低值(取值范圍在1-31之間)
max_pquant=10——PF的量化最高值(取值范圍在1-31之間)
min_bquant=1——BF的量化最低值(取值范圍在1-31之間)
max_bquant=30——BF的量化最低值(取值范圍在1-31之間)
-sws 9 取值范圍在(0-9)之間,不同值代表不同的Resize算法!建議用 -sws 9
0 快速二次線性(默認(rèn))(速度較快)
1 二次線性
2 二次立方(質(zhì)量很好)
3 實驗中
4 最短距離 (bad quality)
5 區(qū)域
6 亮度二次立方 度二次線性
7 高斯
8 sincR
9 lanczos(速度較快,而且畫面銳利)
10 雙三次樣條曲線
實際應(yīng)用舉例: vhq=4:cartoon:chroma_me:chroma_opt:min_iquant=1:max_iquant=12:min_pquant=1:max_pquant=12:bvhq=1:min_bquant=1
添加到WisMencoder的手動參數(shù)中的視頻編碼處,然后再把 -sws 9 參數(shù)添加到視頻濾鏡處即可!記得-sws 9前一定加個空格,要不編碼器不會啟動!當(dāng)然你也可以自己摸索適合的方案,做出效果更佳的方案!
3.?
詳解Xvid編碼格式
XviD簡介 XviD是當(dāng)宿世界上最常用的視頻編碼解碼器(codec),而且是第一個真正開放源代碼的,經(jīng)由過程GPL協(xié)議發(fā)布。在良多次的codec斗勁中,XviD的默示令人詫異的好,總體來說是當(dāng)前最優(yōu)異、最萬能的codec。
編纂本段XviD的主要性 近五年來,XviD一向是世界上最風(fēng)行的視頻編碼器。估量在BT(BitTorrent)和eMule上至少90%的片子、電視劇是用XviD壓制的??墒窃谥袊那樾斡行┨厥?#xff0c;因為中國的影視發(fā)布者喜歡用RMVB名目。
編纂本段文件擴(kuò)展名 XviD的文件擴(kuò)展名可所以AVI、MKV、MP4等。需要聲名的是,僅從擴(kuò)展名并不能看出這個視頻的編碼名目。好比說一部片子是.avi名目,可是實際上的視頻編碼名目可所以DV Code,也可所以XviD或者其他的;音頻編碼名目可所以PCM、AC3或者M(jìn)P3。
MP4和MKV名目比AVI更前進(jìn)前輩,支持更多的功能,好比字幕。AVI視頻的字幕需要另外的SRT文件。當(dāng)前國外絕大大都的影視資源都是AVI名目。
編纂本段XviD文件的大小 網(wǎng)上的視頻資源大都采用固定碼率(CBR),所以文件大小很不變,并不會因為資源發(fā)布者的差異而改變。
1. 一集43分鐘的劇集,文件大小為350MB左右。按照每季22集計較,一季美劇需要7.5 GB的硬盤空間。
2. 一集22分鐘的劇集,文件大小為175MB左右。
3. 片子文件的大小由片子的長度抉擇。
編纂本段XviD影視資源的文件名寄義詮釋 國外電視劇建造組發(fā)布的歐美電視劇,其文件名的具體寄義
劇名.S季數(shù)E集數(shù).集名(有的沒有標(biāo)).旌旗燈號采集源.音頻編碼(默認(rèn)的MP3可以不標(biāo)).視頻編碼-建造組
例如:
Prison.Break.S02E01.Manhunt.HR.HDTV.AC3.5.1.XviD-DiMENSION
劇名 - Prison Break
S季數(shù) - S02
E集數(shù) - E01
集名 - Manhunt
旌旗燈號采集源 - HDTV
音頻編碼 - AC3.5.1
視頻編碼 - XviD
建造組 - DiMENSION
編纂本段XviD技術(shù)的降生過程 在1998年以前,PC 上獨一能用的 MPEG-4 編碼器是由微軟所開發(fā)的,搜羅 MS MPEG4 V1、MS MPEG4 V2、MS MPEG4 V3 的系列編碼焦點。其中前面兩種都可以用來建造 AVI 文件,至今都作為 Windows 的默認(rèn)組件??墒?V1 和 V2 的編碼質(zhì)量都還不太好,直到 MS MPEG4 V3 預(yù)備,畫面質(zhì)量有了光鮮較著的前進(jìn)??墒俏④泤s抉擇將這個 MS MPEG4 V3 的視頻編碼焦點封鎖在 Windows Media 流媒體技術(shù)――也就是我們熟知的 ASF 名目之中,不再能用于 AVI 名目。ASF 名目當(dāng)然有一些益處,可是過于封鎖甚至不能被編纂,惹惱了天不怕地不怕的片子駭客。很快便有小組改削了微軟的 MS MPEG4 V3,解除了不能用于 AVI 名目的限制,并開放了其中一些壓縮參數(shù),由此,也就降生了我們今天所熟悉的 MPEG4 編碼器 DivX;-)3.11。
DivX普遍風(fēng)行,成為 DVDRip 的標(biāo)準(zhǔn),問題是,它的根本技術(shù)是犯警盜用微軟的,只能在地下里傳布卻上不了臺面,無法進(jìn)行更普遍的產(chǎn)物化,更無法出產(chǎn)硬件播放機(jī)。在這種情形下,一些精曉視頻編碼的工程師 (搜羅原 DivX 3.11 的開發(fā)者) 成立了一家名為 DivX Networks Inc. 的企業(yè),簡稱 DXN。DXN 創(chuàng)議一個開放原始碼項目 Project Mayo,方針是開發(fā)一套全新的、開放原始碼的 MPEG4 編碼軟件。出格是完全合適 ISO MPEG4 標(biāo)準(zhǔn)的 Open DivX CODEC 吸引了良多軟件高手介入,并很快開發(fā)出Open DivX 編碼器和譯碼器原型,之后又開發(fā)出更高機(jī)能的編碼器 Encore 2 等等。這一時代,首要編碼工作是 DXN 的人在做,而良多技術(shù)難關(guān)的解決得力于來自開放源代碼社會的輔佐。
就在一切都看]起來進(jìn)展順?biāo)斓臅r辰,好戲上演了。Project Mayo 當(dāng)然是開放源代碼,但不是依據(jù) GPL (通用公共許可證,一種開放源代碼項目中常用的保障自由使用和自由改削軟件權(quán)力的和談)而是LGPL和談(LGPL和談:次級GPL(Lesser GPL),與GPL一樣,是一種公共許可證。與GPL的最大差異是它許可私有。)。DXN 在設(shè)計授權(quán)和談時留了一手,2001 年 7 月,就在 Encore 2 基本成型,差不多可以產(chǎn)物化的時辰,DXN 另搞了一個 DIVX 網(wǎng)站,封鎖了原始代碼,發(fā)布了他們自己的 DivX 4。DivX 4 的根本就是 Open DivX中的 Encore 2,但操作了 DivX 的商標(biāo),出乎意料的擺了所有人預(yù)料。因為DXN 不再介入,Project Mayo 陷于擱淺,Encore 2 的原始代碼也被 DXN 從服務(wù)器上撤下。經(jīng)由激烈的爭論,DXN 當(dāng)然認(rèn)可 Encore 2 在法令上是開放的,但仍然拒絕把它放回服務(wù)器。開源社區(qū)就這樣被狠狠地涮了一回。
Open DivX 尚不能實際使用,而 DivX 4 (以及后續(xù)的收費版本DivX 5) 等成了私有財富,良多酬報打破微軟壟斷而無償支出的智能和勞動僅僅是輔佐了 DXN 企業(yè)發(fā)家。這種功效當(dāng)然是不能被接管的,是以,整個 0dayz 組織永遠(yuǎn)的拒絕了 DXN 企業(yè)的 DivX4/5,而原 Open DivX 開發(fā)組中的幸存者,逐漸從頭聚攏開發(fā)力量,在最后一個 Open DivX 版本的根本上,成長出了 XviD。
浩劫不死的 XviD 到此刻又渡過了近 1 年時刻,它繼承并成長了 Open DivX Encore 2,機(jī)能獲得極大提高,被認(rèn)為當(dāng)宿世界上速度最快的 MPEG4 CODEC。XviD重寫了所有代碼,并吸收前車之鑒遵照 GPL 發(fā)布 (注重不再是 LGPL,所以誰若是想用它做成產(chǎn)物而不開放源代碼是犯警的)??墒?#xff0c;因為 MPEG4 還存在專利權(quán)的問題,所以 XviD 只能模擬 LAME 的做法,僅僅作為對若何實現(xiàn) ISO MPEG-4 標(biāo)準(zhǔn)的一種研究交流,網(wǎng)站上只供給原始碼,若是要使用就要自己編譯原始碼或者到第三方網(wǎng)站下載編譯好的可運行版本。
想當(dāng)初Gaj 之流的幾個家伙搞 Open DivX 的時辰,一預(yù)備是很像一個像模像樣的開放原始碼項目,良多人都被吸引曩昔一路開發(fā),測試。直到后來,那幾個家伙一夜之間露出騙子的原本臉孔了,把 Open DivX 的功效一股腦帶走,釀成了封鎖源代碼的 DivX4,爾后進(jìn)一步釀成此刻的收費的 DivX 5 了。原本很好的 Open DivX 被逼流產(chǎn),可是也就促成了今天 XviD 的降生、成長和壯大。此刻的 XviD 更可以說超越了 DivX 5,以更好的質(zhì)量,更強(qiáng)的功能佻達(dá)戰(zhàn)著新一代的 MPEG4 應(yīng)用沙場。
編纂本段XviD版本的歷史 1.0 2002年2月17日 第一版 ,初度發(fā)布
1.0 2002年2月28日 大量的改進(jìn)和更切確地詮釋
1.1 2002年3月2日 剖析澄清了良多概念
1.2 2002年3月4日 加進(jìn)量化矩陣(quantization matrix),移去量(removed quant). 柔和(smoothing) 技術(shù)
1.3 2002年3月8日 關(guān)于 Nic's XviD Directshow Filter 的詳釋
1.3+ 2002年7月23日 按照Nic's XVID Codec校正填補(bǔ)部分內(nèi)容
編纂本段豐碩多彩的技術(shù)特征 DivX 跟 XviD 采用不按時設(shè)立關(guān)頭畫面來改進(jìn)原先固按時刻關(guān)頭畫面所造成的動態(tài)畫面畫質(zhì)欠安的氣象,而 2 PASS 的壓縮模式使畫質(zhì)加倍滑順,基本上兩種編碼的下場差異不大,可是就同畫質(zhì)的文件大小來說 XviD 更省容量,一部1.5小時的片子,DivX 編碼的大多為兩片 CD,而 XviD 編碼的大多僅需一片 CD 容量即可!
DivX 的版本從 2,3,4 一向跳到 5,原本長短盈利供給網(wǎng)友使用,后來自 DivX 后預(yù)備當(dāng)成商業(yè)軟件,其中有一部份就分開再行開發(fā)出非盈利的譯碼軌范,那就是XViD。(概略這也就是為何要把 DivX 倒過來寫的原因!)
不僅 XviD 的出線自己就是開放源代碼社會中典型的一部教科書,它在技術(shù)上的各類新特征也都是貨真價實、老小無欺的。對于一個第二代的 MPEG4 視頻編碼焦點來說,XviD 的各類算法設(shè)計都有代表性的前進(jìn)前輩意義。 多種編碼模式 除了最原始單重估定碼流壓縮 (1-pass CBR) 之外,XviD 供給了搜羅 : 單重質(zhì)量模式動態(tài)碼流壓縮、單重量化 (Quantization) 模式動態(tài)碼流壓縮、和搜羅外部節(jié)制和內(nèi)部節(jié)制的兩種雙重 (2-pass) 動態(tài)碼流壓縮模式。XviD 顯然是當(dāng)前 PC 上的MPEG4 編碼焦點中,可選模式最多的視頻編碼。
其中出格是雙重 (2-pass) 動態(tài)碼流壓縮模式,經(jīng)由過程檢測畫面行為幅度以最優(yōu)化的體例曲線分配畫面量化幅度,使布滿活性元素的視頻影片可以在占用空間和畫面質(zhì)量之間獲得最佳的平衡。而單重量化Quantization) 模式動態(tài)碼流壓縮,可以高速地一次性生成可控畫面細(xì)節(jié)的動態(tài)碼流視頻檔案,在較少的壓縮時刻價錢之下,可以獲得較不變的畫面細(xì)節(jié)質(zhì)量,這都是純摯的 DivX 3.11 所不具有的優(yōu)異功能。 量化 (Quantization) 體例和規(guī)模節(jié)制 量化 (Quantization),簡單的說就是在編碼時經(jīng)由過程對時刻或空間上相鄰的畫面單元進(jìn)行同化、恍惚細(xì)節(jié)的水平,是對畫面質(zhì)量最基本的節(jié)制身分。XviD 不僅供給了標(biāo)準(zhǔn)的 MPEG 量化體例,還特意供給了更適合低碼流壓縮的 .h263 量化體例。而且XviD 還可以在雙重 (2-pass) 運算時,按照對畫面信息的綜合剖析,動態(tài)的抉擇某段場景的畫面量化體例,真可以說是為收集媒體檔案傳布中,空間與畫質(zhì)的平衡而考慮,設(shè)計貼心得抵家了。
除了量化體例選擇,XviD 還供給了壯大的對壓縮過程中的量化幅度的規(guī)模節(jié)制。用戶可以選定壓縮時許可使用的量化幅度規(guī)模。例如設(shè)定一個量化的上限,就可以避免可能出線的畫質(zhì)大幅下降的情形。 行為偵測和曲線平衡分配 對畫面逐幀進(jìn)行行為偵測,以及對全片段的行為偵測功效進(jìn)行剖析后,從頭以曲線平衡分配每一幀的量化幅度,以做到 : 需要高碼流的行為畫面可以分配更多空間、更高的碼流、更低的量化幅度來連結(jié)畫面的細(xì)節(jié); 而對于不包含太多行為信息的靜態(tài)畫面,則消減分配預(yù)算。這種把好鋼用在刀刃上的做法,是 XviD 做為第二代MPEG4 編碼的焦點內(nèi)容。
XviD供給了多極行為偵測精度,搜羅半像素插值 (half pixel interpolation) 的技術(shù)以 16x16 像素的微區(qū)塊為單元標(biāo)示上行為向量; 以及 4 分行為向量 (inter4v motion vectors) 的體例,以 8x8 的像素區(qū)塊為單元更詳盡的記載行為向量以供二重剖析。 動態(tài)關(guān)頭幀距 動態(tài)關(guān)頭幀距是另一個 XviD 所具有的,在空間和畫面之間獲得最大平衡的技術(shù)。我們知道在視頻壓縮中不是每一幀都記實著全數(shù)的畫面信息,事實上只有關(guān)頭幀記實著完整的畫面信息,爾后續(xù)的 P 幀 (P-Frame) 僅僅是記載下與之前一幀的差值。若是關(guān)頭幀之間的畫面轉(zhuǎn)變很大,則會華侈珍貴的空間在 P-Frame 上; 而加進(jìn)把轉(zhuǎn)變很大的那一幀記其實關(guān)頭幀里,那么因為后續(xù)的幀不再有更大的轉(zhuǎn)變,就可以節(jié)約P 幀所需的空間。是以,按照畫面鏡頭切換和行為幅度來變換關(guān)頭幀的位置,對于視頻壓縮下的畫面質(zhì)量提高,就有著事半功倍的下場。 心理視覺亮度改進(jìn) 除了基本的 MPEG4 編碼外,XviD 還供給了不少附加功能。其中典型的就是心理視覺亮度改進(jìn)。這個功能可能經(jīng)由過程去除肉眼不能分辯的亮度旌旗燈號和亮度差異,來提高壓縮效率。遺憾的盡管這個設(shè)計很是的有創(chuàng)意,可是當(dāng)前的實際應(yīng)用中卻會導(dǎo)致肉眼可見的畫面質(zhì)量下降,還等候在日后的版本中可以有所改良。 演人員表選項 另外一個貼心的設(shè)計是片子專用的"演人員表選項"。這個功能可以在用戶指定的某些不需要保留細(xì)節(jié)的段落處 (例如片子的演人員表),設(shè)定下極低的碼流。甚至壓縮到正片碼流的10%以下,可以節(jié)約不少空間,設(shè)計的也很是的貼心。 外部自界說節(jié)制 除了 XivD 自己的內(nèi)部曲線分配節(jié)制體例外,XviD 也供給了外部的開放接口。許可使用者略過 XviD 自己的編碼剖析焦點,操作第三方供給的外部剖析對象,例如Gordian Knot,生成的分配好的節(jié)制檔案,再交還 XviD 做最終的二重運算壓縮。這種體例擴(kuò)展了 XviD 的可用性和用戶節(jié)制水平,因為像 Gordian Knot 這種軟件甚至可以做到由用戶節(jié)制每一幀的量化幅度和碼流分配額度,可覺得高級應(yīng)用供給更多的可能性。 行為向量加速編碼 XviD 還有專為提高編碼效率而開發(fā)的設(shè)計,就是記載下畫面的行為向量信息至一個 Log 檔案中。再在二重運算壓縮時經(jīng)由過程直接讀取該檔案中的信息,節(jié)約下對行為向量信息的一再運算,大幅提高編碼速度。 畫面優(yōu)化譯碼 不僅在編碼上 XivD 擁有壯大的功能,在譯碼時的畫面優(yōu)化方面,XviD 也有良多新的建樹。例如 "Horizontal deblock (Y)" 可以柔化水平標(biāo)的目的的亮度馬賽克; "Horizontal deblock (C)" 可以柔化水平相的色度馬賽克; "Deringing(Y)" 可以柔化環(huán)狀亮度色斑; "Deinging (C)" 可以柔化環(huán)狀色度色斑; "mosquito" 可以削減畫面中的蚊狀噪斑。而且,這些 XviD 的畫面優(yōu)化手段都是可選的,是以只要封鎖幾個不是那么需要的選項,就可以在低配置的PC機(jī)上播放。 正在開發(fā)的 B 影格 另一個 XviD 中惹人注目的技術(shù)成長,就是 B 影格。我們知道 I 影格就是關(guān)頭影格,P 影格在關(guān)頭影格之間,只儲存與之前一幅已解壓畫面的差值。B 影格與 P 影格的事理一樣,但除了三者之前解壓了的畫面外,亦會參考后面一影格中的畫面信息。是以 B 影格解壓出來的畫面比P影格就要來的好。
之前的 MPEG4 編碼焦點都僅僅使用了 I 影格和 P 影格存儲畫面。若是能在此根本上使用 B 影格技術(shù),自然可以在畫質(zhì)和壓縮比上更上一層樓。當(dāng)前 XviD 已經(jīng)為開發(fā)人員供給了測試性質(zhì) B 影格體驗版的 XviD 編碼焦點,相信不久的未來,XviD 就可以把 MPEG4 編碼的優(yōu)勢闡揚到極致,成為網(wǎng)上視頻記實名目的牛耳。 關(guān)于DivX發(fā)源的小知識 這種名為DivX 的技術(shù),由一個27歲的法籍影音發(fā)燒友羅達(dá)(Rota)及電腦黑客基爾(Gej)締造出來得。
原本DivX所采的技術(shù)并非這兩位仁兄發(fā)現(xiàn)的,他們只可是是個**天才。跟著Windows的大行其道,微軟開發(fā)了MPEG-4技術(shù),能夠?qū)⒁曨l影像文件容量壓縮到很小。羅達(dá)與基爾將程式重寫一遍,但將其更名為DivX,且放在網(wǎng)上隨意任人下載。
微軟聲稱將對所有敦促DivX成長的人、企業(yè)作出究查??墒橇_達(dá)正周全申請將他們的DivX正當(dāng)化。因為DivX雖然是從Windows的發(fā)現(xiàn)出來的,但卻沒有用過任何微軟的技術(shù)。而且,他更與美國一些技術(shù)人士及財經(jīng)人員開會,和組新企業(yè) ProjectMayo全力推廣DivX。
其實,DivX是視頻DVD的另一種保留體例,要靠DeCSS軌范(注)才能做到。因為DVD自己有防復(fù)制的標(biāo)識表記標(biāo)幟,讓DVD不能隨便復(fù)制到電腦里,但DeCSS能將它解碼,令其可以復(fù)制,壓縮成DivX片子。針對這一做法,各大片子商當(dāng)即采納步履,防止DeCSS外流及散播,但為時已晚,DeCSS在Yahoo!、Google上都能找到。
若何播放XviD視頻 對于大大都用戶來說,只要安裝暴風(fēng)影音或者K-Lite Codec Pack就可以順?biāo)斓夭シ臱viD視頻了。其實這些播放軟件大都是用ffdshow來解碼的,所以在播放視頻的時辰,Windows義務(wù)欄會呈現(xiàn)ffdshow的圖標(biāo)。
4.
XVID內(nèi)嵌時的參數(shù)測試
這是一個XVID編碼測試,主要為RAW為AVI的內(nèi)嵌使用。目標(biāo)是個頭小而畫質(zhì)好。缺一不可。針對其中比較重要的Q值、B值、single pass與Twopass做了較為密集的測試,其他選項盡可能采用了默認(rèn)值,以便結(jié)果更為客觀。另比如“Begin with keyframe”等幾個少數(shù)主要是為修正兼容性的或者色彩優(yōu)化的選項則被勾選。 概念部分主要參考并拷貝了《[SilkyBible] 視頻知識系列》與《XVID 1.0參數(shù)詳解21b.pdf》。說實話,我看的好痛苦@0@,而且為了便于理解。因此,下面說明或推測時都會以比較極端的例子來說明。如果有理解偏差的地方,大家請無視而pass。然后順帶轉(zhuǎn)告一下偶吧。先了解一些必要的概念??赐旮拍詈罂梢灾苯涌淳G色字體的結(jié)論。然后反過來看分析。這樣思路會較為清晰。
Q 值——Q 值是指量化值。顧名思義,Q 值用來描述一個幀的質(zhì)量,每個幀都有Q 值。該值取值范圍是1~31。Q 值越小,質(zhì)量越好,碼率越大;Q 值越大,質(zhì)量越差,碼率越小。(實際上,它的原始概念更復(fù)雜,我們干脆簡單地認(rèn)為1就是100%原質(zhì)量,31就是1/31的原質(zhì)量好了)。具體到一個片子的某一個幀的Q的取值:該值由編碼器編碼的時候根據(jù)該幀的顏色、與跟前/后幀的動態(tài)關(guān)系等自動確定,例如如果編碼器認(rèn)為該幀很重要,就會提高Q值來壓制,以獲得更高的質(zhì)量。當(dāng)然我們也可以指定它的取值。
IF——I-frame 的縮寫,即關(guān)鍵幀,在VirtualDubMod被標(biāo)示為 [K] 。關(guān)鍵幀是構(gòu)成一個幀組(GOP,Group of Picture)的第一個幀。IF 保留了一個場景的所有信息(Keyframe原意是指可以單獨解碼、用于同步的frame,不過在MPEG系統(tǒng)中只有I-frame有這個特性,因為BF和PF都是預(yù)測幀,要靠IF來還原)。具體例子:電影通常1秒鐘播放24幀,所以它1秒鐘有24幅不同圖象。設(shè)想有24幅鳥的圖象,在第一幅里鳥在圖的左側(cè),然后它逐漸向右移動。在第24幀鳥已經(jīng)在圖象的最右側(cè)了。設(shè)想這24幅圖象以足夠快的速度按順序播放,那么人眼看來就好象這鳥從屏幕的左側(cè)飛到了右側(cè)。
PF——P-frame 的縮寫,即未來單項預(yù)測幀,只儲存與之前一個已解壓畫面的差值。即僅僅描述它與前一幀的區(qū)別(雖然描述的不甚準(zhǔn)確但相信理解含義并非難事)。比如說有一幅一只小鳥飛過一片有云彩天空的圖象,這是個關(guān)鍵幀(keyframe)。然后我們可以使用I幀來這樣描述P幀:將小鳥向左和下方各移動一英寸。
BF——B-frame 的縮寫,即雙向預(yù)測幀,除了參考之前解壓過了的畫面外,亦會參考后面一幀中的畫面信息。B 幀具體怎樣描述預(yù)測變化很復(fù)雜,下面以一個不很恰當(dāng)?shù)膭赢嬂觼碚f明一下它最主要的存在效果:
如果一個片子是24fps的,總長度為25分鐘、那么它的總幀數(shù)為25min*60s/min*24fps=36000幀。這個是固定值。可以全是IF,也可以是IF混合著PF,或者IF、PF、BF都有。但是IF不能沒有,都靠它還原呢。哪個個數(shù)增多,另外兩個就要相應(yīng)減少。因此,多使用PF可以不減畫質(zhì)下減小體積,加入BF會進(jìn)一步減小體積。至少理論上是這樣的。(BF是雙向預(yù)測,主要記錄變化值,因此可以少記錄信息(事實雖并非如此,但就通常的效果來說記錄量會減少,而PF是單向,因此記錄量通常來說會多些))。除了壓縮率以外,B 幀對畫質(zhì)的影響也是有的,因為 B 幀這種參考前后畫面的特性,等于有內(nèi)插(interpolation)的效果,所以可以減少噪訊。
概念部分終于說完了。OK,下面測試數(shù)據(jù)正式粉墨登場。請看分析所用的截圖:這是內(nèi)嵌時的狀態(tài)圖。當(dāng)內(nèi)嵌完成后把這個最終狀態(tài)截取。片長1分32秒,30.303 fps,共計2815幀。內(nèi)嵌所用的AVS腳本為 :==================================================================
LoadPlugin(“D:\Program Files\AviSynth 2.5\plugins\VSFilter.dll”)
AVISource(“D:\Downloads\100\100R.avi”)
textsub(“D:\Downloads\100\100R.ass”)
Tweak(0,1,18,1)
##亮度濾鏡(色度,飽和度,亮度,對比度),一般把亮度設(shè)為16-18就很亮了##==================================================================
測試用源文件相關(guān)信息(草莓100%的OP),個人認(rèn)為它各方面比如動態(tài)、畫面清晰度等均屬中等:
文件 : 39 Mb (39 Mb), 總長度 0:01:32, 類型為 AVI, 1 音頻流, 品質(zhì) 100 %
視頻 : 22 Mb, 2041 Kbps, 30.303 fps, 清晰度: 640*448 (4:3),?DX50 = DivXNetworks Divx v5, 支持
音頻 : 16.86 Mb, 1536 Kbps, 48000 Hz, 2 聲道, 0×1 = PCM, 支持
====== 插入一點說明: =====
常見的DVD影碟的數(shù)據(jù)流的速率(bitrate)能夠達(dá)到5000Kbps~10000Kbps,而目前常見的DVDRip通常具有1200Kbps~2000Kbps的速率,此時DVDRip的視覺效果與AVI文件的壓縮比能夠達(dá)到比較理想的平衡狀態(tài)。如果追求優(yōu)秀的視覺效果,我們可以將速率提高到2000Kbps;如果希望得到體積更小的AVI文件,可以使用小于等于1000Kbps的速率。另外DVDRip通常采用的采樣率為48kHz,音頻速率為96Kbps或128Kbps的MP3音頻。
籠統(tǒng)地說,XVID比DIVX的壓縮率更高,因此,同樣質(zhì)量的幀,XVID可以用更小的體積來達(dá)到。另外,無論DIVX也好, XVID也好,它們原本的用途是把DVD壓縮成DVDrip。當(dāng)我們拿到AVI時,已經(jīng)是壓縮過的啦。那些所謂的2pass/1pass比值等其實是針對DVD to DVDrip而考慮,為了提高2pass/1pass比值而縮小畫面大小也是為了DVD to DVDrip而考慮。因此當(dāng)我們內(nèi)嵌AVI時,非特殊目的,以拿到與原AVI文件同樣畫質(zhì)為最好。低了其實是再壓縮,除非你要求更小的體積。因此,用XVID重編碼時,強(qiáng)烈建議把目標(biāo)碼率盡可能設(shè)置成原文件碼率。
這一段不太容易理解目的所在,我再籠統(tǒng)地進(jìn)一步說明:假如現(xiàn)在有個DVD需要壓縮,我們首先用XVID的Twopass的Twopass – 1st pass高質(zhì)量預(yù)設(shè)采樣量化值“w1”跑一遍,看看最大能做成多大的。一般在媲美原畫質(zhì)的情況下, XVID可以把DVDrip壓到原DVD的1/5至1/10的(大致符合5000Kbps壓到1000 Kbps)。如果1pass的結(jié)果認(rèn)為最大能做到688M,那么,在壓制700M的光盤時,我們就可以把這個結(jié)果做成1CD,就把它壓到最大值。但是,有些人就不太方便了,他想得到更小的體積以節(jié)省刻盤成本。比如壓成344M的2張1CD的文件,此時2pass/1pass=344m/688M=50%(呵呵,這里為了敘述方便,數(shù)字很特別),按照大多數(shù)人的畫質(zhì)要求,太低了,看過原DVD的人會明顯感覺到畫質(zhì)降低了,因此,我們要提高這個比值,但是,作成80%的550M更是浪費。所以,此時,我們可以把畫面大小縮小一點,以降低每一幀所占的體積。縮小畫面尺寸,使畫面的精密程度提高,使整體的大小下降。假如1個象素點占1K,那么720*680肯定比640*480畫面來的大。再次1pass得到了可以作成最大430M的結(jié)果,然后2pass/1pass=344m/430M=80%,較高的比值。該壓縮率下的畫質(zhì)降低已經(jīng)很難覺察啦。具體換算我就不說了,這里主要是為AVI的內(nèi)嵌做解說。(因此,這里給我們的片源同志提個醒,靠內(nèi)嵌來修飾缺陷并不完全可取,為了保證內(nèi)嵌質(zhì)量,請大家盡可能的找些高畫質(zhì)的AVI片源吧。)
下面是1pass的結(jié)果截圖,這里并不需要看那個1pass狀態(tài)文件的——video.pass。(注意一下:這里1pass認(rèn)為最大值為17M,但設(shè)成85%原碼率或者稱為85%原大小后,目標(biāo)文件的大小變大了,這是因為在Twopass模式下2pass認(rèn)為以Q3為預(yù)設(shè)采樣量化值采樣,達(dá)到這個碼率才足夠;我們再看2pass-q3-21m-2086kb-b2.jpg的截圖,雖然設(shè)置為理論上的原碼率,但結(jié)果變小了,同樣壓成了1530fbps的。可見這里2pass優(yōu)先了預(yù)設(shè)采樣量化Q=3值,這里只說Q值,是因為后面有其他的情況出現(xiàn))
當(dāng)2pass/1pass的比值低于65%的話,畫質(zhì)損失會比較容易看出來(盡管這一點不是100%正確)。因此,2pass測試中,對于這個好畫質(zhì)的臨界值85%特別照顧了一下,雖然它是為了DVD to DVDri而存在,這里也給予一些測試好了。而21M的設(shè)定則是因為它理論上的幀速近似等于原文件幀速2041 Kbps,故此也特別給予照顧。
文件命名格式及由來(不標(biāo)明2 pass的均為single pass模式):
1、2pass-q3-17.8m(85%max)-1661kb.avi
依次為:Twopass – 2nd pass、預(yù)設(shè)采樣量化值、2pass/1pass比值85%的理論大小、理論幀速
2、2pass-q3-14.5m(85%max)-1343kb-b2.avi
依次為:Twopass – 2nd pass、預(yù)設(shè)采樣量化值、2pass/1pass比值85%的理論大小、理論幀速、使用BF=2
3、2pass-q3-21m-2086kb.avi
依次為:Twopass – 2nd pass、預(yù)設(shè)采樣量化值、與原文件同樣幀速的理論大小、理論幀速
4、2pass-q3-21m-2086kb-b2.avi
依次為:Twopass – 2nd pass、預(yù)設(shè)采樣量化值、與原文件同樣幀速的理論大小、理論幀速、使用BF=2
5、q2-q3.avi
依次為:目標(biāo)采樣量化值、預(yù)設(shè)采樣量化值。
另外要說明的是所有不加BF=2的文件的幀個數(shù)比大致均為:IF:PF =72: 2743(72+2743=2815); 所有BF=2的文件的幀個數(shù)比大致均為:IF:PF:BF=70:1172:1573(70+1172+1573=2815)。有變化也是幾個到十幾個幀的變動,可以忽略不記。這估計是原文件幀結(jié)構(gòu)和XVID的“幀類別使用與壓縮”判斷機(jī)制所引起的。 以下測試均BF=2。原因是有效降低了大小,并可能增進(jìn)了一點點的畫質(zhì),如果使用BF后的文件與不使用BF的文件同樣碼率,想必使用BF的總平均幀質(zhì)量要比不使用的高,總體質(zhì)量也就要高。不過是不是屬于無效增大質(zhì)量呢?很有可能的。那么就看看q2-q3-b2與q2-q3的區(qū)別:IF單幀最大提高從44273B提高到了44290B,平均大小從20272提高到了20332;PF的單幀最大沒有變化,但分析q2-q4-b2與q2-q4時也提升,所以可以認(rèn)為是軟件誤差,單幀最小也從148提高到了154,平均大小從7432提高到了11768。而且,IF的幀個數(shù)并沒有被改變。這里的2幀同樣應(yīng)該是軟件誤差。而發(fā)生改變的只有PF的個數(shù)。所以可以認(rèn)為使用BF后,IF、PF被整體提升了質(zhì)量,以保護(hù)BF的質(zhì)量。順帶也就提升了整體質(zhì)量。
至于在同樣碼率下,是不是出現(xiàn)無效增大質(zhì)量呢?如果XVID確實比DIVX的壓縮更具效率,那么,就確實可能存在很少的無效質(zhì)量。不過,兩個家伙能力應(yīng)該比較接近。那么也可大致認(rèn)為需要碼率接近。雖然其BF威力比DIVX的貌似更大一些。如果原文件也是XVID編碼,那么就更可認(rèn)為碼率要接近。又因為前面的分析,壓縮比是針對DVD to DVDrip的,因此,當(dāng)前考慮的首要不是再次降低塊頭。而且BF的前后參考性又可以某種程度上降低噪音。所以就這樣認(rèn)為吧。對于這一點,我想還應(yīng)該有更強(qiáng)的分析工具來確定判斷,很抱歉,限于能力,不能進(jìn)一步分析了。如果有哪位朋友知道還請賜教一下。
以下均以不二次壓縮為根本。即是碼率保持不變。全部靠攏原幀速:2041kbps。
1、 在single pass模式下:
當(dāng)以Q3為為預(yù)設(shè)采樣量化值, BF=2時:目標(biāo)采樣量化值為Q值時,q2、q3、q4截圖一模一樣,IF、PF的結(jié)果Q值都等于預(yù)設(shè)采樣量化Q值,BF則還要低2個數(shù)量級左右;目標(biāo)采樣量化值為目標(biāo)指定幀速(設(shè)為原幀速)時,2056kb-q3-b2的實際幀速為1531kbps,比q3-q3-b2的1530kbps僅僅提升了1kbps。看來是“以Q3為預(yù)設(shè)采樣量化值”限制了了目標(biāo)采樣量化值的設(shè)定。預(yù)設(shè)采樣值為Q3的質(zhì)量弱于原幀速采樣。
當(dāng)以Q2為為預(yù)設(shè)采樣量化值,BF=2時:目標(biāo)采樣量化值為Q值時,q2、q3、q4截圖一模一樣,IF、PF的結(jié)果Q值都等于預(yù)設(shè)采樣量化Q值, BF則還要低2個數(shù)量級左右;目標(biāo)采樣量化值為目標(biāo)指定幀速(設(shè)為原幀速)時,2056kb-q2-b2的實際幀速為2072kbps,與q2-q2-b2幀速以及截圖都一模一樣。證實了“以Q2為預(yù)設(shè)采樣量化值”則充分滿足甚至超過了目標(biāo)采樣量化值的設(shè)定。預(yù)設(shè)采樣值為Q2的質(zhì)量強(qiáng)于原幀速采樣。
另外從XVID的壓縮算法本質(zhì)上高于DIVX上來看,高于原幀速的采樣應(yīng)該屬于無效。所以本輪由2056kb-q2-b2參加半決賽。
當(dāng)以W1為預(yù)設(shè)采樣量化值時, BF=2時:目標(biāo)采樣量化值為Q值時,結(jié)果文件的IF、PF、BF的Q值隨Q值增大而成比例增大,因此就以q2-w1-b2(實際幀速為2072kbps)參賽;目標(biāo)采樣量化值為目標(biāo)指定幀速(設(shè)為原幀速)時,結(jié)果文件的實際幀速是1951kbps。兩個比較后,2056kb-w1-b2的IF單幀最大質(zhì)量(65313B)比q2-w1-b2(63368B)提高了近200B,PF單幀最大質(zhì)量(87371B)比(70758B)提高了近1300B,BF單幀最大質(zhì)量(34570)比(24871B)提高了約1000B,另外,無論IF、PF、BF其平均大小卻均下降,說明目標(biāo)采樣量化值為Q值限制了XVID的動態(tài)壓縮能力發(fā)揮。故此預(yù)設(shè)采樣為Q2的質(zhì)量的有效率弱于原幀速采樣。應(yīng)該屬于無效增大。
所以更好的 “2056kb-w1-b2”來參加半決賽。
2、 在Twopass模式下:
以Q值=2為預(yù)設(shè)采樣量化值時,BF=2:無論是以大小(設(shè)成高與原大小或者低于原大小)還是以幀速(設(shè)成原幀速)作為目標(biāo)量化值,狀態(tài)截圖均一模一樣,實際幀速均為2072fbps??磥?#xff0c;2pass下,以Q值=2為預(yù)設(shè)采樣量化值時,結(jié)果文件實際幀速只與Q值成比例。而且,可以看出Q=2時,達(dá)到了原幀速。為了驗證這一點,以Q值=3為預(yù)設(shè)采樣量化值時,BF=2再次測試,發(fā)現(xiàn)截圖同樣一模一樣,幀速降為1530 fbps。證明猜想成立。那就隨便選了“2pass-2056kb-q2-b2.jpg”出局半決賽。
以W=1為預(yù)設(shè)采樣量化值時,BF=2:無論是以目標(biāo)大小為目標(biāo)量化值的提升(從結(jié)果看來,其實質(zhì)還是在提升目標(biāo)幀速),還是目標(biāo)幀速的提升,都帶來了實際文件幀速的提升。而且IF、PF、BF的實際Q值也在提升,比如IF: 2pass-w1-23.8m(85%)-2298kb-b2比之2pass-w1-21m-2086kb-b2其Q值范圍雖然為1-3沒變,但平均Q值從2.23提升到2.06;IF單幀最大63372字節(jié)雖然沒變,但是平均單幀大小從24597字節(jié)提升到了25725字節(jié)。PF的Q值范圍則從2-3提升到了1-3,平均Q值從2.66提升到了2.31;PF單幀最大倒是從68540減小到68472,不過從后面來看,這應(yīng)該是屬于軟件計算誤差,其平均單幀大小從15119提升到了16828。BF的Q值范圍雖然為3-5沒變,但平均Q值從4.44提升到4.10;BF單幀最大從21083字節(jié)提升到了23319字節(jié),平均單幀大小也從2087字節(jié)提升到了2251字節(jié)。
同樣:2pass-2056kb-w1-b2比之2pass-w1-23.8m(85%)-2298kb-b2進(jìn)一步提升。而且是全面提升,另外,其實際幀速為2027 fbps。因此,這里就派2pass-2056kb-w1-b2參加半決賽。
3、 半決賽與決賽:
上下對比,2056-q2-b2與2pass-2056kb-q2-b1的狀態(tài)截圖是一模一樣的。先放棄2056-q2-b2,直接對比2pass-2056kb-q2-b2與2pass-2056kb-w1-b2。比較后:那么以Q2或者W1為預(yù)設(shè)采樣量化值,到底哪一個更好?原則上Q1的比Q2的更好,如果只有少量Q1,似乎我們也注意不到,如果把這部分更高碼率的品質(zhì)稍稍降低一點,補(bǔ)貼給Q2部分,似乎整體質(zhì)量會有所提高,而局部稍弱。XVID作為第二代MPEG編碼技術(shù),它更強(qiáng)的功能就是品質(zhì)高的給碼率多些,低的給少些。看下面的2056kb-w1-b2的截圖:甚至出現(xiàn)了BF的Q值低到了11,我認(rèn)為這是正確的,因為貌似是靜止的白屏,就算我們給予它Q2的質(zhì)量,也純屬浪費。所以,這樣就兼顧了品質(zhì)與大小。仔細(xì)對比2056-W1-B2與2pass-2056kb-w1-b2, 2pass-2056kb-w1-b2的IF、PF、BF的單幀大小最大值均有所減小,但是平均大小卻都提高了一點。說,說明2pass-2056kb-w1-b2的Q值分布更為平衡。
DivX DRF AnalyzerV0951的測試也這樣認(rèn)為(看橙色字色處)。所以我的結(jié)論是:相對來說,?single pass 模式不夠細(xì)致。而Twopass模式則可以充分分析原文件,并得出最佳的畫面質(zhì)量。即削減高峰,增益中間。把全片質(zhì)量從整體上提升。那么為什么BF的Q值在6-11的一段沒有了呢?猜測估計是XVID在Twopass后認(rèn)為該品質(zhì)的幀可能會造成爛幀(比如馬賽克)。所以提高了它的Q值,以防止?fàn)€幀的出現(xiàn)。
=== DivX DRF AnalyzerV0951 的一些測試信息=========================
DivX DRF Analyzer v0.9.5 Report!
File Name: E:\temp\100\2pass-2056kb-w1-b2.avi
FourCC: XVID
Codec: XviD0029
The Video has 2815 frames [ 00:01:32 ]
Average Frame quality is?HIGH?[Average DRF/quantizer is 2.74]
Standard Deviation: Quality is MEDIUM [Std. Deviation is 0.95]
Image Resolution is HIGH
=============================================================
DivX DRF Analyzer v0.9.5 Report!
File Name: E:\temp\100\test\2056kb-w1-b2.avi
FourCC: XVID
Codec: XviD0029
The Video has 2815 frames [ 00:01:32 ]
Average Frame quality is?MEDIUM?[Average DRF/quantizer is 3.27]
Standard Deviation: Quality is LOW?[Std. Deviation is 1.72]
Image Resolution is HIGH
=============================================================
最終結(jié)論:在Twopass模式下以W1為預(yù)設(shè)采樣量化值、并且加入BF=2、指定目標(biāo)幀速為原幀速的情況最為理想。實際上Twopass模式默認(rèn)的就是以W1為默認(rèn)預(yù)設(shè)采樣量化值,以指定目標(biāo)大小為默認(rèn)值目標(biāo)大小量化值,因為XVID原本就是為DVD to DVDrip而設(shè)計的。所以這里不考慮二次壓縮的時候,應(yīng)該改為指定目標(biāo)幀速為原AVI即原DVDrip幀速。
問題一:BF的B值設(shè)置為多少比較合適?(這里的B值不是指Q值,而是指2個非BF間最多可以連續(xù)插入的BF的個數(shù)。)
其實從開頭BF的優(yōu)越性就可以看出一部分原因了,就是如果連續(xù)24個持續(xù)1秒鐘都是BF,播放時會出現(xiàn)什么結(jié)果?又因為BF還需要參考后面的一幀,所以畫質(zhì)會特別爛,而且解碼時會出現(xiàn)延時。造成影音不同步。所以:
1、如果你想獲得低于幀速率900kbps的文件,你可以把B值設(shè)為3或者更大(不推薦)。
2、如果你想獲得900-1400kbps左右的文件,你可以把B值設(shè)為2。
3、如果你想獲得更高品質(zhì)的文件,你可以把B值選項關(guān)掉。前提是你的源文件最好靜態(tài)多,質(zhì)量也很高。
4、如果你有著其他要求,那么,沒有必要的情況下,請保持2的默認(rèn)值吧。
下面是一些相關(guān)設(shè)置。沒有說明的請保持默認(rèn)。
問題二:下面再回頭想想BF的Q 值,XVID是怎么得來的?
BF 的Q 值由BF 前后的IF/PF 共同決定。BF 的Q 值=BF 前后的IF(或PF)的Q 值的算術(shù)平均數(shù)* Quantizer ratio+ Quantizer offset。上邊的數(shù)據(jù)貌似也反映了這個情況。
BF 是一個能有效提高壓縮率的功能,是否降低畫質(zhì),那要看如何設(shè)置了。有的設(shè)置壓出來的部分BF,Q 值比PF 還低。用最恰當(dāng)?shù)腂F 設(shè)置來調(diào)節(jié)碼率,提高整體質(zhì)量,是非常有效的,設(shè)置地恰當(dāng)?shù)脑?#xff0c;會令全片的Q 值分布相當(dāng)平均,可使DRF 測試中的第二項——Standard Deviation 輕易達(dá)到“Quality is HIGH [Std. Deviation is 0.50]”,即動、靜態(tài)場景的畫質(zhì)一致,不會“靜態(tài)尚可而動態(tài)MSK(馬賽克)驚人”。通常情況下,全片BF 含量在30%—55%左右,畫面效果與只用I、PF+VHQ4 跑出來的畫質(zhì)無顯著差別。即省時又保證質(zhì)量,所以一般應(yīng)當(dāng)使用BF。
隨著XviD 的Frame Type 的不斷進(jìn)步(從0624 版開始FrameType 判斷較以前版本已經(jīng)有了相當(dāng)大的提高),大動態(tài)場景BF 濫用現(xiàn)象(可以參看開頭BF的圖示,如果畫面動態(tài)強(qiáng),變換快,不具備連續(xù)性,那么BF就作用不大了)已經(jīng)得到了較好的抑制(經(jīng)過實測,在碼率充足的情況下,大動態(tài)場景基本用IF PF PF PF PF… 來壓了),所以BF 可以放心使用。
Twopass——二重運算。這種編碼模式分為兩步,首先對畫面逐幀進(jìn)行運動偵測,以及對全片段的運動偵測結(jié)果進(jìn)行分析,然后重新以曲線平衡分配每一幀的Q值,以做到:需要高碼率的運動畫面可以分配更多空間、更高的碼率、更低的Q值來保證畫面質(zhì)量;而對于不包含太多運動信息的靜態(tài)畫面,則可以消減分配的碼率。這種把好鋼用在刀刃上的做法,是XviD作為第二代MPEG4編碼的核心內(nèi)容。可以說,Twopass模式可以在影片容量與畫面質(zhì)量之間找到最佳平衡點,這也是大多數(shù)人都樂意花費更多時間采用這種方式的原因。
Twopass-1st pass——二重運算,第一次運算。這是Twopass 模式的第一步。在這一步中,編碼器會用最高質(zhì)量編碼(默認(rèn)值W=1)(這里要補(bǔ)充的是,Twopass-1st pass的這個值其實可以指定,并且效果并不相同,有高畫質(zhì)的,也有低的,請看下面的1pass截圖),同時收集畫面信息,并將這些信息記錄信息文件(stats)當(dāng)中提供第二次運算的時候參考。
Twopass-2nd pass——二重運算,第二次運算。這是Twopass 模式的第二步,編碼器會根據(jù)第一次壓縮時獲得的影片的信息和用戶指定的最終文件大小,自動分配碼率,低動態(tài)的分配得少一些、大動態(tài)的分配得多一些,總之盡量保證最終文件大小為用戶指定的大小。
5.
DivX和XviD
如今的電影是越來越好看,拍攝、制作的特技效果越來越精彩,人們期待的程度越來越高,盜版也越來越多;同時電影制作公司的防盜版技術(shù)做的越來越高明。但有句老話叫:"道高一尺,魔高一丈",無論你的電影多精彩、防盜技術(shù)多高明,總是有人偏偏能夠把你"盜"出來,而且還"盜亦有盜",在保持"原版原味"的條件下,占用的空間變得越來越小,操作越來越靈活、簡單,越來越方便傳播。而且這種技術(shù)隨著版本不斷更新,畫質(zhì)越來越貼近原版、壓縮速度越來越快、壓縮/播放進(jìn)程對計算機(jī)的需求越來越低。這就是DivX時代的新生力量――XviD。黑格爾說過"存在即合理"
隨著時代的進(jìn)步,社會的發(fā)展,在計算機(jī)視頻技術(shù)方面更是突飛猛進(jìn)。如今視頻的業(yè)界標(biāo)準(zhǔn)已經(jīng)到了DVD時代。主流的DVD光驅(qū)的價格已經(jīng)降到400元人民幣以內(nèi)。DVD播放機(jī)的價格最便宜的已經(jīng)降到了700元。但是這些都是近期發(fā)生的事情,目前仍有一大群only CD-ROM群體,他們不愿意再投資去買DVD光驅(qū),有的甚至由于機(jī)器無法再擴(kuò)充而不能購買DVD光驅(qū)。這便促使另一個的解決方案的萌發(fā)。
除此之外,互聯(lián)網(wǎng)寬帶的普及,Adsl寬帶入戶,P2P軟件的泛濫,使得650MB的大文件輕松的實現(xiàn)異地傳輸。還有正版DVD大片的價格居高不下,也是正版DVD普及化的一大障礙。
基于以上因素的存在,有一種新的視頻壓縮技術(shù)出現(xiàn),那就是DivX,即"壓縮電影"。壓縮電影的技術(shù)有很多種,但是DivX最為普及,它廣泛流傳于互聯(lián)網(wǎng)與盜版盤。
隨著時間的推移DivX再推出剛剛推出不久,就不斷推陳出新,從DivX3.11到DivX4 ,目前最新版本為DivX5.02。本來版本越高,技術(shù)也就越高、播放的質(zhì)量應(yīng)該更好、更清晰。但是事實告訴我們隨著版本的提升,壓縮后的播放效果提升不明顯,壓縮所用的時間越來越長,壓縮后的體積沒有太大的進(jìn)步,甚至有的使用DivX5.02壓縮以后會出現(xiàn)跳幀的問題。這到底是為什么呢?難道視頻壓縮技術(shù)已經(jīng)達(dá)到頂峰不能夠再穿越了么?
目前又出現(xiàn)一種新的壓縮技術(shù)名為XviD,在視頻業(yè)界初見端倪,就目前來看它的壓縮時間就是一大賣點,它可以在保持DivX5的畫質(zhì)的基礎(chǔ)上,大大提高壓縮時間。
光從名字上看就可以看出Xvid與Divx,他們之間肯定有著千絲萬縷的聯(lián)系,大家一定想知道。下面就為大家談?wù)勱P(guān)于XviD的故事。
Long long ago…
故事的經(jīng)過是這樣的。
早在1998年微軟開發(fā)了第一個(也是唯一的)在PC上使用的MPEG-4(注)編碼器,它包括MS MPEG4V1、MS MPEG4V2、MS MPEG4V3的系列編碼內(nèi)核。其中的V1和V2用來制作AVI文件,一直到現(xiàn)在它都是作為Windows的默認(rèn)組件。不過V1和V2的編碼質(zhì)量不是很好,一直到MS MPEG4V3才開始有好轉(zhuǎn),畫質(zhì)有了顯著的進(jìn)步。但是不知微軟出何居心,卻將這個MS MPEG4V3 的視頻編碼內(nèi)核封閉在僅僅應(yīng)用于Windows Media流媒體技術(shù)上,也就是說,我們經(jīng)??吹降腁SF流媒體文件中。ASF文件雖然有一些優(yōu)勢,但是由于過分的封閉,不能被編輯,未得到廣泛的應(yīng)用。這便惹怒了不怕天不怕地的視頻黑客和置于鉆研視頻編碼的高手。后來,這些小組不僅破解了微軟的視頻編碼,而且經(jīng)過他們的修改,一種新的視頻編碼誕生了。那就是廣為流傳的Mpeg4編碼器――DivX3.11。
隨后一發(fā)不可收拾,DivX被傳得紅得發(fā)紫,很快就成了業(yè)界的標(biāo)準(zhǔn)。但是問題同樣很快的出現(xiàn)了,DivX的基礎(chǔ)技術(shù)是非法盜用微軟的,只能在地下里流傳,卻上不了臺面,正所謂"名不正,言不順",無法進(jìn)行廣泛的發(fā)展,即產(chǎn)品化,更無法生產(chǎn)硬件播放機(jī)。
"生產(chǎn)力要改變生產(chǎn)關(guān)系"
在這種情況的迫使下,一些視頻編碼的高級程序員(包括原DivX 的開發(fā)者)組建了一家公司,名為DivXNetworks Inc。這家公司發(fā)起一個完全開放源碼的項目,名為"ProjectMayo",目標(biāo)是開發(fā)一套全新的、開放源碼的MPEG4編碼軟件。由于它完全符合ISO MPEG4標(biāo)準(zhǔn),又是完全開放源代碼(就象linux操作系統(tǒng)),OpenDivX CODEC吸引了很多軟件、視頻高手參與。人力、物力大大投入,OpenDivX編碼器和解碼器原型很快便公布于眾,之后又開發(fā)出具有更高性能的編碼器Encore 2等等。這DivX的輝煌時期。
雖然主要編碼工作是DXN的人在做,但許多的技術(shù)難關(guān)的突破完全得力于來自開放源碼社會的幫助。
DivX的優(yōu)勢被人們所接受,高品質(zhì)的DVD電影的容量一般為5GB,但經(jīng)過DivX編碼后的大小只有650MB,僅僅為原DVD容量的八分之一,圖像品質(zhì)卻與DVD相當(dāng)。它可以通過互聯(lián)網(wǎng)相互傳輸,還可以報存在一張CD光盤(650MB)上。
DXN的野心:
DivXNetworks一直希望DivX能成為好萊塢巨頭們選擇的行業(yè)標(biāo)準(zhǔn),并可以通過互聯(lián)網(wǎng)進(jìn)行傳輸?shù)囊曨l文件,就像唱片發(fā)行公司不得不接受MP3格式,并使用它在網(wǎng)上傳輸音樂文件一樣。DXN希望并計劃在網(wǎng)上出售視頻內(nèi)容的公司達(dá)成技術(shù)轉(zhuǎn)讓的協(xié)議。但是,到目前為止,它尚未和任何一家主要的、甚至具有影響力的電影制片公司達(dá)成這類協(xié)議。
很可惜的是想DivX這么好的電影只能在電腦上播放,目前還沒有一款播放機(jī)能夠播放這樣的光盤。日前,DXN已經(jīng)來到了中國,這家公司的負(fù)責(zé)人表示,目前有許多美國人都希望能買到采用這一技術(shù)的DVD播放設(shè)備,但全球還沒有人能生產(chǎn),所以他希望能與中國的DVD制造商攜手,在年內(nèi)拿出產(chǎn)品,并且首先在美國推出。
"天底下真的好人多么?那么小人算好人么?"
就在DivX順利發(fā)展時期,DivX的技術(shù)逐漸成熟,商機(jī)無限的時候,一臺好戲上演了。由于DivX的技術(shù)不是依據(jù)GPL協(xié)議(通用公共許可證,一種開放源碼項目中常用的保障自由使用和修改的軟件或源碼的協(xié)議),而是LGPL協(xié)議(注)。這是DXN公司為自己留的后門。
2001年7月就在Encore2基本成型的時候,DXN公司突然封閉了DivX的原代碼,并在此基礎(chǔ)上發(fā)布了自有產(chǎn)品DivX4。DivX 4的基礎(chǔ)就是開放源代碼OpenDivX中的Encore 2,DXN利用了DivX的招牌。DNX公司這么做,可以說是初其不備的擺了所有人一刀。開放源碼社會就這樣被狠狠地涮了一回,他們是那么的無辜。
DXN公司趁熱打鐵,很快推出了DivX5,但是DivX5沒有比DivX4強(qiáng)到哪里去,甚至有bug,更可氣的是這一版本還要收費??蓱z阿,有那么多無償為DivX技術(shù)付出的智慧與勞動的人,可悲阿,他們?yōu)橐恢刀荚跓o償?shù)臑镈NX公司賺錢。這種壟斷和一直處于壟斷地位的微軟來說,DXN要更恨、更毒。
人世間還是好人多!正義當(dāng)頭!
首先是全球整個0dayz組織(注)永遠(yuǎn)的拒絕了DXN公司的DivX45。
被人"涮"了一把的開源社團(tuán)決定另起門戶,逐漸重新聚攏開發(fā)力量,在OpenDivX版本的基礎(chǔ)上,再次開發(fā)出一種新的MPEG-4編碼、解碼軟件。這就是:XviD。從技術(shù)上來說XviD已經(jīng)基本上與DivX5接近,或者還有所超越;
春天來了:
近一年來XviD繼承并發(fā)展了曾經(jīng)的OpenDIVX Encore 2,并且使其的性能、效率的到了極大的提升,被認(rèn)為是目前最快的MPEG4編碼。這是因為XviD重新改寫了所有原代碼,煥然一新。除此之外,Xvid還吸收了前車之鑒,依照GPL發(fā)布。(不再是以前DivX的LGPL,也就是說:誰要是想用它做成產(chǎn)品而不開放源碼是非法的)而且在2002年,也就是今年,TDX2002(全球最著名的地下電影發(fā)行組織,每年在網(wǎng)上放出數(shù)千部最新而且高品質(zhì)影片RIP)已經(jīng)接納XviD為官方標(biāo)準(zhǔn)。這樣TDX2002就有了兩個正式標(biāo)準(zhǔn):DivX 3.11與XviD。而DivX 4、5像其它封閉的商業(yè)軟件一樣,被永遠(yuǎn)拒絕。
報應(yīng)來了!
對開源軟件下毒手的人遠(yuǎn)不止DXN一家,目前因為一家商業(yè)軟件公司盜用XviD源代碼,而被迫停止開發(fā)。具體的情況請參閱: http://www.xvid.org;
XviD使用技巧:
關(guān)于XviD壓縮設(shè)置的文章很多,XviD可以調(diào)節(jié)的選項很細(xì),由于篇幅限制,不再本文的討論之內(nèi)。在這里,我推薦大家使用"2-Pass"編碼, 因為它能給我們更精確的最終文件大小,并且生成最佳質(zhì)量的編碼 (在文件大小相同的情況下)。
只安裝DivX5的編解碼器不能播放由Xvid壓縮的電影。但是只安裝XviD編碼,可以順利播放DivX5壓縮的電影。但是在播放DivX5電影的時候,速度不能讓人滿意。加上ffdshow(注)之后效果明顯改善。看來XviD在播放divX5的還不是很完善。
雖然XviD到目前來講與DivX5對戰(zhàn),仍有些身單力薄,優(yōu)勢不是很明顯。但是筆者很看好XviD。首先,它是絕對開放源代碼,這使得有更多的人投入到XviD的研發(fā)之中。還有,它完全重寫DivX的原代碼,讓新的XivD去粗取精、煥然一新;目前XviD的開發(fā)人員有很多都是當(dāng)初DivX的研發(fā)人員,對DivX的錯誤了解得很清楚,重寫之后,XivD的地層優(yōu)勢可見一斑。另外,DivX4/5雖然版本不斷更新,但是功能提升并不高,優(yōu)勢不明顯。XviD是新生力量,而且充滿了復(fù)仇的力量。祝XviD一路走好。
XviD版本的歷史:
1.0 2002年2月17日 第一版 ,首次發(fā)布
1.0 2002年2月28日 大量的修正和更準(zhǔn)確地解釋
1.1 2002年3月2日 分析澄清了很多概念
1.2 2002年3月4日 加入量化矩陣(quantization matrix), 移去量(removed quant). 柔和(smoothing) 技術(shù)
1.3 2002年3月8日 關(guān)于 Nic's XviD Directshow Filter 的詳釋
1.3 2002年7月23日 按照Nic's XVID Codec校正補(bǔ)充部分內(nèi)容(目前最新版本)
關(guān)于DivX起源的小知識:
這種名為DivX 的技術(shù),由一個27歲的法籍影音發(fā)燒友羅達(dá)(Rota)及電腦黑客基爾(Gej)創(chuàng)造出來得。
原來DivX所采的技術(shù)并非這兩位仁兄發(fā)明的,他們只不過是個盜版天才。隨著Windows的大行其道,微軟開發(fā)了MPEG-4技術(shù),能夠?qū)⒁曨l影像文件容量壓縮到很小。羅達(dá)與基爾將程式重寫一遍,但將其改名為DivX,且放在網(wǎng)上隨意任人下載。
微軟聲稱將對所有推動DivX發(fā)展的人、企業(yè)作出追究。可是羅達(dá)正全面申請將他們的DivX合法化。由于DivX雖然是從Windows的發(fā)明出來的,但卻沒有用過任何微軟的技術(shù)。而且,他更與美國一些技術(shù)人士及財經(jīng)人員開會,和組新公司 ProjectMayo.com全力推廣DivX。
其實,DivX是視頻DVD的另一種保存方式,要靠DeCSS程序(注)才能做到。因為DVD本身有防復(fù)制的標(biāo)記,讓DVD不能隨便復(fù)制到電腦里,但DeCSS能將它解碼,令其可以復(fù)制,壓縮成DivX電影。針對這一做法,各大電影商立即采取行動,防止DeCSS外流及散播,但為時已晚,DeCSS在Yahoo!、Google上都能找到。
名詞解釋:
TDX2002組織:全球最著名的地下電影發(fā)行組織,每年在網(wǎng)上放出數(shù)千部最新而且高品質(zhì)影片RIP。
0day組織:全球著名的破解組織。其意思為在不到一天的時間里破解軟件(自然包括游戲,軟件,現(xiàn)在還涉及到其他東西),0Day只是一個統(tǒng)稱(和WareZ的意思一樣)。成為他們旗下的會員就可以獲得他們提供給你的帳號,當(dāng)然由于要求嚴(yán)格,所以一般是很難進(jìn)入的!!(這里我只提醒一下,多留意NFO文件里的信息).
DeCSS程序:喬·約翰森編寫的小程序,僅有57K,不僅震撼了好萊塢,還引發(fā)了無數(shù)的法律糾紛。他創(chuàng)造出來的“小魔怪”,如今已經(jīng)成了好萊塢制片商們最恨之入骨的冤家對頭。DeCSS程序能夠?qū)⒄婕用艿腄VD影片復(fù)制到計算機(jī)硬盤上。它還可以將這些影片上傳到互聯(lián)網(wǎng)上。
MPEG-4技術(shù):是一種嶄新的低碼率、高壓縮比的視頻編碼標(biāo)準(zhǔn),傳輸速率為4.8~64kbit/s,使用時占用的存儲空間比較小。目前的DivX(最新的XviD)電影都采用的此技術(shù),現(xiàn)在被廣泛采用。
GPL協(xié)議:通用公共許可證,一種開放源碼項目中常用的保障自由使用和修改的軟件或源碼的協(xié)議。
LGPL協(xié)議:次級GPL(Lesser GPL),與GPL一樣,是一種公共許可證。與GPL的最大不同是它允許私有。
Ffdshow:一個支持 Xvid、MPEG4-V3 MPEG4-V2 以及 DivX 所有版本所制作的視頻文件的播放軟件,占CPU 資源比較少。
6.XviD配置參考詳解【爆詳細(xì)】
XviD的主界面
[Top]
Profile @ Level
[Top]
這個選項包含一些預(yù)設(shè)值,與分辨率和碼率有關(guān),按旁邊的“more...”按鈕再切換到Level標(biāo)簽可以看到預(yù)設(shè)的數(shù)值。因為我們制作的視頻并不在其它視頻播放設(shè)備(比如具備MPEG4解碼能力的DVD播放機(jī))中播放,無須考慮設(shè)備兼容性,所以這個選項一般可選“不限制”(unrestricted)或者默認(rèn)的“AS @ L5”。
Zones
[Top]
XviD1.0以前的版本都有一個參數(shù)叫Credit,Zones繼承并加強(qiáng)了以前的Credit功能,使之可以控制片中任意一段視頻。大家知道,電影、動畫片尾(或片頭)都有制作人員名單 (即Credit,下同) ,而且一般沒人會看。而老版XviD中Credit選項的作用就是,允許用戶使用較低的質(zhì)量制作Credit部分,讓出更多的碼率分配給正文部分,以提高正文部分的質(zhì)量。而在最新的XviD1.0中,這個Credit選項卻消失了,取而代之的是一個新的參數(shù)——Zones。在這里,我們可以把Zones理解成“區(qū)間”、或者說“片斷”。也就是說,我們可以在邏輯上將片子分成許多段,并給這些段落一些“特殊待遇”。
Zones的使用例子
[Top]
上圖例子中,0~40640幀是正片,按照正常壓縮,所以需要設(shè)定W1.00。從40641幀開始是長長的黑白滾動字幕的制作人員名單,因為滾動字幕是非常浪費碼率的,所以這里我們設(shè)定使用Q8來壓縮制作人員名單。Zones界面如上圖,本部分參數(shù)設(shè)置僅為例子,具體設(shè)置在下面說明。
Zones的設(shè)置
Start frame#——該區(qū)間的起始幀,用于指定該區(qū)間的范圍。該區(qū)間的范圍定義于起始幀開始至下一區(qū)間起始幀的前一幀。若沒有定義下一區(qū)間,則該區(qū)間一直定義至影片結(jié)束。
Weight——權(quán)重。設(shè)置該區(qū)間的實際應(yīng)用碼率與原碼率的比。比如,如果只想使用原碼率的85%編碼該區(qū)間,那么這里可以填寫0.85。如果想使用100%碼率(即原碼率),填寫1.00即可。什么是“原碼率”呢?即XviD認(rèn)為應(yīng)該使用的碼率。如果定義了權(quán)重,那么XviD在實際壓縮的時候,就會將原碼率乘以用戶指定的權(quán)重,作為該處實際的碼率。
Quantizer——設(shè)置該區(qū)間幀的Q值??梢詮?qiáng)迫編碼器將這段區(qū)間使用某一Q值編碼(本選項通常用于Credit部分的編碼)。
Begin with keyframe——本區(qū)間的第一幀強(qiáng)迫使用IF。一般選擇此選項。
Greyscale encoding——使用灰度。編碼出的畫面是黑白的,適合于黑白畫面(比如片尾的黑白Credit),可更加降低本區(qū)間的碼率。
Chroma optimizer enabled——色度優(yōu)化,可以改善顏色過渡不自然現(xiàn)象。該選項對畫面顏色有優(yōu)化作用,推薦選擇。勾選此項會稍微降低編碼速度,所以可以選擇僅對Weight設(shè)置成1的電影正文部分應(yīng)用此設(shè)置。由于Chroma optimizer是在色度上做文章,所以開啟了Greyscale encoding的時候可以考慮關(guān)掉 Chroma optimizer,可以在一定程度上提高一些編碼速度。
Cartoon Mode——卡通模式。這個模式可以讓畫面顯得更干凈一些,但這就意味著要抹殺細(xì)節(jié)。制作動畫的時候可以使用。(下面會有一個小結(jié)專門講解Cartoon Mode)
BVOP sensitivity——BF靈敏度。值越大,使用BF的數(shù)量越多。如果設(shè)定負(fù)值,則會減少BF用量。制作CREDIT段落的時候本參數(shù)可以適當(dāng)設(shè)置大一點,用更多的高壓縮率BF去壓Credits,參數(shù)可以考慮20或40。
注意:如果要在Credit使用Quantizer模式的話,要在Twopass-1st pass中也使用相同的設(shè)置才有效。而若要用Weight模式則只需在Twopass-2nd pass中設(shè)定既可(從某種意義上講,這樣可令Weight模式下的Two-pass-1st pass稍微快一點)。
Zones應(yīng)用于CREDIT的參數(shù)設(shè)置建議: 演職員名單的Q值可限定為8或者9,這樣既可以保證名單上的文字能夠分辨出來,也可以大幅降低Credit這部分的視頻文件體積。有時,10分鐘左右的Credits壓出來也只有6、7MB,這對某些擁有5、6分鐘以上較長Credit的1CD DVDRip影片制作來說,幫助是較為明顯的。
Zones使用上的心得
[Top]
除非出現(xiàn)極端的現(xiàn)象,否則不建議針對正片(即影片中除廣告、制作人員名單之外的正文部分)使用Zones。有些用戶喜歡自作聰明地指定許多Zones人為地干預(yù)碼率控制。實踐證明,這種行為是非常不明智的,這樣會嚴(yán)重干擾XviD對于碼率的控制和計算,只會導(dǎo)致容量失控(Oversize或Lowsize)或畫質(zhì)下降。XviD的碼率控制幾乎是所有編碼器中做得最好的,所以不要擔(dān)心,把一切交給XviD去做吧。
考慮到觀眾
[Top]
現(xiàn)在不少影片的制作人員名單采用了帶有畫面的漸變或滾動字幕,畫面通常為一些拍攝花絮或影片插圖、設(shè)定??紤]到觀眾的觀賞需要,這類名單不適合使用Zones來降低碼率。所以,壓縮的時候應(yīng)當(dāng)時刻考慮到觀眾的心情。
Cartoon Mode
[Top]
(本部分作者:Bopirit,收錄時略有修改)
XviD有個動態(tài)判斷標(biāo)準(zhǔn)值,指判別畫面是否有動態(tài)的標(biāo)準(zhǔn)。若高于這個值,則判斷畫面為動,編碼時記載動態(tài)信息;若低于這個值則判斷為畫面不動,不記載動態(tài)信息。這個通常很低,就是說,很小一點差別都會判斷為動態(tài)。
打開Cartoon模式后,這個標(biāo)志的值會加大,相應(yīng)的,小的動態(tài)變化會忽略。對動畫來說,最直接的效果就是消除了浮動的細(xì)微噪點(特別是在色塊和線條之間,這種噪點即使降噪也會出現(xiàn))。因為用了Cartoon模式,這些噪點造成的小度變化被忽略掉,因此會省出大量碼率。在的實驗中,多在8%以上。但是,因為畫面的變動相對較大,PSNR會降低(雖然對動畫來說這算不得降低),而且對于使用H.263量化的動畫,還會讓畫面感覺更加模糊;而對于MPEG量化,這個Cartoon模式可以有效降低MPEG量化編碼動畫片的副作用,盡管PSNR降低,但實際上畫面看起來更好。可以配合MPEG/MPEG Custom量化方式使用。
Q值
[Top]
Q值是指量化值(依據(jù)作者個人習(xí)慣不同,這個值在不同文章中的叫法有所不同,比如“量化值”、“量化級別”、“Quant”等等,本文統(tǒng)一稱作“Q值”)。顧名思義,Q值用來描述一個幀的質(zhì)量,每個幀都有Q值。該值取值范圍是1~31。該值由編碼器編碼的時候根據(jù)該幀的顏色、與跟前/后幀的動態(tài)關(guān)系等自動確定。Q值越小,質(zhì)量越好,碼率越大;Q值越大,質(zhì)量越差,碼率越小。(本概念在XVID制作中非常重要,Q值直接關(guān)系到影片的畫面質(zhì)量。)
Encoding mode
[Top]
Encoding mode即編碼模式。XviD一共提供兩種編碼模式。一種是Single pass,另一種是Twopass。Twopass分兩步,分別是1st pass,和2nd pass。下面對這兩種編碼模式分別進(jìn)行講解。
Single pass
[Top]
Single pass即一次運算,Single pass有兩種模式(通過Target xxx按鈕切換)Target quantizer(目標(biāo)Q值)和Target bitrate(目標(biāo)碼率)。Single pass模式編碼較簡單,速度也很快,但是最終質(zhì)量不如Twopass模式好。可用于實時采集。
Target bitrate(CBR)——目標(biāo)碼率模式,單位kbps。最簡單的單線編碼,選擇平均碼率后編碼。文件大小相對容易控制。
Target quantizer(VBR)——目標(biāo)Q值模式,動態(tài)碼率。
Two pass
[Top]
Two pass即二重運算。這種編碼模式分為兩步,首先對畫面逐幀進(jìn)行運動偵測,以及對全片段的運動偵測結(jié)果進(jìn)行分析,然后重新以曲線平衡分配每一幀的Q值,以做到:需要高碼率的運動畫面可以分配更多空間、更高的碼率、更低的Q值來保證畫面質(zhì)量;而對于不包含太多運動信息的靜態(tài)畫面,則可以消減分配的碼率。這種把好鋼用在刀刃上的做法,是XviD作為第二代MPEG4編碼的核心內(nèi)容。可以說,Twopass模式可以在影片容量與畫面質(zhì)量之間找到最佳平衡點,這也是大多數(shù)人都樂意花費更多時間采用這種方式的原因。
Twopass-1st pass——二重運算,第一次運算。這是Twopass模式的第一步。在這一步中,編碼器會用最高質(zhì)量編碼(量化值2),同時收集畫面信息,并將這些信息記錄信息文件(stats)當(dāng)中提供第二次運算的時候參考。
Twopass-2nd pass——二重運算,第二次運算。這是Twopass模式的第二步,編碼器會根據(jù)第一次壓縮時獲得的影片的信息和用戶指定的最終文件大小,自動分配碼率,低動態(tài)的分配得少一些、大動態(tài)的分配得多一些,總之盡量保證最終文件大小為用戶指定的大小。
注1:不要在第一重和第二重運算之間更改XviD設(shè)置(某些特殊項除外)、改變AVS腳本(如果用到AVS)或加入、刪除濾鏡,這些都將會造成不正確的結(jié)果。
注2:計算2pass容量的時候,應(yīng)使用1K=1024Bytes的換算方法。且計算結(jié)果不包含音頻大小。
Twopass-1st pass面板
[Top]
Full Quality first pass——全質(zhì)量第一次運算。在 Twopass - 1st pass 時以你當(dāng)前的設(shè)置進(jìn)行編碼,通常是沒必要的。會降低1st pass編碼速度。
Discard first pass——不輸出第一次運算結(jié)果。一般都會打開這項,否則你可能會得到一個容量高達(dá)幾個G的無用的AVI文件。
2nd pass
[Top]
這個對話框只有在2PASS的時候才可用,其的設(shè)置比較復(fù)雜,建議保留默認(rèn)設(shè)置。
I-frame boost——額外分配給IF的碼率。如果IF的Q值較小(如1或2),此項可以設(shè)置為0。
I-frames closer than... (frames) X ...are reduced by (%)Y(X和Y代表所設(shè)定的參數(shù))——意思是,若兩個IF的距離小于X(通常是連續(xù)的閃電效果或者連續(xù)大動態(tài)動作場面會出現(xiàn)這種情況),則靠后的IF碼率減小Y%。如果IF的Q值較小,Y可以稍微設(shè)置大一些(可增加5%~8%)。
Overlflow treatment——碼率補(bǔ)償與縮減。Max overflow improvement和Max overflow degradation控制當(dāng)編碼器遇到不足碼率或者碼率過大的場景時進(jìn)行修正補(bǔ)償?shù)拈y值,即超碼或不足碼到達(dá)什么程度,編碼器會進(jìn)行修正。值越大,修正速度越快(即需要修正的幀較少,整體編碼速度就加快),但是這可能會造成無法為別的更需要碼率幀保留碼率。如果Q值波動較大,可以將這個值減小到20~30,這樣可能會使預(yù)測的文件大小受到影響。除非遇到特殊情況,本功能不建議使用!
Overflow control strength %——控制每個需要補(bǔ)償?shù)拇a率過大/不足的幀被補(bǔ)償多少。除非遇到特殊情況,本功能不建議使用。
Curve compression——曲線壓縮。曲線壓縮的作用就是將碼率較高的幀的碼率拉下來,將碼率較小的幀的碼率提上去,讓碼率曲線平緩一些。此選項不建議使用,也就是保持默認(rèn)設(shè)置“0”。由于現(xiàn)階段XviD的動態(tài)分配(即曲線壓縮)做得不是很好,所以直接采用了一種linear scale(即線性壓縮)把1pass的碼率曲線直接往下調(diào)。除遇到特殊情況外,不建議使用曲線壓縮功能。
若想了解更多曲線壓縮以及線性壓縮的細(xì)節(jié),請參閱本文附錄《曲線壓縮與線性壓縮》。
Profile標(biāo)簽
[Top]
Quantization type
[Top]
量化方式。此處支持三種量化方式。分別是H.263、MPEG、MPEG Custom。應(yīng)根據(jù)影片的特性確定該選項。要了解這三種量化方式的詳細(xì)信息,請參見附錄《三種量化方式解說》。
Adaptive Quantization
[Top]
其實這個選項就是XVID 1.0之前版本中的Lumi masking。加大圖像亮/暗部等人眼不容易注意到的部分的壓縮率,可能會產(chǎn)生畫面扭曲。本選相應(yīng)當(dāng)謹(jǐn)慎使用,因為它看起來弊大于利。所以如果不是對縮小文件體積縮小有迫切的需求,最好不要使用。
Interlaced Encoding
[Top]
隔行處理。適用于有交錯的片源。一般來說不需要開啟。
Top Field First
[Top]
決定場序。如果選中,則為頂場(奇數(shù)場)先,否則為底場(偶數(shù)場)先。
Quarter Pixel
[Top]
1/4像素(簡稱QP,下同)。MPEG-4 用的 QPel 即 1/4 Pel,就是再補(bǔ)出1/2像素像素和1/2像素之間的1/4像素。能保留更多的細(xì)節(jié)(比不用QP多)和得到更精確的動態(tài)補(bǔ)償,適合高2-PASS/1-PASS比值時采用。但會降低損失近1/3的編碼速度。
通常情況下,2-PASS/1-PASS比值在50%以下,不推薦使用。800K以下的低碼率使用時,部分場景的畫面會產(chǎn)生嚴(yán)重的色彩飄逸現(xiàn)象,看上去像粘稠的液體流動(干凈、低動態(tài)片源除外)。視頻碼率越高,使用加QP后的效果越好,而且中低碼率下去色塊的作用也非常明顯。
Global Motion Compensation
[Top]
全域動態(tài)補(bǔ)償(簡稱GMC,下同)。能在縮放(把鏡頭拉近)以及旋轉(zhuǎn)(轉(zhuǎn)動相機(jī))的情形下有所幫助,尤其是畫面中的物體的外型是固定的,僅在尺寸以及位置上有所不同時。若要處理的影片是自然景觀或風(fēng)景片時,可以開啟GMC。使用該選項制作的影片可能只有XviD自己的解碼器才能正常解碼,若使用ffdshow等解碼器解碼可能存在兼容性問題,用前請考慮。
B-VOPs
[Top]
B-frame
[Top]
B-frame設(shè)定。若去掉該選項前面的對勾,則編碼中不使用B-Frame(簡稱BF,下同),只用IF、PF來壓。
Max consecutive BVOPs——最大連續(xù)BF數(shù)量。舉個例子,設(shè)置2,就是說在兩個PF之間(或IF/PF之間)最多會連續(xù)插入兩個BF,即…IF/PF BF BF PF…;如果設(shè)置3,則最多會出現(xiàn)三個連續(xù)BF,即…IF/PF BF BF BF PF…。此處,應(yīng)根據(jù)片源具體情況來設(shè)定,如果片源動態(tài)比較小,則可以適當(dāng)開大一些,比如3、4;如果碼率很充足或片源很復(fù)雜,包含大量大動態(tài)場景、運動不規(guī)則、場景切換頻繁等等,則應(yīng)減少BF用量,甚至不用BF。
請注意:多少個BF連續(xù)出現(xiàn),沒有數(shù)量限制(你可以設(shè)置成1,也可以設(shè)置成1000)。具體用多少XVID自行判斷,這個地方只設(shè)定最大值。
Quantizer ratio——BF的Q值倍數(shù)。計算BF的Q值的參數(shù)。
Quantizer offset——Q值計算偏移值。計算BF的Q值的參數(shù)。(BF的Q值計算方式下面解釋)
Packed bitstream——開啟BF的XviD制作的avi,在播放時會延遲一幀(就是以前播放時畫面第一幀的那個黑色畫面,告訴你該視頻使用了BF,如下圖)(制作成ogm、mkv、mp4則不會)。而Packed bitstream選項的作用是解決這個問題。不過開啟2個以上的連續(xù)BF并用到了Packed bitstream的時候,只有XviD的解碼器可以正常解碼。而用老版本的DivX/ffdshow解碼,水平移動的畫面會不順暢(畫面朝移動方向抖動)(ffdshow-20040225以后的版本解決了這一個問題)。
Closed GOV——在編碼新的IF之前插入一個PF來關(guān)閉前一個幀組,否則解碼時有可能出現(xiàn)問題。此選項要勾選。
BF的Q值的計算:BF的Q值由BF前后的IF/PF共同決定。
代碼:
BF的Q值=BF前后的IF(或PF)的Q值的算術(shù)平均數(shù)* Quantizer ratio+ Quantizer offsetBF是一個能有效提高壓縮率的功能,是否降低畫質(zhì),那要看如何設(shè)置了。有的設(shè)置壓出來的部分BF,Q值比PF還低。用最恰當(dāng)?shù)腂F設(shè)置來調(diào)節(jié)碼率,提高整體質(zhì)量,是非常有效的,設(shè)置地恰當(dāng)?shù)脑?#xff0c;會令全片的Q值分布相當(dāng)平均,可使DRF測試中的第二項——Standard Deviation 輕易達(dá)到“Quality is HIGH [Std. Deviation is 0.50]”,即動、靜態(tài)場景的畫質(zhì)一致,不會“靜態(tài)尚可而動態(tài)MSK驚人”。而且在用VHQ4壓片時還能省去不少時間,因為BF不像I、PF那樣要作VHQ4處理。通常情況下,全片BF含量在30%—55%左右,畫面效果與只用I、PF+VHQ4跑出來的畫質(zhì)無顯著差別。即省時又保證質(zhì)量,所以一般應(yīng)當(dāng)使用BF。
隨著XviD的Frame Type的不斷進(jìn)步(從0624版開始FrameType判斷較以前版本已經(jīng)有了相當(dāng)大的提高),大動態(tài)場景BF濫用現(xiàn)象已經(jīng)得到了較好的抑制(經(jīng)過實測,在碼率充足的情況下,大動態(tài)場景基本用IF PF PF PF PF… 來壓了),所以BF可以放心使用。
有些朋友對本部分設(shè)置可能還不是很清楚,的確,BF的設(shè)置是XviD中最難掌握的部分,參數(shù)需要精心搭配。
針對一些情況,本文給出了參考參數(shù)設(shè)置,請見附錄-BF推薦設(shè)置。
Motion標(biāo)簽
[Top]
Motion search precision——運動檢測精度,決定著給定碼率下的畫面質(zhì)量。等級越高,畫質(zhì)越好,速度越慢。一般選6而不選5,因為選5只快10%。
設(shè)置:
1 – 3: 基本沒有什么區(qū)別。
4-high:XVID使用半像素插值(half pixel interpolation=HPel=1/2像素)的技術(shù)達(dá)到更好的結(jié)果,而整個16x16的微區(qū)塊被標(biāo)示上兩幀之間的運動向量(譯者按:ffdshow有顯示這個向量的功能,很有趣)
5-very high:XviD 使用4分運動向量(inter4v motion vectors)的方式,即16x16的微區(qū)塊中的4個8x8區(qū)塊,被標(biāo)示各自的運動向量。
6-ultra high:運行更多邊的運動檢測(會減慢10%的編碼速度)。
VHQ mode——搜尋寬度。等級越高,畫質(zhì)越好,速度越慢。這個選項會很大幅度的降低編碼速度,若機(jī)器夠快,可選4。想了解更多VHQ的功能,請參閱本文附錄《VHQ模式》。
Use VHQ bframes too——在BF上應(yīng)用VHQ。在原先版本的XviD中,VHQ Mode是不被應(yīng)用在BF中的。但是從XviD1.1版本開始,只靠選中本選項,就可以在BF中應(yīng)用VHQ Mode了!
Use chroma motion——通過顏色信息來判斷動態(tài)。會降低編碼速度5%~10%,但是有利于畫面,推薦選擇。
Turbo——超級模式。更快的判斷BF和QP的動態(tài)。
Frame drop ratio——丟幀率,這個參數(shù)保持默認(rèn)值0,并且不要改變。
Maxinum I-frame interval——最大IF幀距。該參數(shù)一般為幀率的10倍。比如,一般DVDRIP的幀率為23.976fps,則該處就填寫240。有人喜歡認(rèn)為將這個值調(diào)小,以增加IF的數(shù)量,達(dá)到提高畫質(zhì)的目的。此項可根據(jù)片子情況適當(dāng)減小。但是在200以上為宜,如果太小會適得其反——文件OVERSIZE、IF占用大量碼率導(dǎo)致BF/PF質(zhì)量過低,反而不利于畫質(zhì)。
Quantization標(biāo)簽
[Top]
Quantization標(biāo)簽中的設(shè)定非常重要,直接關(guān)系到片子的質(zhì)量。
Min I-frame quantizer——IF的Q值最低值。
Max I-frame quantizer——IF的Q值最高值。
Min P-frame quantizer——PF的Q值最低值。
Max P-frame quantizer——PF的Q值最高值。
Min B-frame quantizer——BF的Q值最低值。
Max B-frame quantizer——BF的Q值最高值。
Trellis quantization——進(jìn)階高質(zhì)量量化模式。若選擇該選項,編碼器會選擇性的降低某些畫面的質(zhì)量,來達(dá)到最大限度的提高片子的整體質(zhì)量??膳浜螲.263量化方式使用。
各種類型幀的Q值設(shè)定需要注意以下原則
設(shè)置時應(yīng)盡量保證IF質(zhì)量,因為BF和PF的質(zhì)量都由IF決定。
由于XVID對于BF質(zhì)量的把握越來越好,比較黑暗的場面出現(xiàn)爛幀的幾率也有所減少,所以BF的Q值上限可以放心的設(shè)大一些。
有些朋友提出,不要限制Q值范圍,也就是全部都保留1/31的默認(rèn)值,讓XviD自行掌握Q值分配。筆者認(rèn)為這么講不無道理,但要看什么情況。在一些情況下,XviD自身的Q值分配算法是不能適應(yīng)某些影片的(比如通篇畫面都很昏暗的影片等等),這個時候,就需要我們手工來限制Q值范圍。也就是說,是否限制Q值、限制多少,并沒有一個確定的答案,而應(yīng)當(dāng)由片子本身的特性。有經(jīng)驗的RIPPER可以迅速的根據(jù)影片畫面判斷應(yīng)該如何配置,也就是所謂的“經(jīng)驗”。所以,Q值的設(shè)定應(yīng)由影片本身和制作要求靈活應(yīng)變,不應(yīng)一味追求所謂“理想值”。筆者認(rèn)為,這點是應(yīng)當(dāng)特別注意的。
綜合設(shè)置
[Top]
請注意,從xvid1.2開始,Debug功能被安排在了XviD Configuration項目中,按Xvid主窗口下方的Other options按鈕即可進(jìn)入。
Encoder
[Top]
FourCC used——FourCC 用以確定你編碼好的電影用什么樣的解碼器來播放,默認(rèn)值為"XviD",這意味著將使用"XviD directshow filters",保證了最大的質(zhì)量和兼容性。你也可以選擇使用"DivX 4.x"或"5.x"的解碼器來回放你完成的電影,但是它們不一定就能正常播放。
Number of threads——線程數(shù)。XviD針對現(xiàn)在逐漸流行起來的支持HT技術(shù)或雙內(nèi)核處理器做出了一些優(yōu)化。若您的處理器支持HT技術(shù)或有雙內(nèi)核,請設(shè)置為2,否則請保持默認(rèn)。
Print Debug info on each frame——在每幀上打印debug信息,非專業(yè)人員不要選:)
Display encoding status——顯示編碼狀態(tài),就是我們在壓制的時候看到的XviD Status窗口。如下圖:
Common
[Top]
Performance optimizztions——性能優(yōu)化。可以選擇特定的CPU指令集優(yōu)化。可以對編碼速度的提高起到一定作用。建議選擇自動選擇指令集優(yōu)化。
附錄
[Top]
如何知道1pass容量
[Top]
獲取1pass容量其實很簡單。當(dāng)大家開始用XviD壓制1st-pass的時候,XviD會跳出來一個狀態(tài)窗口,這個窗口會實時顯示壓制過程中各種各樣的信息。當(dāng)1pass壓制完成的時候,這個窗口會顯示1pass的最終結(jié)果。如下圖:
右邊紅框部分所示的容量即為1pass容量。用計算出來的2pass容量除以這個值,就能計算出來2pass/1pass比值了。
BF參考設(shè)置
[Top]
2-PASS/1-PASS比值在70%以上
[Top]
由于容量相對寬松,故限制了IPB的Q值范圍。
Max consecutive BVOPs --------- 2
Quantizer ratio --------------------- 1.20
Quantizer offset -------------------- 0.60
Quantization設(shè)置:2、2、2、3、2、4
2-PASS/1-PASS比值在60%--70%之間
[Top]
Max consecutive BVOPs --------- 3
Quantizer ratio --------------------- 1.30
Quantizer offset -------------------- 0.80
Quantization設(shè)置:2、2、2、4、2、5
2-PASS/1-PASS比值在50%--60%之間
[Top]
通過降低分辨率和/或使用降噪濾鏡降低壓縮難度,變相提升2-PASS/1-PASS比值。
Max consecutive BVOPs --------- 4
Quantizer ratio --------------------- 1.40
Quantizer offset -------------------- 0.80
Quantization設(shè)置:2、3、2、3、2、31
2-PASS/1-PASS比值在50%以下
[Top]
通過降低分辨率和/或使用降噪濾鏡降低壓縮難度,變相提升2-PASS/1-PASS比值。如果降低分辨率(直到你已不能接受的水平)和/或使用降噪濾鏡(畫面模糊到你已不能接受的水平)時,仍然不能將2-PASS/1-PASS比值提升到至少55%的水平,則考慮提高視頻文件體積,或者換用其它編碼器來完成壓縮工作(如VP6、RV10)。
這種方法可以保證制作出來的所有視頻文件的Average DRF/quantizer控制在2.5-3.5之間(I、PF的Q值為2或3),Std. Deviation控制在0.40-0.60之間。也就是說沒有明顯的壓縮瑕疵,如MSK、噪點等(其它需要配合的設(shè)置還包括:VHQ4、hvs系列量化模式)。
基本概念解釋
[Top]
本文用到了一些MPEG4中的基本概念,這些概念在本文中會經(jīng)常提及。所以這里特意為新手準(zhǔn)備了概念解釋,希望新手朋友在閱讀之前掌握這些概念。沒有收錄進(jìn)來的一些針對性較強(qiáng)的概念已經(jīng)在正文中進(jìn)行重點的解釋。
三種幀類型
[Top]
IF——I-frame的縮寫,即關(guān)鍵幀。關(guān)鍵幀是構(gòu)成一個幀組(GOP,Group of Picture)的第一個幀。IF保留了一個場景的所有信息。
PF——P-frame的縮寫,即未來單項預(yù)測幀,只儲存與之前一個已解壓畫面的差值。
BF——B-frame的縮寫,即雙向預(yù)測幀,除了參考之前解壓過了的畫面外,亦會參考后面一幀中的畫面信息。
量化方式
[Top]
H.263——推薦700~900K的碼率(比如1CD制作)時使用。保留畫面細(xì)節(jié)不及MPEG量化方式好,但可以達(dá)到較好的畫面降噪效果,可以讓畫面看起來更干凈一些。推薦壓制動畫使用本量化方式。H.263 的量化方法,顧名思義,就是使用 H.263 這個壓縮規(guī)格所使用的量化方法,量化的時候,8x8 的像素方塊內(nèi)的所有 DCT 系數(shù),全部除以同一個數(shù)字。(這個動作就叫做量化)例如全部都除以 32,如果有一個 DCT 系數(shù)為 15,小于 32,經(jīng)過相除之后,會被量化為 0,如此便可以省下很多記錄的 bits。當(dāng)然,除的數(shù)字越大,量化的誤差也就越大,品質(zhì)也就越差,但是壓縮率會越高,壓出來檔案會越小。我們會利用另一個參數(shù)來調(diào)整量化的誤差,控制最后量化的品質(zhì)和檔案的大小,這個參數(shù)叫做 Quantizer。量化的系數(shù)會再乘上這個 Quantizer 的倍數(shù),例如原本要除的量化系數(shù)是 32,Quantizer 是 2,對應(yīng)的放大倍數(shù)也是 2,最后真正要除的量化系數(shù)就變成 32*2=64。所以 Quantizer 越大,要除的量化系數(shù)就越大,量化誤差就越大,品質(zhì)就越差,但是檔案也越小。H.263 的量化方法還規(guī)定,相鄰的兩個 MacroBlock 的Quantizer 不能相差超過 2。
MPEG——建議高碼率情況下(比如2CD制作)使用,能保留較多細(xì)節(jié),但在某些情況下可能造成噪聲等副作用。若在制作動畫時使用,可能引起色彩過度不自然、顏色邊界處出現(xiàn)噪聲等副作用,此時,可搭配Cartoon Mode降低這些副作用。MPEG 的量化方法,高低頻系數(shù)可以除以不同的量化系數(shù),可以視情況將高頻削多一點。這個 8x8 的量化系數(shù),也就是 Quantize Matrix(量化矩陣)。
MPEG Custom——可以加載MPEG自定義量化模板。你可以依照影片特性,自訂最適當(dāng)?shù)牧炕仃?。比?#xff0c;壓電影的時候常用的hvs-best-picture模板可以兼具M(jìn)PEG和H.263量化方式的優(yōu)點,即畫面細(xì)節(jié)和降噪都能得到兼顧。若要采用MPEG Custom量化方式,點擊Edit Matrix…按鈕加載想要的量化模板即可。本選項只建議對于量化模板有較深研究的專家使用。XviD1.0安裝目錄下有一個XviD_Quant_Matrices.zip,里面包含了數(shù)種常用的量化模板,比如有名的HVS量化系列,在DOOM9網(wǎng)站或論壇上可以找到更多的量化模板。
噪聲
[Top]
這里所謂“噪聲”,并不是我們能夠聽到的實際意義上的噪聲,而是指的畫面上不斷閃動的亮斑點或色斑點。畫面出現(xiàn)噪聲一般有以下幾方面原因:1.電影:由于膠片本身的感光性能或采集過程不佳造成(老片尤其嚴(yán)重);2.動畫:TVRIP錄制時電視信號存在干擾(也就是我們常說的“雪花”);3.采用了VHS或老舊的LD片源;4.由于壓制不良,導(dǎo)致色彩之間的邊緣處有細(xì)小的色斑存在(看起來像“馬賽克”)。這些噪聲在畫面上不停的閃爍、移動,造成驚人的碼率浪費。因此需要盡量將這些噪聲“過濾”掉,以節(jié)省碼率,增高片子的整體質(zhì)量。要想過濾噪聲有許多方法,比如在AVS腳本中加入降噪濾鏡等,但這不是本文討論的重點。
Q值(即DRF值)
[Top]
在編碼時,為了達(dá)到某個碼率,mpeg4編解碼器會對每一幅畫面進(jìn)行壓縮。而壓縮程度則取決于碼率、圖像內(nèi)容的復(fù)雜度及動態(tài)大小。對于每一幀,一旦確定怎樣去壓縮以后,就會產(chǎn)生DRF值。DRF值為2的時候,效果最佳(在XVID中,quantizer還可能達(dá)到1)。DRF值等于31時,效果最差。8以上的DRF值,可被認(rèn)為效果很差。DRF/quantizer實際上代表了編碼器在降低幀大小時所丟棄的信息量。
Bits/(Pixel*frame)
[Top]
數(shù)據(jù)密度。碼率并不是視頻/音頻質(zhì)量的唯一指標(biāo),一個更重要的指標(biāo)是Bits/(Pixel*frame) (數(shù)據(jù)密度),它反映了平均記錄每象素所用的數(shù)據(jù)量。如果Bits/(Pixel*frame)比較低,那么DVDrip的視頻流中I幀間的預(yù)測幀(P幀/B幀)的誤差會比較大,視頻質(zhì)量會下降,(MSK等…)。制作DVDRIP的軟件(例如GK)都要計算/給出這個Bits/(Pixel*frame)值。一般認(rèn)為,較好的視頻質(zhì)量需要Bits/(Pixel*frame)>0.2(如左圖)。
Video Size/1st Pass Size
[Top]
除了碼率和Bits/(Pixel*frame)之外,Video Size/1st Pass Size 也是一個質(zhì)量指標(biāo)。DVDRIP壓制時,碼率的分配不是線性的,變化的(動作)場景的碼率將會高,而靜態(tài)場景的碼率低。Twopass-1st pass就是用于確定碼率分配。而后,根據(jù)設(shè)定的最終文件大小,將算出的碼率分配曲線等比例壓縮,得到最終Twopass-2nd pass的碼率曲線。Video Size/1st Pass Size反映的就是這個壓縮比。一般認(rèn)為,較好的視頻質(zhì)量需要Video Size/1st Pass Size >55%。
曲線壓縮與線性壓縮
[Top]
(作者:Silky,收錄時略有改動)
「曲線壓縮」的意思就是將碼率較大的幀拉下來,降低一點碼率,碼率較小的幀補(bǔ)上去,提高一點碼率。也就是將原本上下震蕩的碼率曲線變平一點,最大和最小的差距不要那么大。壓得越平,碼率曲線就越接近一條固定的直線,也就是變成近似于CBR。不過這樣實在很沒有意義不是嗎?本來碼率高的幀,就是因為這個幀需要較多的碼率紀(jì)錄,你現(xiàn)在把它拉下來,畫質(zhì)豈不更慘?而碼率低的幀,就是不需要花那么多碼率記錄的幀,你又給它多補(bǔ)一些碼率,豈不浪費?
根據(jù) Koepi 的說法,當(dāng)碼率極低的時候,很多幀的碼率都不夠。此時如果把少數(shù)幾個碼率很高的幀拉低一點,把省下來的碼率分給其它幀,立刻會對這些游走在底線邊緣的幀的畫質(zhì)有很大的幫助。曲線壓縮的目的便是犧牲少數(shù)幾個幀,讓大部分的幀增進(jìn)畫質(zhì)。而,這少數(shù)幾個碼率超高的幀,又通常都是高動態(tài)的畫面。人眼對高動態(tài)的畫面比較無法精確的判斷、分辨出畫質(zhì)的好壞。所以犧牲這幾個幀,增進(jìn)大部分時間看起來的品質(zhì),可以說是相當(dāng)劃算。好像還蠻有道理的。不過如果曲線壓縮的參數(shù)設(shè)定得不好的話,對畫質(zhì)會有很大的傷害,而且在不是超低碼率的情況下,曲線壓縮也沒有意義。所以最好的作法還是,讓編碼器自行視情況調(diào)節(jié),使用自由的 VBR,這樣壓出來的結(jié)果會越接近 CQ「固定品質(zhì)」。(當(dāng)然,如果碼率實在設(shè)得太低,CQ 壓出來的結(jié)果就是「固定爛品質(zhì)」 這時適當(dāng)?shù)倪\用曲線壓縮,以少換多,就有它的價值了) 。
經(jīng)過許多人的測試經(jīng)驗,最后的結(jié)論就是 linear scaling「線性壓縮」的結(jié)果最好。 線性壓縮時,1st pass與曲線壓縮無異,只是2nd pass的時候,就直接把 1st-pass 壓出來的碼率曲線按一定比例整個往下平移,降低碼率,達(dá)到你所設(shè)定的目標(biāo)大小為止。由于曲線只是整個往下平移,使得最終的碼率變小,而不改變其原本的震蕩幅度,所以稱為「線性的調(diào)整大小」。 線性壓縮使原本復(fù)雜,需要高碼率的畫面還是分到較多的碼率;簡單,不用太多碼率的畫面也不會浪費了碼率。線性調(diào)整壓出來的結(jié)果較接近「完美的 VBR」,也就是固定的平均品質(zhì),不會有幾個幀突然發(fā)生明顯劣化的情況。
使用線性壓縮的方法很簡單,2nd-pass的時候,把Two Pass設(shè)定底下的High bitrate scenes degradation % 和 Low bitrate scenes improvement % 兩個設(shè)定都設(shè)為 0,這樣跑 2nd-pass 的時候就會自動根據(jù) XviD Codec 內(nèi)建的 scaling 算法,做線性調(diào)整。
VHQ模式
[Top]
VHQ與IF、BF、碼率控制沒有任何關(guān)系,但VHQ越高,圖像的品質(zhì)越高。
MPEG系的編碼器在壓縮時以每個16x16像素塊大小的MacroBlock為單位進(jìn)行動態(tài)預(yù)測。在VHQ模式下,它先是進(jìn)行簡單的block-mode-decision(區(qū)塊模式判定),其間會對畫面內(nèi)的每一塊MacroBlock施以優(yōu)化,然后再按三個不同檔次(VHQ2、VHQ3、VHQ4)作進(jìn)一步動態(tài)預(yù)測,從而更進(jìn)一步的減少紀(jì)錄信息所需要的容量。
使用VHQ(特別是VHQ4)可以降低Q值、使畫面更干凈、保留更多的細(xì)節(jié),但這些都只是VHQ的副作用,VHQ的主要功能是提高壓縮效率(當(dāng)Q值一定時,令文件體積更小),以便更好的達(dá)到目標(biāo)文件大小。
注意:
在1-PASS過程中,VHQ模式處于自動關(guān)閉狀態(tài),因此不必?fù)?dān)心兩個PASS之間的設(shè)置不同。
在XviD 1.0正式版中,VHQ模式已經(jīng)能與BF、Quarter Pixel、Chroma motion、Adaptive Quantization、GMC功能同時開啟使用了。
后記與人員列表
[Top]
整個XVID的重要參數(shù)到這里差不多都介紹完了。筆者還是堅持一點:每個片子都有其自身特點,要想用一套“萬用參數(shù)”來“通吃”所有片子是不可能的。有朋友非常心急,一上來就要找出來一套適用于手頭這部片子的“理想值”,但是這樣往往以失敗告終。所以壓片之前,不要怕麻煩,多抽幾段來試壓,然后根據(jù)每個參數(shù)的作用進(jìn)行配置,相信你會制作出優(yōu)秀的DVDRIP。
XviD是一款相當(dāng)強(qiáng)大的MPEG4編碼器,如果參數(shù)配置得當(dāng),再配合良好的AVS腳本的話,可以制作出來容量只有DVD容量的1/5(MP3音頻),但畫質(zhì)和DVD相比絲毫不差的影片!到現(xiàn)在為止,XviD仍然有很大的潛力可以發(fā)掘。希望大家永遠(yuǎn)不要停止探索的腳步,去獲得更好的質(zhì)量!
本文的編寫及內(nèi)容不斷豐富、修訂的過程中,得到了很多朋友的幫助,在這里,編者dgwxx向他們表示最誠摯的謝意。另外:如果您撰寫文章或創(chuàng)作其他作品(如編譯自己版本的XVID)的時候引用了本文的內(nèi)容,請一定要注明哪些內(nèi)容出自本文,這是對于作者們的尊重,同時也有助于技術(shù)的交流。在線版本的放出,間接解除了強(qiáng)制復(fù)制保護(hù)。您現(xiàn)在可以任意復(fù)制本文的任何文字、圖像內(nèi)容。但是這個許可僅限于用作技術(shù)交流,任何用于商業(yè)行為的復(fù)制行為、任何惡意抄襲均將受到本文作者團(tuán)隊的最嚴(yán)厲追究。
本文由多位作者共同完成。
參與編寫的作者名單(依照字母順序排列):Bopirit、Dgwxx、RKinGBo、tct66、大衛(wèi)
感謝以下朋友(按內(nèi)容時間先后排列):
Nemolus——在2.0版本修訂過程中提出了大量意見、建議。
DvDSharer——一些概念解釋;提出2.0版的修訂。
Skywalker——Global Motion Compensation的改正意見。
本文編寫過程中參考的資料:《高品質(zhì)DVDRIP制作進(jìn)階教程》(作者DvDSharer)、《XviD-1.0的設(shè)置參考》(作者tct66)、《XVID的中文化解釋》(作者大衛(wèi))、《XVID中文設(shè)置全釋1.3+》以及DOOM9.org的相關(guān)英文資料。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
以上是生活随笔為你收集整理的xvid 详解 代码分析 编译等的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言中可以定义变量吗?怎么定义?有局
- 下一篇: dotNetCharting使用总结