xvid 详解 代码分析 编译等
1.?? Xvid參數詳解
眾所周知,Mencoder以其極高的壓縮速率和不錯的畫質贏得了很多朋友的認同!
原來用Mencoder壓縮Xvid的AVI都是使用Xvid編碼器的默認設置,現在我來給大家沖沖電,講解一下怎樣使用Mencoder命令行高級參數制作Xvid編碼格式AVI影片。經過測試,可以毫不夸張的說:在減小50%的文件體積同時能夠保持原有畫質!
大家平時用WisMencoder壓縮電影的時候也許會感覺到雖然它速度飛快,但是關于Xvid編碼器的設置卻少得可憐!并沒有完全發揮出Xvid編碼的優勢!
首先介紹一下這些高級參數的作用:
cartoon——卡通模式
vhq=4——VHQ MODE,有0-4五個值,越大畫質越好,但是編碼速度越慢
chroma_me——動態檢索
max_key_interval——最大關鍵幀距離
Quant_type=mpeg——量化矩陣,Mpeg模式,如果壓縮時去掉這段就默認量化矩陣為H.263
trellis——高質量量化模式
GMC——全域動態補償
qpel——四分之一像素精確動態補償(如果使用了該功能則可能降低解碼速率,建議不用)
bvhq=1——在B幀上啟用VHQ
lumi_mask——加大畫面明暗部分壓縮率(一般不用,有時會導致畫面失真)
greyscale——使用灰度,但是便出來的畫面是黑白的(一般不使用)
interlacing——隔行處理,適用于交錯片源(一般不使用)
chroma_opt——色度優化
Quantization量化選項(關鍵的關鍵就在這里!)
量化器級別(quantizer level)即Q值越高畫面細節越豐富,但是在低碼率下越高的量化器級別,會帶來越低的畫面質量,Q 值越小,質量越好,碼率越大;Q 值越大,質量越差,碼率越小。(實際上,它的原始概念更復雜,我們干脆簡單地認為1就是100%原質量,31就是1/31的原質量好了)。P-frame(即未來單項預測幀)建議設置在1--15之間,(它的作用是只儲存與之前一個已解壓畫面的差值。即僅僅描述它與前一幀的區別)。I -frame(即關鍵幀)的Q值只用能作用于2pass-second壓制上,在VirtualDub被標示為 [K],關鍵幀是構成一個幀組(GOP, Group of Picture)的第一個幀。I-Frame 保留了一個場景的所有信息(Keyframe原意是指可以單獨解碼、用于同步的 frame,不過在MPEG系統中只有I-frame有這個特性,因為BF和PF都是預測幀,要靠I-Frame來還原)。B-frame(即雙向預測幀)除了參考之前解壓過了的畫面外,亦會參考后面一幀中的畫面信息。這三個設置的范圍都是1-31,應該注意的是在場景昏暗的條件下不要讓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?????????????????? 快速二次線性(默認)(速度較快)
1?????????????????? 二次線性
2?????????????????? 二次立方(質量很好)
3?????????????????? 實驗中
4?????????????????? 最短距離 (bad quality)
5?????????????????? 區域
6?????????????????? 亮度二次立方 度二次線性
7?????????????????? 高斯
8?????????????????? sincR
9?????????????????? lanczos(速度較快,而且畫面銳利)
10?????????????????? 雙三次樣條曲線
實際應用舉例:
把
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的手動參數中的視頻編碼處,如本樓底部圖片:
然后再把 -sws 9 參數添加到視頻濾鏡處即可!記得-sws 9前一定加個空格,要不編碼器不會啟動!
當然你也可以自己摸索適合的方案,做出效果更佳的方案!
Xvid大概介紹:(個人認為XVID編碼比DIVX編碼的畫質更好,故只講XVID的參數。了解以下內容對轉換影片有一定幫助,尤其是要放在硬盤上用PC觀看的視頻,當然對轉換成手機觀看的影片也是有好處的,使你不至于盲目的轉換)
???????????????????????????? (此文是參照電腦雜志上的介紹而寫,在此感謝寫出那篇文章的作者。所涉及到的圖片是自己抓的,文字也是一個一個字打出來的,并非從網上轉抄,我無非是想讓有興趣于此道的朋友更多的了解xvid這個編碼器)
如果在網頁上看不太清楚的圖片,請下載到個人電腦上查看
xvid有兩種編碼方式:single pass和twopass
single pass模式編碼簡單,速度也快,但最終效果不如twopass。
twopass就是視頻壓制需要經過兩次編碼,分別為twopass-1st pass(簡稱1pass)和twopass-2nd pass(簡稱2pass)
1pass時,編碼器會用最高質量編碼采集可供第2次運算參考的畫面信息,而在2 pass時。編碼器會根據第一次壓縮獲得的信息和用戶指定的文件大小,自動分配比特率,使需要高流量的運動畫面分配到更多的空間,更高的比特率來保證畫面質量。相對的,對于那些不包含太多運動信息的靜態畫面則用較低的比特率。追求畫質的朋友當然會選擇這種方式,但運算比single pass更費時。
接下來介紹一些基本概念:
Q值——量化值,它被用來描述1幀的質量,每幀都有一個Q值,取值范圍在1-31之間。Q值越小,畫質越好,比特率越大
I-frame——關鍵幀,常被縮寫為IF。關鍵幀是構成一個幀組的第一幀。IF保留了一個場景的所有信息
P-frame——未來單項預測幀,縮寫為PF,只儲存與之前一個已解壓畫面的差值
B-frame——雙向預測幀,縮寫為BF,除了參考之前解壓的畫面以外,也會參考后一幀的畫面信息
第一步:Profile@Level(框架級別)設置
選擇Profile@Level旁的more按鈕來進行框架設置。Profile@Level里方案的層級越低,編碼的比特率及分辨率限制的越多。在制作 DVDrip時一般選擇AS@L5或者unrestricted(不限定比特率,讓編碼器自行分配)。我在制作手機影片時通常選用AS@L5,因為可選擇的方案更多,而且比特率可自己隨意調節,只要手機能跑的動就行!!
(注意:在single pass模式下,Profile@Level的設定無效,由編碼器自行分配比特率)
第二步:Encoding type(編碼類型)設置?????????? (這里是重中之重)
第1種方式:
single pass,求快可以用這種一次性編碼來壓縮視頻。但因為每幀的壓縮率相同,流量自行分配,所以壓縮后的視頻容量無法控制。 single pass有Target quantizer和Target bitrate兩種模式,在主界面的Encoding type里先選擇 single pass,再點擊左下方的Target XXX按鈕在兩種模式中進行切換
名詞解釋:
Target bitrate——目標比特率模式。選擇平均比特率編碼,相對容易控制文件大小。
Target quantizer——目標Q值模式,采用動態比特率編碼。設置為“1”是最高質量,31是最低質量。設置為2是容量與效果的最佳比,但文件體積很大,可以設置小一點的數值,例如2.5,如果不確定,可以按主界面上的“calc”按鈕計算目標容量大小(詳細的計算方法請看下一節)
如何用calc計算容量:
Target size:目標容量的大小,舉例來說,如果我們想將視頻容量控制在1CD以內,由于1M等于1024KB,所以其值不能高于716800KB。
subtitles:選擇此項能將外掛字幕的大小納入計算
container:按照你想制作的最終視頻格式選擇
video:設定視頻長度及fps
Audio:設定音頻格式
第2種方式:
為了保證視頻的質量,很多時候我們會選擇twopass模式來壓縮視頻
step 1:
在主窗口的“Encoding type”下拉菜單中選擇1pass模式,再點擊旁邊的more按鈕。在彈出的窗口中勾選 “Discard first pass”(不輸出第一次運算結果)否則可能生成一個高達幾GB的無用文件。 “full quality first pass”是指優質進行1pass,通常這是沒必要的,這樣反而會降低1pass的編碼速度
step 2:
再返回到主窗口,在“Encoding type”下拉菜單中選擇2pass模式,點擊旁邊的more按鈕進行設置。
首先點擊“stats filename”這一欄的按鈕,選擇在1pass編碼時生成的*.pass文件。
其余講解請看圖
以上介紹了兩種編碼方式,現在講一下視頻的優化:
01.Advanced Options:
Motion search Precision(運動檢索精確度):設定運動檢測的精密度,數值越高,文件轉換時間越長,建議選用“6-ultra High”
VHQ mode(VHQ模式):根據人類視覺特性進行建模,可以使肉眼可分辨的區域壓縮的好一點,從而提升肉眼所見部分的視頻質量。若想效率與質量兼顧,可以將VHQ設置為1,若想求得最佳畫質則可以將VHQ設置為4
Use VHQ for bframes too:對BF也使用VHQ模式
Use chroma motion:使用chroma(色度)信息來動態計算,雖然會增加編碼時間,但可以有效地防止色塊和亮塊,建議選擇
Turbo:開啟BF時可以提高編碼速度,但會降低一點畫質,不建議選取
Frame drop ratio(丟幀率):保持為0,因為我們希望每一幀都被編碼
Maximum I-frame interval:最大IF幀距,一般為幀率的10倍。例如一段視頻的幀率為24,則該處就填寫240,最好是維持為240,這樣可確保每240幀就會有一個IF。如果場景變換偵測出需要插入IF的幀數小于這個值的話,它就會重新計算
02.Quantization(量化)設置:
設定IF/PF/BF最小及最大Q值,從XVID1.1開始,它的流量控制做的很好,在比特率足夠的情形下,不會出現過高的Q值,保持默認可防止目標容量超出或者小于設置的情況。但在single pass模式下設定Q值是無效的
Trellis quantization:在2pass模式下可以提升畫質,但在single pass模式則會使畫質有一些下降,容量也有所減少
03.Debug設置:
Performance optimizations:性能優化,可以選擇特定的cpu指令集優化,建議選擇第一項
Fourcc used:默認值是xvid,改變此設定可以讓你使用divx等其他播放filter來播放,但有時會不兼容,建議不修改此項設置
04.Zone options設置:
zone其實就是將影片劃分為幾段,分別為這些片斷定制一些設置(此項設置用于轉換pc上觀看的影片較多,在此不作細講)
小提示:如果在片頭之類非重要片段使用Quantizer模式,應該在1pass中也使用相同的設置。而若要用Weight模式則只需要在2pass中設置即可
至此,xvid的參數設置已講解完了,有興趣于此道的朋友可以多作嘗試,找出適合你的具體參數。
我先獻丑了,把自己的參數設置提供給大家
手機機型:QD
片源:一般都是網上下載的AVI文件
轉換軟件:TMPGEnc3XP
視頻編碼器:xvid
編碼參數:幀率:15fps?? ,碼率:128-160kbps(動畫片的碼率有時更小) 編碼方式:single pass(上傳到論壇的視頻都是用的 single pass,主要是為了節省時間,而且手機不能支持較高的碼率,故個人感覺在此single pass和twopass差別不大。如果用于 pc上,還是建議用twopass) 其余的設置均是參照上文
音頻編碼:MPEG Layer-3???????? 32000hz?? ,48kbps?? CBR?? ,Mono
濾鏡:只在加字幕文件的時候用到,一般是制作的SRT字幕,濾鏡是Text Sub2.23
如果有朋友經常用DIVX編碼,請發個帖子作一下詳細的介紹,大家交流一下經驗!!!
2.??
Xvid命令行高級參數詳解
Xvid編碼高級參數: 壓縮過程中的視頻碼率建議不要超過192Kbps(因為對于加入了手動參數的Xvid編碼器,畫質提升是相當明顯的),強烈建議用2-Pass壓縮! 首先介紹一下這些高級參數的作用: cartoon:卡通模式,非卡通則去掉此參數vhq=4:VHQ MODE(動態搜索算法),有0-4五個值,越大畫質越好,但是編碼速度越慢
me_quality=6: 動態搜索精度(6為精度最大值)
chroma_me:動態檢索 ,色彩動態評估 max_bframes=0 :B幀最大間距,設為0表示關閉B幀功能
profile=XXX :小于等于15fps設置為sp3,大于15fps設置為asp3
max_key_interval=XXX :最大I幀(關鍵幀)間隔,一般設置成幀數的10倍
Quant_type=mpeg:量化矩陣,Mpeg模式,如果壓縮時去掉這段就默認量化矩陣為H.263
trellis:高質量量化模式
GMC:全域動態補償
qpel:四分之一像素精確動態補償(如果使用了該功能則可能降低解碼速率,建議不用)
bvhq=1:在B幀上啟用VHQ
lumi_mask:加大畫面明暗部分壓縮率(一般不用,有時會導致畫面失真)
greyscale:使用灰度,但是便出來的畫面是黑白的(一般不使用)
interlacing:隔行處理,適用于交錯片源(一般不使用)
chroma_opt:色度優化 ,色彩最佳化
Quantization量化選項(關鍵的關鍵就在這里!) 量化器級別(quantizer level)即Q值越高畫面細節越豐富,但是在低碼率下越高的量化器級別,會帶來越低的畫面質量,Q 值越小,質量越好,碼率越大;Q 值越大,質量越差,碼率越小。(實際上,它的原始概念更復雜,我們干脆簡單地認為1就是100%原質量,31就是1/31的原質量好了)。P- frame(即未來單項預測幀)建議設置在1--15之間,(它的作用是只儲存與之前一個已解壓畫面的差值。即僅僅描述它與前一幀的區別)。I- frame(即關鍵幀)的Q值只用能作用于2pass-second壓制上,在VirtualDub被標示為 [K],關鍵幀是構成一個幀組(GOP,Group of Picture)的第一個幀。I-Frame 保留了一個場景的所有信息(Keyframe原意是指可以單獨解碼、用于同步的frame,不過在MPEG系統中只有I-frame有這個特性,因為BF 和PF都是預測幀,要靠I-Frame來還原)。B-frame(即雙向預測幀)除了參考之前解壓過了的畫面外,亦會參考后面一幀中的畫面信息。這三個設 置的范圍都是1-31,應該注意的是在場景昏暗的條件下不要讓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 快速二次線性(默認)(速度較快)
1 二次線性
2 二次立方(質量很好)
3 實驗中
4 最短距離 (bad quality)
5 區域
6 亮度二次立方 度二次線性
7 高斯
8 sincR
9 lanczos(速度較快,而且畫面銳利)
10 雙三次樣條曲線
實際應用舉例: 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的手動參數中的視頻編碼處,然后再把 -sws 9 參數添加到視頻濾鏡處即可!記得-sws 9前一定加個空格,要不編碼器不會啟動!當然你也可以自己摸索適合的方案,做出效果更佳的方案!
3.?
詳解Xvid編碼格式
XviD簡介 XviD是當宿世界上最常用的視頻編碼解碼器(codec),而且是第一個真正開放源代碼的,經由過程GPL協議發布。在良多次的codec斗勁中,XviD的默示令人詫異的好,總體來說是當前最優異、最萬能的codec。
編纂本段XviD的主要性 近五年來,XviD一向是世界上最風行的視頻編碼器。估量在BT(BitTorrent)和eMule上至少90%的片子、電視劇是用XviD壓制的。可是在中國的情形有些特殊,因為中國的影視發布者喜歡用RMVB名目。
編纂本段文件擴展名 XviD的文件擴展名可所以AVI、MKV、MP4等。需要聲名的是,僅從擴展名并不能看出這個視頻的編碼名目。好比說一部片子是.avi名目,可是實際上的視頻編碼名目可所以DV Code,也可所以XviD或者其他的;音頻編碼名目可所以PCM、AC3或者MP3。
MP4和MKV名目比AVI更前進前輩,支持更多的功能,好比字幕。AVI視頻的字幕需要另外的SRT文件。當前國外絕大大都的影視資源都是AVI名目。
編纂本段XviD文件的大小 網上的視頻資源大都采用固定碼率(CBR),所以文件大小很不變,并不會因為資源發布者的差異而改變。
1. 一集43分鐘的劇集,文件大小為350MB左右。按照每季22集計較,一季美劇需要7.5 GB的硬盤空間。
2. 一集22分鐘的劇集,文件大小為175MB左右。
3. 片子文件的大小由片子的長度抉擇。
編纂本段XviD影視資源的文件名寄義詮釋 國外電視劇建造組發布的歐美電視劇,其文件名的具體寄義
劇名.S季數E集數.集名(有的沒有標).旌旗燈號采集源.音頻編碼(默認的MP3可以不標).視頻編碼-建造組
例如:
Prison.Break.S02E01.Manhunt.HR.HDTV.AC3.5.1.XviD-DiMENSION
劇名 - Prison Break
S季數 - S02
E集數 - E01
集名 - Manhunt
旌旗燈號采集源 - HDTV
音頻編碼 - AC3.5.1
視頻編碼 - XviD
建造組 - DiMENSION
編纂本段XviD技術的降生過程 在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 應用沙場。
編纂本段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 跟 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) 體例和規模節制 量化 (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 還供給了不少附加功能。其中典型的就是心理視覺亮度改進。這個功能可能經由過程去除肉眼不能分辯的亮度旌旗燈號和亮度差異,來提高壓縮效率。遺憾的盡管這個設計很是的有創意,可是當前的實際應用中卻會導致肉眼可見的畫面質量下降,還等候在日后的版本中可以有所改良。 演人員表選項 另外一個貼心的設計是片子專用的"演人員表選項"。這個功能可以在用戶指定的某些不需要保留細節的段落處 (例如片子的演人員表),設定下極低的碼流。甚至壓縮到正片碼流的10%以下,可以節約不少空間,設計的也很是的貼心。 外部自界說節制 除了 XivD 自己的內部曲線分配節制體例外,XviD 也供給了外部的開放接口。許可使用者略過 XviD 自己的編碼剖析焦點,操作第三方供給的外部剖析對象,例如Gordian Knot,生成的分配好的節制檔案,再交還 XviD 做最終的二重運算壓縮。這種體例擴展了 XviD 的可用性和用戶節制水平,因為像 Gordian Knot 這種軟件甚至可以做到由用戶節制每一幀的量化幅度和碼流分配額度,可覺得高級應用供給更多的可能性。 行為向量加速編碼 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 編碼的優勢闡揚到極致,成為網上視頻記實名目的牛耳。 關于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上都能找到。
若何播放XviD視頻 對于大大都用戶來說,只要安裝暴風影音或者K-Lite Codec Pack就可以順遂地播放XviD視頻了。其實這些播放軟件大都是用ffdshow來解碼的,所以在播放視頻的時辰,Windows義務欄會呈現ffdshow的圖標。
4.
XVID內嵌時的參數測試
這是一個XVID編碼測試,主要為RAW為AVI的內嵌使用。目標是個頭小而畫質好。缺一不可。針對其中比較重要的Q值、B值、single pass與Twopass做了較為密集的測試,其他選項盡可能采用了默認值,以便結果更為客觀。另比如“Begin with keyframe”等幾個少數主要是為修正兼容性的或者色彩優化的選項則被勾選。 概念部分主要參考并拷貝了《[SilkyBible] 視頻知識系列》與《XVID 1.0參數詳解21b.pdf》。說實話,我看的好痛苦@0@,而且為了便于理解。因此,下面說明或推測時都會以比較極端的例子來說明。如果有理解偏差的地方,大家請無視而pass。然后順帶轉告一下偶吧。先了解一些必要的概念。看完概念后可以直接看綠色字體的結論。然后反過來看分析。這樣思路會較為清晰。
Q 值——Q 值是指量化值。顧名思義,Q 值用來描述一個幀的質量,每個幀都有Q 值。該值取值范圍是1~31。Q 值越小,質量越好,碼率越大;Q 值越大,質量越差,碼率越小。(實際上,它的原始概念更復雜,我們干脆簡單地認為1就是100%原質量,31就是1/31的原質量好了)。具體到一個片子的某一個幀的Q的取值:該值由編碼器編碼的時候根據該幀的顏色、與跟前/后幀的動態關系等自動確定,例如如果編碼器認為該幀很重要,就會提高Q值來壓制,以獲得更高的質量。當然我們也可以指定它的取值。
IF——I-frame 的縮寫,即關鍵幀,在VirtualDubMod被標示為 [K] 。關鍵幀是構成一個幀組(GOP,Group of Picture)的第一個幀。IF 保留了一個場景的所有信息(Keyframe原意是指可以單獨解碼、用于同步的frame,不過在MPEG系統中只有I-frame有這個特性,因為BF和PF都是預測幀,要靠IF來還原)。具體例子:電影通常1秒鐘播放24幀,所以它1秒鐘有24幅不同圖象。設想有24幅鳥的圖象,在第一幅里鳥在圖的左側,然后它逐漸向右移動。在第24幀鳥已經在圖象的最右側了。設想這24幅圖象以足夠快的速度按順序播放,那么人眼看來就好象這鳥從屏幕的左側飛到了右側。
PF——P-frame 的縮寫,即未來單項預測幀,只儲存與之前一個已解壓畫面的差值。即僅僅描述它與前一幀的區別(雖然描述的不甚準確但相信理解含義并非難事)。比如說有一幅一只小鳥飛過一片有云彩天空的圖象,這是個關鍵幀(keyframe)。然后我們可以使用I幀來這樣描述P幀:將小鳥向左和下方各移動一英寸。
BF——B-frame 的縮寫,即雙向預測幀,除了參考之前解壓過了的畫面外,亦會參考后面一幀中的畫面信息。B 幀具體怎樣描述預測變化很復雜,下面以一個不很恰當的動畫例子來說明一下它最主要的存在效果:
如果一個片子是24fps的,總長度為25分鐘、那么它的總幀數為25min*60s/min*24fps=36000幀。這個是固定值。可以全是IF,也可以是IF混合著PF,或者IF、PF、BF都有。但是IF不能沒有,都靠它還原呢。哪個個數增多,另外兩個就要相應減少。因此,多使用PF可以不減畫質下減小體積,加入BF會進一步減小體積。至少理論上是這樣的。(BF是雙向預測,主要記錄變化值,因此可以少記錄信息(事實雖并非如此,但就通常的效果來說記錄量會減少,而PF是單向,因此記錄量通常來說會多些))。除了壓縮率以外,B 幀對畫質的影響也是有的,因為 B 幀這種參考前后畫面的特性,等于有內插(interpolation)的效果,所以可以減少噪訊。
概念部分終于說完了。OK,下面測試數據正式粉墨登場。請看分析所用的截圖:這是內嵌時的狀態圖。當內嵌完成后把這個最終狀態截取。片長1分32秒,30.303 fps,共計2815幀。內嵌所用的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)
##亮度濾鏡(色度,飽和度,亮度,對比度),一般把亮度設為16-18就很亮了##==================================================================
測試用源文件相關信息(草莓100%的OP),個人認為它各方面比如動態、畫面清晰度等均屬中等:
文件 : 39 Mb (39 Mb), 總長度 0:01:32, 類型為 AVI, 1 音頻流, 品質 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影碟的數據流的速率(bitrate)能夠達到5000Kbps~10000Kbps,而目前常見的DVDRip通常具有1200Kbps~2000Kbps的速率,此時DVDRip的視覺效果與AVI文件的壓縮比能夠達到比較理想的平衡狀態。如果追求優秀的視覺效果,我們可以將速率提高到2000Kbps;如果希望得到體積更小的AVI文件,可以使用小于等于1000Kbps的速率。另外DVDRip通常采用的采樣率為48kHz,音頻速率為96Kbps或128Kbps的MP3音頻。
籠統地說,XVID比DIVX的壓縮率更高,因此,同樣質量的幀,XVID可以用更小的體積來達到。另外,無論DIVX也好, XVID也好,它們原本的用途是把DVD壓縮成DVDrip。當我們拿到AVI時,已經是壓縮過的啦。那些所謂的2pass/1pass比值等其實是針對DVD to DVDrip而考慮,為了提高2pass/1pass比值而縮小畫面大小也是為了DVD to DVDrip而考慮。因此當我們內嵌AVI時,非特殊目的,以拿到與原AVI文件同樣畫質為最好。低了其實是再壓縮,除非你要求更小的體積。因此,用XVID重編碼時,強烈建議把目標碼率盡可能設置成原文件碼率。
這一段不太容易理解目的所在,我再籠統地進一步說明:假如現在有個DVD需要壓縮,我們首先用XVID的Twopass的Twopass – 1st pass高質量預設采樣量化值“w1”跑一遍,看看最大能做成多大的。一般在媲美原畫質的情況下, XVID可以把DVDrip壓到原DVD的1/5至1/10的(大致符合5000Kbps壓到1000 Kbps)。如果1pass的結果認為最大能做到688M,那么,在壓制700M的光盤時,我們就可以把這個結果做成1CD,就把它壓到最大值。但是,有些人就不太方便了,他想得到更小的體積以節省刻盤成本。比如壓成344M的2張1CD的文件,此時2pass/1pass=344m/688M=50%(呵呵,這里為了敘述方便,數字很特別),按照大多數人的畫質要求,太低了,看過原DVD的人會明顯感覺到畫質降低了,因此,我們要提高這個比值,但是,作成80%的550M更是浪費。所以,此時,我們可以把畫面大小縮小一點,以降低每一幀所占的體積。縮小畫面尺寸,使畫面的精密程度提高,使整體的大小下降。假如1個象素點占1K,那么720*680肯定比640*480畫面來的大。再次1pass得到了可以作成最大430M的結果,然后2pass/1pass=344m/430M=80%,較高的比值。該壓縮率下的畫質降低已經很難覺察啦。具體換算我就不說了,這里主要是為AVI的內嵌做解說。(因此,這里給我們的片源同志提個醒,靠內嵌來修飾缺陷并不完全可取,為了保證內嵌質量,請大家盡可能的找些高畫質的AVI片源吧。)
下面是1pass的結果截圖,這里并不需要看那個1pass狀態文件的——video.pass。(注意一下:這里1pass認為最大值為17M,但設成85%原碼率或者稱為85%原大小后,目標文件的大小變大了,這是因為在Twopass模式下2pass認為以Q3為預設采樣量化值采樣,達到這個碼率才足夠;我們再看2pass-q3-21m-2086kb-b2.jpg的截圖,雖然設置為理論上的原碼率,但結果變小了,同樣壓成了1530fbps的。可見這里2pass優先了預設采樣量化Q=3值,這里只說Q值,是因為后面有其他的情況出現)
當2pass/1pass的比值低于65%的話,畫質損失會比較容易看出來(盡管這一點不是100%正確)。因此,2pass測試中,對于這個好畫質的臨界值85%特別照顧了一下,雖然它是為了DVD to DVDri而存在,這里也給予一些測試好了。而21M的設定則是因為它理論上的幀速近似等于原文件幀速2041 Kbps,故此也特別給予照顧。
文件命名格式及由來(不標明2 pass的均為single pass模式):
1、2pass-q3-17.8m(85%max)-1661kb.avi
依次為:Twopass – 2nd pass、預設采樣量化值、2pass/1pass比值85%的理論大小、理論幀速
2、2pass-q3-14.5m(85%max)-1343kb-b2.avi
依次為:Twopass – 2nd pass、預設采樣量化值、2pass/1pass比值85%的理論大小、理論幀速、使用BF=2
3、2pass-q3-21m-2086kb.avi
依次為:Twopass – 2nd pass、預設采樣量化值、與原文件同樣幀速的理論大小、理論幀速
4、2pass-q3-21m-2086kb-b2.avi
依次為:Twopass – 2nd pass、預設采樣量化值、與原文件同樣幀速的理論大小、理論幀速、使用BF=2
5、q2-q3.avi
依次為:目標采樣量化值、預設采樣量化值。
另外要說明的是所有不加BF=2的文件的幀個數比大致均為:IF:PF =72: 2743(72+2743=2815); 所有BF=2的文件的幀個數比大致均為:IF:PF:BF=70:1172:1573(70+1172+1573=2815)。有變化也是幾個到十幾個幀的變動,可以忽略不記。這估計是原文件幀結構和XVID的“幀類別使用與壓縮”判斷機制所引起的。 以下測試均BF=2。原因是有效降低了大小,并可能增進了一點點的畫質,如果使用BF后的文件與不使用BF的文件同樣碼率,想必使用BF的總平均幀質量要比不使用的高,總體質量也就要高。不過是不是屬于無效增大質量呢?很有可能的。那么就看看q2-q3-b2與q2-q3的區別:IF單幀最大提高從44273B提高到了44290B,平均大小從20272提高到了20332;PF的單幀最大沒有變化,但分析q2-q4-b2與q2-q4時也提升,所以可以認為是軟件誤差,單幀最小也從148提高到了154,平均大小從7432提高到了11768。而且,IF的幀個數并沒有被改變。這里的2幀同樣應該是軟件誤差。而發生改變的只有PF的個數。所以可以認為使用BF后,IF、PF被整體提升了質量,以保護BF的質量。順帶也就提升了整體質量。
至于在同樣碼率下,是不是出現無效增大質量呢?如果XVID確實比DIVX的壓縮更具效率,那么,就確實可能存在很少的無效質量。不過,兩個家伙能力應該比較接近。那么也可大致認為需要碼率接近。雖然其BF威力比DIVX的貌似更大一些。如果原文件也是XVID編碼,那么就更可認為碼率要接近。又因為前面的分析,壓縮比是針對DVD to DVDrip的,因此,當前考慮的首要不是再次降低塊頭。而且BF的前后參考性又可以某種程度上降低噪音。所以就這樣認為吧。對于這一點,我想還應該有更強的分析工具來確定判斷,很抱歉,限于能力,不能進一步分析了。如果有哪位朋友知道還請賜教一下。
以下均以不二次壓縮為根本。即是碼率保持不變。全部靠攏原幀速:2041kbps。
1、 在single pass模式下:
當以Q3為為預設采樣量化值, BF=2時:目標采樣量化值為Q值時,q2、q3、q4截圖一模一樣,IF、PF的結果Q值都等于預設采樣量化Q值,BF則還要低2個數量級左右;目標采樣量化值為目標指定幀速(設為原幀速)時,2056kb-q3-b2的實際幀速為1531kbps,比q3-q3-b2的1530kbps僅僅提升了1kbps。看來是“以Q3為預設采樣量化值”限制了了目標采樣量化值的設定。預設采樣值為Q3的質量弱于原幀速采樣。
當以Q2為為預設采樣量化值,BF=2時:目標采樣量化值為Q值時,q2、q3、q4截圖一模一樣,IF、PF的結果Q值都等于預設采樣量化Q值, BF則還要低2個數量級左右;目標采樣量化值為目標指定幀速(設為原幀速)時,2056kb-q2-b2的實際幀速為2072kbps,與q2-q2-b2幀速以及截圖都一模一樣。證實了“以Q2為預設采樣量化值”則充分滿足甚至超過了目標采樣量化值的設定。預設采樣值為Q2的質量強于原幀速采樣。
另外從XVID的壓縮算法本質上高于DIVX上來看,高于原幀速的采樣應該屬于無效。所以本輪由2056kb-q2-b2參加半決賽。
當以W1為預設采樣量化值時, BF=2時:目標采樣量化值為Q值時,結果文件的IF、PF、BF的Q值隨Q值增大而成比例增大,因此就以q2-w1-b2(實際幀速為2072kbps)參賽;目標采樣量化值為目標指定幀速(設為原幀速)時,結果文件的實際幀速是1951kbps。兩個比較后,2056kb-w1-b2的IF單幀最大質量(65313B)比q2-w1-b2(63368B)提高了近200B,PF單幀最大質量(87371B)比(70758B)提高了近1300B,BF單幀最大質量(34570)比(24871B)提高了約1000B,另外,無論IF、PF、BF其平均大小卻均下降,說明目標采樣量化值為Q值限制了XVID的動態壓縮能力發揮。故此預設采樣為Q2的質量的有效率弱于原幀速采樣。應該屬于無效增大。
所以更好的 “2056kb-w1-b2”來參加半決賽。
2、 在Twopass模式下:
以Q值=2為預設采樣量化值時,BF=2:無論是以大小(設成高與原大小或者低于原大小)還是以幀速(設成原幀速)作為目標量化值,狀態截圖均一模一樣,實際幀速均為2072fbps。看來,2pass下,以Q值=2為預設采樣量化值時,結果文件實際幀速只與Q值成比例。而且,可以看出Q=2時,達到了原幀速。為了驗證這一點,以Q值=3為預設采樣量化值時,BF=2再次測試,發現截圖同樣一模一樣,幀速降為1530 fbps。證明猜想成立。那就隨便選了“2pass-2056kb-q2-b2.jpg”出局半決賽。
以W=1為預設采樣量化值時,BF=2:無論是以目標大小為目標量化值的提升(從結果看來,其實質還是在提升目標幀速),還是目標幀速的提升,都帶來了實際文件幀速的提升。而且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字節雖然沒變,但是平均單幀大小從24597字節提升到了25725字節。PF的Q值范圍則從2-3提升到了1-3,平均Q值從2.66提升到了2.31;PF單幀最大倒是從68540減小到68472,不過從后面來看,這應該是屬于軟件計算誤差,其平均單幀大小從15119提升到了16828。BF的Q值范圍雖然為3-5沒變,但平均Q值從4.44提升到4.10;BF單幀最大從21083字節提升到了23319字節,平均單幀大小也從2087字節提升到了2251字節。
同樣:2pass-2056kb-w1-b2比之2pass-w1-23.8m(85%)-2298kb-b2進一步提升。而且是全面提升,另外,其實際幀速為2027 fbps。因此,這里就派2pass-2056kb-w1-b2參加半決賽。
3、 半決賽與決賽:
上下對比,2056-q2-b2與2pass-2056kb-q2-b1的狀態截圖是一模一樣的。先放棄2056-q2-b2,直接對比2pass-2056kb-q2-b2與2pass-2056kb-w1-b2。比較后:那么以Q2或者W1為預設采樣量化值,到底哪一個更好?原則上Q1的比Q2的更好,如果只有少量Q1,似乎我們也注意不到,如果把這部分更高碼率的品質稍稍降低一點,補貼給Q2部分,似乎整體質量會有所提高,而局部稍弱。XVID作為第二代MPEG編碼技術,它更強的功能就是品質高的給碼率多些,低的給少些。看下面的2056kb-w1-b2的截圖:甚至出現了BF的Q值低到了11,我認為這是正確的,因為貌似是靜止的白屏,就算我們給予它Q2的質量,也純屬浪費。所以,這樣就兼顧了品質與大小。仔細對比2056-W1-B2與2pass-2056kb-w1-b2, 2pass-2056kb-w1-b2的IF、PF、BF的單幀大小最大值均有所減小,但是平均大小卻都提高了一點。說,說明2pass-2056kb-w1-b2的Q值分布更為平衡。
DivX DRF AnalyzerV0951的測試也這樣認為(看橙色字色處)。所以我的結論是:相對來說,?single pass 模式不夠細致。而Twopass模式則可以充分分析原文件,并得出最佳的畫面質量。即削減高峰,增益中間。把全片質量從整體上提升。那么為什么BF的Q值在6-11的一段沒有了呢?猜測估計是XVID在Twopass后認為該品質的幀可能會造成爛幀(比如馬賽克)。所以提高了它的Q值,以防止爛幀的出現。
=== 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
=============================================================
最終結論:在Twopass模式下以W1為預設采樣量化值、并且加入BF=2、指定目標幀速為原幀速的情況最為理想。實際上Twopass模式默認的就是以W1為默認預設采樣量化值,以指定目標大小為默認值目標大小量化值,因為XVID原本就是為DVD to DVDrip而設計的。所以這里不考慮二次壓縮的時候,應該改為指定目標幀速為原AVI即原DVDrip幀速。
問題一:BF的B值設置為多少比較合適?(這里的B值不是指Q值,而是指2個非BF間最多可以連續插入的BF的個數。)
其實從開頭BF的優越性就可以看出一部分原因了,就是如果連續24個持續1秒鐘都是BF,播放時會出現什么結果?又因為BF還需要參考后面的一幀,所以畫質會特別爛,而且解碼時會出現延時。造成影音不同步。所以:
1、如果你想獲得低于幀速率900kbps的文件,你可以把B值設為3或者更大(不推薦)。
2、如果你想獲得900-1400kbps左右的文件,你可以把B值設為2。
3、如果你想獲得更高品質的文件,你可以把B值選項關掉。前提是你的源文件最好靜態多,質量也很高。
4、如果你有著其他要求,那么,沒有必要的情況下,請保持2的默認值吧。
下面是一些相關設置。沒有說明的請保持默認。
問題二:下面再回頭想想BF的Q 值,XVID是怎么得來的?
BF 的Q 值由BF 前后的IF/PF 共同決定。BF 的Q 值=BF 前后的IF(或PF)的Q 值的算術平均數* Quantizer ratio+ Quantizer offset。上邊的數據貌似也反映了這個情況。
BF 是一個能有效提高壓縮率的功能,是否降低畫質,那要看如何設置了。有的設置壓出來的部分BF,Q 值比PF 還低。用最恰當的BF 設置來調節碼率,提高整體質量,是非常有效的,設置地恰當的話,會令全片的Q 值分布相當平均,可使DRF 測試中的第二項——Standard Deviation 輕易達到“Quality is HIGH [Std. Deviation is 0.50]”,即動、靜態場景的畫質一致,不會“靜態尚可而動態MSK(馬賽克)驚人”。通常情況下,全片BF 含量在30%—55%左右,畫面效果與只用I、PF+VHQ4 跑出來的畫質無顯著差別。即省時又保證質量,所以一般應當使用BF。
隨著XviD 的Frame Type 的不斷進步(從0624 版開始FrameType 判斷較以前版本已經有了相當大的提高),大動態場景BF 濫用現象(可以參看開頭BF的圖示,如果畫面動態強,變換快,不具備連續性,那么BF就作用不大了)已經得到了較好的抑制(經過實測,在碼率充足的情況下,大動態場景基本用IF PF PF PF PF… 來壓了),所以BF 可以放心使用。
Twopass——二重運算。這種編碼模式分為兩步,首先對畫面逐幀進行運動偵測,以及對全片段的運動偵測結果進行分析,然后重新以曲線平衡分配每一幀的Q值,以做到:需要高碼率的運動畫面可以分配更多空間、更高的碼率、更低的Q值來保證畫面質量;而對于不包含太多運動信息的靜態畫面,則可以消減分配的碼率。這種把好鋼用在刀刃上的做法,是XviD作為第二代MPEG4編碼的核心內容。可以說,Twopass模式可以在影片容量與畫面質量之間找到最佳平衡點,這也是大多數人都樂意花費更多時間采用這種方式的原因。
Twopass-1st pass——二重運算,第一次運算。這是Twopass 模式的第一步。在這一步中,編碼器會用最高質量編碼(默認值W=1)(這里要補充的是,Twopass-1st pass的這個值其實可以指定,并且效果并不相同,有高畫質的,也有低的,請看下面的1pass截圖),同時收集畫面信息,并將這些信息記錄信息文件(stats)當中提供第二次運算的時候參考。
Twopass-2nd pass——二重運算,第二次運算。這是Twopass 模式的第二步,編碼器會根據第一次壓縮時獲得的影片的信息和用戶指定的最終文件大小,自動分配碼率,低動態的分配得少一些、大動態的分配得多一些,總之盡量保證最終文件大小為用戶指定的大小。
5.
DivX和XviD
如今的電影是越來越好看,拍攝、制作的特技效果越來越精彩,人們期待的程度越來越高,盜版也越來越多;同時電影制作公司的防盜版技術做的越來越高明。但有句老話叫:"道高一尺,魔高一丈",無論你的電影多精彩、防盜技術多高明,總是有人偏偏能夠把你"盜"出來,而且還"盜亦有盜",在保持"原版原味"的條件下,占用的空間變得越來越小,操作越來越靈活、簡單,越來越方便傳播。而且這種技術隨著版本不斷更新,畫質越來越貼近原版、壓縮速度越來越快、壓縮/播放進程對計算機的需求越來越低。這就是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公司的DivX45。
被人"涮"了一把的開源社團決定另起門戶,逐漸重新聚攏開發力量,在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;
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 資源比較少。
6.XviD配置參考詳解【爆詳細】
XviD的主界面
[Top]
Profile @ Level
[Top]
這個選項包含一些預設值,與分辨率和碼率有關,按旁邊的“more...”按鈕再切換到Level標簽可以看到預設的數值。因為我們制作的視頻并不在其它視頻播放設備(比如具備MPEG4解碼能力的DVD播放機)中播放,無須考慮設備兼容性,所以這個選項一般可選“不限制”(unrestricted)或者默認的“AS @ L5”。
Zones
[Top]
XviD1.0以前的版本都有一個參數叫Credit,Zones繼承并加強了以前的Credit功能,使之可以控制片中任意一段視頻。大家知道,電影、動畫片尾(或片頭)都有制作人員名單 (即Credit,下同) ,而且一般沒人會看。而老版XviD中Credit選項的作用就是,允許用戶使用較低的質量制作Credit部分,讓出更多的碼率分配給正文部分,以提高正文部分的質量。而在最新的XviD1.0中,這個Credit選項卻消失了,取而代之的是一個新的參數——Zones。在這里,我們可以把Zones理解成“區間”、或者說“片斷”。也就是說,我們可以在邏輯上將片子分成許多段,并給這些段落一些“特殊待遇”。
Zones的使用例子
[Top]
上圖例子中,0~40640幀是正片,按照正常壓縮,所以需要設定W1.00。從40641幀開始是長長的黑白滾動字幕的制作人員名單,因為滾動字幕是非常浪費碼率的,所以這里我們設定使用Q8來壓縮制作人員名單。Zones界面如上圖,本部分參數設置僅為例子,具體設置在下面說明。
Zones的設置
Start frame#——該區間的起始幀,用于指定該區間的范圍。該區間的范圍定義于起始幀開始至下一區間起始幀的前一幀。若沒有定義下一區間,則該區間一直定義至影片結束。
Weight——權重。設置該區間的實際應用碼率與原碼率的比。比如,如果只想使用原碼率的85%編碼該區間,那么這里可以填寫0.85。如果想使用100%碼率(即原碼率),填寫1.00即可。什么是“原碼率”呢?即XviD認為應該使用的碼率。如果定義了權重,那么XviD在實際壓縮的時候,就會將原碼率乘以用戶指定的權重,作為該處實際的碼率。
Quantizer——設置該區間幀的Q值。可以強迫編碼器將這段區間使用某一Q值編碼(本選項通常用于Credit部分的編碼)。
Begin with keyframe——本區間的第一幀強迫使用IF。一般選擇此選項。
Greyscale encoding——使用灰度。編碼出的畫面是黑白的,適合于黑白畫面(比如片尾的黑白Credit),可更加降低本區間的碼率。
Chroma optimizer enabled——色度優化,可以改善顏色過渡不自然現象。該選項對畫面顏色有優化作用,推薦選擇。勾選此項會稍微降低編碼速度,所以可以選擇僅對Weight設置成1的電影正文部分應用此設置。由于Chroma optimizer是在色度上做文章,所以開啟了Greyscale encoding的時候可以考慮關掉 Chroma optimizer,可以在一定程度上提高一些編碼速度。
Cartoon Mode——卡通模式。這個模式可以讓畫面顯得更干凈一些,但這就意味著要抹殺細節。制作動畫的時候可以使用。(下面會有一個小結專門講解Cartoon Mode)
BVOP sensitivity——BF靈敏度。值越大,使用BF的數量越多。如果設定負值,則會減少BF用量。制作CREDIT段落的時候本參數可以適當設置大一點,用更多的高壓縮率BF去壓Credits,參數可以考慮20或40。
注意:如果要在Credit使用Quantizer模式的話,要在Twopass-1st pass中也使用相同的設置才有效。而若要用Weight模式則只需在Twopass-2nd pass中設定既可(從某種意義上講,這樣可令Weight模式下的Two-pass-1st pass稍微快一點)。
Zones應用于CREDIT的參數設置建議: 演職員名單的Q值可限定為8或者9,這樣既可以保證名單上的文字能夠分辨出來,也可以大幅降低Credit這部分的視頻文件體積。有時,10分鐘左右的Credits壓出來也只有6、7MB,這對某些擁有5、6分鐘以上較長Credit的1CD DVDRip影片制作來說,幫助是較為明顯的。
Zones使用上的心得
[Top]
除非出現極端的現象,否則不建議針對正片(即影片中除廣告、制作人員名單之外的正文部分)使用Zones。有些用戶喜歡自作聰明地指定許多Zones人為地干預碼率控制。實踐證明,這種行為是非常不明智的,這樣會嚴重干擾XviD對于碼率的控制和計算,只會導致容量失控(Oversize或Lowsize)或畫質下降。XviD的碼率控制幾乎是所有編碼器中做得最好的,所以不要擔心,把一切交給XviD去做吧。
考慮到觀眾
[Top]
現在不少影片的制作人員名單采用了帶有畫面的漸變或滾動字幕,畫面通常為一些拍攝花絮或影片插圖、設定。考慮到觀眾的觀賞需要,這類名單不適合使用Zones來降低碼率。所以,壓縮的時候應當時刻考慮到觀眾的心情。
Cartoon Mode
[Top]
(本部分作者:Bopirit,收錄時略有修改)
XviD有個動態判斷標準值,指判別畫面是否有動態的標準。若高于這個值,則判斷畫面為動,編碼時記載動態信息;若低于這個值則判斷為畫面不動,不記載動態信息。這個通常很低,就是說,很小一點差別都會判斷為動態。
打開Cartoon模式后,這個標志的值會加大,相應的,小的動態變化會忽略。對動畫來說,最直接的效果就是消除了浮動的細微噪點(特別是在色塊和線條之間,這種噪點即使降噪也會出現)。因為用了Cartoon模式,這些噪點造成的小度變化被忽略掉,因此會省出大量碼率。在的實驗中,多在8%以上。但是,因為畫面的變動相對較大,PSNR會降低(雖然對動畫來說這算不得降低),而且對于使用H.263量化的動畫,還會讓畫面感覺更加模糊;而對于MPEG量化,這個Cartoon模式可以有效降低MPEG量化編碼動畫片的副作用,盡管PSNR降低,但實際上畫面看起來更好。可以配合MPEG/MPEG Custom量化方式使用。
Q值
[Top]
Q值是指量化值(依據作者個人習慣不同,這個值在不同文章中的叫法有所不同,比如“量化值”、“量化級別”、“Quant”等等,本文統一稱作“Q值”)。顧名思義,Q值用來描述一個幀的質量,每個幀都有Q值。該值取值范圍是1~31。該值由編碼器編碼的時候根據該幀的顏色、與跟前/后幀的動態關系等自動確定。Q值越小,質量越好,碼率越大;Q值越大,質量越差,碼率越小。(本概念在XVID制作中非常重要,Q值直接關系到影片的畫面質量。)
Encoding mode
[Top]
Encoding mode即編碼模式。XviD一共提供兩種編碼模式。一種是Single pass,另一種是Twopass。Twopass分兩步,分別是1st pass,和2nd pass。下面對這兩種編碼模式分別進行講解。
Single pass
[Top]
Single pass即一次運算,Single pass有兩種模式(通過Target xxx按鈕切換)Target quantizer(目標Q值)和Target bitrate(目標碼率)。Single pass模式編碼較簡單,速度也很快,但是最終質量不如Twopass模式好。可用于實時采集。
Target bitrate(CBR)——目標碼率模式,單位kbps。最簡單的單線編碼,選擇平均碼率后編碼。文件大小相對容易控制。
Target quantizer(VBR)——目標Q值模式,動態碼率。
Two pass
[Top]
Two pass即二重運算。這種編碼模式分為兩步,首先對畫面逐幀進行運動偵測,以及對全片段的運動偵測結果進行分析,然后重新以曲線平衡分配每一幀的Q值,以做到:需要高碼率的運動畫面可以分配更多空間、更高的碼率、更低的Q值來保證畫面質量;而對于不包含太多運動信息的靜態畫面,則可以消減分配的碼率。這種把好鋼用在刀刃上的做法,是XviD作為第二代MPEG4編碼的核心內容。可以說,Twopass模式可以在影片容量與畫面質量之間找到最佳平衡點,這也是大多數人都樂意花費更多時間采用這種方式的原因。
Twopass-1st pass——二重運算,第一次運算。這是Twopass模式的第一步。在這一步中,編碼器會用最高質量編碼(量化值2),同時收集畫面信息,并將這些信息記錄信息文件(stats)當中提供第二次運算的時候參考。
Twopass-2nd pass——二重運算,第二次運算。這是Twopass模式的第二步,編碼器會根據第一次壓縮時獲得的影片的信息和用戶指定的最終文件大小,自動分配碼率,低動態的分配得少一些、大動態的分配得多一些,總之盡量保證最終文件大小為用戶指定的大小。
注1:不要在第一重和第二重運算之間更改XviD設置(某些特殊項除外)、改變AVS腳本(如果用到AVS)或加入、刪除濾鏡,這些都將會造成不正確的結果。
注2:計算2pass容量的時候,應使用1K=1024Bytes的換算方法。且計算結果不包含音頻大小。
Twopass-1st pass面板
[Top]
Full Quality first pass——全質量第一次運算。在 Twopass - 1st pass 時以你當前的設置進行編碼,通常是沒必要的。會降低1st pass編碼速度。
Discard first pass——不輸出第一次運算結果。一般都會打開這項,否則你可能會得到一個容量高達幾個G的無用的AVI文件。
2nd pass
[Top]
這個對話框只有在2PASS的時候才可用,其的設置比較復雜,建議保留默認設置。
I-frame boost——額外分配給IF的碼率。如果IF的Q值較小(如1或2),此項可以設置為0。
I-frames closer than... (frames) X ...are reduced by (%)Y(X和Y代表所設定的參數)——意思是,若兩個IF的距離小于X(通常是連續的閃電效果或者連續大動態動作場面會出現這種情況),則靠后的IF碼率減小Y%。如果IF的Q值較小,Y可以稍微設置大一些(可增加5%~8%)。
Overlflow treatment——碼率補償與縮減。Max overflow improvement和Max overflow degradation控制當編碼器遇到不足碼率或者碼率過大的場景時進行修正補償的閥值,即超碼或不足碼到達什么程度,編碼器會進行修正。值越大,修正速度越快(即需要修正的幀較少,整體編碼速度就加快),但是這可能會造成無法為別的更需要碼率幀保留碼率。如果Q值波動較大,可以將這個值減小到20~30,這樣可能會使預測的文件大小受到影響。除非遇到特殊情況,本功能不建議使用!
Overflow control strength %——控制每個需要補償的碼率過大/不足的幀被補償多少。除非遇到特殊情況,本功能不建議使用。
Curve compression——曲線壓縮。曲線壓縮的作用就是將碼率較高的幀的碼率拉下來,將碼率較小的幀的碼率提上去,讓碼率曲線平緩一些。此選項不建議使用,也就是保持默認設置“0”。由于現階段XviD的動態分配(即曲線壓縮)做得不是很好,所以直接采用了一種linear scale(即線性壓縮)把1pass的碼率曲線直接往下調。除遇到特殊情況外,不建議使用曲線壓縮功能。
若想了解更多曲線壓縮以及線性壓縮的細節,請參閱本文附錄《曲線壓縮與線性壓縮》。
Profile標簽
[Top]
Quantization type
[Top]
量化方式。此處支持三種量化方式。分別是H.263、MPEG、MPEG Custom。應根據影片的特性確定該選項。要了解這三種量化方式的詳細信息,請參見附錄《三種量化方式解說》。
Adaptive Quantization
[Top]
其實這個選項就是XVID 1.0之前版本中的Lumi masking。加大圖像亮/暗部等人眼不容易注意到的部分的壓縮率,可能會產生畫面扭曲。本選相應當謹慎使用,因為它看起來弊大于利。所以如果不是對縮小文件體積縮小有迫切的需求,最好不要使用。
Interlaced Encoding
[Top]
隔行處理。適用于有交錯的片源。一般來說不需要開啟。
Top Field First
[Top]
決定場序。如果選中,則為頂場(奇數場)先,否則為底場(偶數場)先。
Quarter Pixel
[Top]
1/4像素(簡稱QP,下同)。MPEG-4 用的 QPel 即 1/4 Pel,就是再補出1/2像素像素和1/2像素之間的1/4像素。能保留更多的細節(比不用QP多)和得到更精確的動態補償,適合高2-PASS/1-PASS比值時采用。但會降低損失近1/3的編碼速度。
通常情況下,2-PASS/1-PASS比值在50%以下,不推薦使用。800K以下的低碼率使用時,部分場景的畫面會產生嚴重的色彩飄逸現象,看上去像粘稠的液體流動(干凈、低動態片源除外)。視頻碼率越高,使用加QP后的效果越好,而且中低碼率下去色塊的作用也非常明顯。
Global Motion Compensation
[Top]
全域動態補償(簡稱GMC,下同)。能在縮放(把鏡頭拉近)以及旋轉(轉動相機)的情形下有所幫助,尤其是畫面中的物體的外型是固定的,僅在尺寸以及位置上有所不同時。若要處理的影片是自然景觀或風景片時,可以開啟GMC。使用該選項制作的影片可能只有XviD自己的解碼器才能正常解碼,若使用ffdshow等解碼器解碼可能存在兼容性問題,用前請考慮。
B-VOPs
[Top]
B-frame
[Top]
B-frame設定。若去掉該選項前面的對勾,則編碼中不使用B-Frame(簡稱BF,下同),只用IF、PF來壓。
Max consecutive BVOPs——最大連續BF數量。舉個例子,設置2,就是說在兩個PF之間(或IF/PF之間)最多會連續插入兩個BF,即…IF/PF BF BF PF…;如果設置3,則最多會出現三個連續BF,即…IF/PF BF BF BF PF…。此處,應根據片源具體情況來設定,如果片源動態比較小,則可以適當開大一些,比如3、4;如果碼率很充足或片源很復雜,包含大量大動態場景、運動不規則、場景切換頻繁等等,則應減少BF用量,甚至不用BF。
請注意:多少個BF連續出現,沒有數量限制(你可以設置成1,也可以設置成1000)。具體用多少XVID自行判斷,這個地方只設定最大值。
Quantizer ratio——BF的Q值倍數。計算BF的Q值的參數。
Quantizer offset——Q值計算偏移值。計算BF的Q值的參數。(BF的Q值計算方式下面解釋)
Packed bitstream——開啟BF的XviD制作的avi,在播放時會延遲一幀(就是以前播放時畫面第一幀的那個黑色畫面,告訴你該視頻使用了BF,如下圖)(制作成ogm、mkv、mp4則不會)。而Packed bitstream選項的作用是解決這個問題。不過開啟2個以上的連續BF并用到了Packed bitstream的時候,只有XviD的解碼器可以正常解碼。而用老版本的DivX/ffdshow解碼,水平移動的畫面會不順暢(畫面朝移動方向抖動)(ffdshow-20040225以后的版本解決了這一個問題)。
Closed GOV——在編碼新的IF之前插入一個PF來關閉前一個幀組,否則解碼時有可能出現問題。此選項要勾選。
BF的Q值的計算:BF的Q值由BF前后的IF/PF共同決定。
代碼:
BF的Q值=BF前后的IF(或PF)的Q值的算術平均數* Quantizer ratio+ Quantizer offsetBF是一個能有效提高壓縮率的功能,是否降低畫質,那要看如何設置了。有的設置壓出來的部分BF,Q值比PF還低。用最恰當的BF設置來調節碼率,提高整體質量,是非常有效的,設置地恰當的話,會令全片的Q值分布相當平均,可使DRF測試中的第二項——Standard Deviation 輕易達到“Quality is HIGH [Std. Deviation is 0.50]”,即動、靜態場景的畫質一致,不會“靜態尚可而動態MSK驚人”。而且在用VHQ4壓片時還能省去不少時間,因為BF不像I、PF那樣要作VHQ4處理。通常情況下,全片BF含量在30%—55%左右,畫面效果與只用I、PF+VHQ4跑出來的畫質無顯著差別。即省時又保證質量,所以一般應當使用BF。
隨著XviD的Frame Type的不斷進步(從0624版開始FrameType判斷較以前版本已經有了相當大的提高),大動態場景BF濫用現象已經得到了較好的抑制(經過實測,在碼率充足的情況下,大動態場景基本用IF PF PF PF PF… 來壓了),所以BF可以放心使用。
有些朋友對本部分設置可能還不是很清楚,的確,BF的設置是XviD中最難掌握的部分,參數需要精心搭配。
針對一些情況,本文給出了參考參數設置,請見附錄-BF推薦設置。
Motion標簽
[Top]
Motion search precision——運動檢測精度,決定著給定碼率下的畫面質量。等級越高,畫質越好,速度越慢。一般選6而不選5,因為選5只快10%。
設置:
1 – 3: 基本沒有什么區別。
4-high:XVID使用半像素插值(half pixel interpolation=HPel=1/2像素)的技術達到更好的結果,而整個16x16的微區塊被標示上兩幀之間的運動向量(譯者按:ffdshow有顯示這個向量的功能,很有趣)
5-very high:XviD 使用4分運動向量(inter4v motion vectors)的方式,即16x16的微區塊中的4個8x8區塊,被標示各自的運動向量。
6-ultra high:運行更多邊的運動檢測(會減慢10%的編碼速度)。
VHQ mode——搜尋寬度。等級越高,畫質越好,速度越慢。這個選項會很大幅度的降低編碼速度,若機器夠快,可選4。想了解更多VHQ的功能,請參閱本文附錄《VHQ模式》。
Use VHQ bframes too——在BF上應用VHQ。在原先版本的XviD中,VHQ Mode是不被應用在BF中的。但是從XviD1.1版本開始,只靠選中本選項,就可以在BF中應用VHQ Mode了!
Use chroma motion——通過顏色信息來判斷動態。會降低編碼速度5%~10%,但是有利于畫面,推薦選擇。
Turbo——超級模式。更快的判斷BF和QP的動態。
Frame drop ratio——丟幀率,這個參數保持默認值0,并且不要改變。
Maxinum I-frame interval——最大IF幀距。該參數一般為幀率的10倍。比如,一般DVDRIP的幀率為23.976fps,則該處就填寫240。有人喜歡認為將這個值調小,以增加IF的數量,達到提高畫質的目的。此項可根據片子情況適當減小。但是在200以上為宜,如果太小會適得其反——文件OVERSIZE、IF占用大量碼率導致BF/PF質量過低,反而不利于畫質。
Quantization標簽
[Top]
Quantization標簽中的設定非常重要,直接關系到片子的質量。
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——進階高質量量化模式。若選擇該選項,編碼器會選擇性的降低某些畫面的質量,來達到最大限度的提高片子的整體質量。可配合H.263量化方式使用。
各種類型幀的Q值設定需要注意以下原則
設置時應盡量保證IF質量,因為BF和PF的質量都由IF決定。
由于XVID對于BF質量的把握越來越好,比較黑暗的場面出現爛幀的幾率也有所減少,所以BF的Q值上限可以放心的設大一些。
有些朋友提出,不要限制Q值范圍,也就是全部都保留1/31的默認值,讓XviD自行掌握Q值分配。筆者認為這么講不無道理,但要看什么情況。在一些情況下,XviD自身的Q值分配算法是不能適應某些影片的(比如通篇畫面都很昏暗的影片等等),這個時候,就需要我們手工來限制Q值范圍。也就是說,是否限制Q值、限制多少,并沒有一個確定的答案,而應當由片子本身的特性。有經驗的RIPPER可以迅速的根據影片畫面判斷應該如何配置,也就是所謂的“經驗”。所以,Q值的設定應由影片本身和制作要求靈活應變,不應一味追求所謂“理想值”。筆者認為,這點是應當特別注意的。
綜合設置
[Top]
請注意,從xvid1.2開始,Debug功能被安排在了XviD Configuration項目中,按Xvid主窗口下方的Other options按鈕即可進入。
Encoder
[Top]
FourCC used——FourCC 用以確定你編碼好的電影用什么樣的解碼器來播放,默認值為"XviD",這意味著將使用"XviD directshow filters",保證了最大的質量和兼容性。你也可以選擇使用"DivX 4.x"或"5.x"的解碼器來回放你完成的電影,但是它們不一定就能正常播放。
Number of threads——線程數。XviD針對現在逐漸流行起來的支持HT技術或雙內核處理器做出了一些優化。若您的處理器支持HT技術或有雙內核,請設置為2,否則請保持默認。
Print Debug info on each frame——在每幀上打印debug信息,非專業人員不要選:)
Display encoding status——顯示編碼狀態,就是我們在壓制的時候看到的XviD Status窗口。如下圖:
Common
[Top]
Performance optimizztions——性能優化。可以選擇特定的CPU指令集優化。可以對編碼速度的提高起到一定作用。建議選擇自動選擇指令集優化。
附錄
[Top]
如何知道1pass容量
[Top]
獲取1pass容量其實很簡單。當大家開始用XviD壓制1st-pass的時候,XviD會跳出來一個狀態窗口,這個窗口會實時顯示壓制過程中各種各樣的信息。當1pass壓制完成的時候,這個窗口會顯示1pass的最終結果。如下圖:
右邊紅框部分所示的容量即為1pass容量。用計算出來的2pass容量除以這個值,就能計算出來2pass/1pass比值了。
BF參考設置
[Top]
2-PASS/1-PASS比值在70%以上
[Top]
由于容量相對寬松,故限制了IPB的Q值范圍。
Max consecutive BVOPs --------- 2
Quantizer ratio --------------------- 1.20
Quantizer offset -------------------- 0.60
Quantization設置: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設置: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設置: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、噪點等(其它需要配合的設置還包括:VHQ4、hvs系列量化模式)。
基本概念解釋
[Top]
本文用到了一些MPEG4中的基本概念,這些概念在本文中會經常提及。所以這里特意為新手準備了概念解釋,希望新手朋友在閱讀之前掌握這些概念。沒有收錄進來的一些針對性較強的概念已經在正文中進行重點的解釋。
三種幀類型
[Top]
IF——I-frame的縮寫,即關鍵幀。關鍵幀是構成一個幀組(GOP,Group of Picture)的第一個幀。IF保留了一個場景的所有信息。
PF——P-frame的縮寫,即未來單項預測幀,只儲存與之前一個已解壓畫面的差值。
BF——B-frame的縮寫,即雙向預測幀,除了參考之前解壓過了的畫面外,亦會參考后面一幀中的畫面信息。
量化方式
[Top]
H.263——推薦700~900K的碼率(比如1CD制作)時使用。保留畫面細節不及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——建議高碼率情況下(比如2CD制作)使用,能保留較多細節,但在某些情況下可能造成噪聲等副作用。若在制作動畫時使用,可能引起色彩過度不自然、顏色邊界處出現噪聲等副作用,此時,可搭配Cartoon Mode降低這些副作用。MPEG 的量化方法,高低頻系數可以除以不同的量化系數,可以視情況將高頻削多一點。這個 8x8 的量化系數,也就是 Quantize Matrix(量化矩陣)。
MPEG Custom——可以加載MPEG自定義量化模板。你可以依照影片特性,自訂最適當的量化矩陣。比如,壓電影的時候常用的hvs-best-picture模板可以兼具MPEG和H.263量化方式的優點,即畫面細節和降噪都能得到兼顧。若要采用MPEG Custom量化方式,點擊Edit Matrix…按鈕加載想要的量化模板即可。本選項只建議對于量化模板有較深研究的專家使用。XviD1.0安裝目錄下有一個XviD_Quant_Matrices.zip,里面包含了數種常用的量化模板,比如有名的HVS量化系列,在DOOM9網站或論壇上可以找到更多的量化模板。
噪聲
[Top]
這里所謂“噪聲”,并不是我們能夠聽到的實際意義上的噪聲,而是指的畫面上不斷閃動的亮斑點或色斑點。畫面出現噪聲一般有以下幾方面原因:1.電影:由于膠片本身的感光性能或采集過程不佳造成(老片尤其嚴重);2.動畫:TVRIP錄制時電視信號存在干擾(也就是我們常說的“雪花”);3.采用了VHS或老舊的LD片源;4.由于壓制不良,導致色彩之間的邊緣處有細小的色斑存在(看起來像“馬賽克”)。這些噪聲在畫面上不停的閃爍、移動,造成驚人的碼率浪費。因此需要盡量將這些噪聲“過濾”掉,以節省碼率,增高片子的整體質量。要想過濾噪聲有許多方法,比如在AVS腳本中加入降噪濾鏡等,但這不是本文討論的重點。
Q值(即DRF值)
[Top]
在編碼時,為了達到某個碼率,mpeg4編解碼器會對每一幅畫面進行壓縮。而壓縮程度則取決于碼率、圖像內容的復雜度及動態大小。對于每一幀,一旦確定怎樣去壓縮以后,就會產生DRF值。DRF值為2的時候,效果最佳(在XVID中,quantizer還可能達到1)。DRF值等于31時,效果最差。8以上的DRF值,可被認為效果很差。DRF/quantizer實際上代表了編碼器在降低幀大小時所丟棄的信息量。
Bits/(Pixel*frame)
[Top]
數據密度。碼率并不是視頻/音頻質量的唯一指標,一個更重要的指標是Bits/(Pixel*frame) (數據密度),它反映了平均記錄每象素所用的數據量。如果Bits/(Pixel*frame)比較低,那么DVDrip的視頻流中I幀間的預測幀(P幀/B幀)的誤差會比較大,視頻質量會下降,(MSK等…)。制作DVDRIP的軟件(例如GK)都要計算/給出這個Bits/(Pixel*frame)值。一般認為,較好的視頻質量需要Bits/(Pixel*frame)>0.2(如左圖)。
Video Size/1st Pass Size
[Top]
除了碼率和Bits/(Pixel*frame)之外,Video Size/1st Pass Size 也是一個質量指標。DVDRIP壓制時,碼率的分配不是線性的,變化的(動作)場景的碼率將會高,而靜態場景的碼率低。Twopass-1st pass就是用于確定碼率分配。而后,根據設定的最終文件大小,將算出的碼率分配曲線等比例壓縮,得到最終Twopass-2nd pass的碼率曲線。Video Size/1st Pass Size反映的就是這個壓縮比。一般認為,較好的視頻質量需要Video Size/1st Pass Size >55%。
曲線壓縮與線性壓縮
[Top]
(作者:Silky,收錄時略有改動)
「曲線壓縮」的意思就是將碼率較大的幀拉下來,降低一點碼率,碼率較小的幀補上去,提高一點碼率。也就是將原本上下震蕩的碼率曲線變平一點,最大和最小的差距不要那么大。壓得越平,碼率曲線就越接近一條固定的直線,也就是變成近似于CBR。不過這樣實在很沒有意義不是嗎?本來碼率高的幀,就是因為這個幀需要較多的碼率紀錄,你現在把它拉下來,畫質豈不更慘?而碼率低的幀,就是不需要花那么多碼率記錄的幀,你又給它多補一些碼率,豈不浪費?
根據 Koepi 的說法,當碼率極低的時候,很多幀的碼率都不夠。此時如果把少數幾個碼率很高的幀拉低一點,把省下來的碼率分給其它幀,立刻會對這些游走在底線邊緣的幀的畫質有很大的幫助。曲線壓縮的目的便是犧牲少數幾個幀,讓大部分的幀增進畫質。而,這少數幾個碼率超高的幀,又通常都是高動態的畫面。人眼對高動態的畫面比較無法精確的判斷、分辨出畫質的好壞。所以犧牲這幾個幀,增進大部分時間看起來的品質,可以說是相當劃算。好像還蠻有道理的。不過如果曲線壓縮的參數設定得不好的話,對畫質會有很大的傷害,而且在不是超低碼率的情況下,曲線壓縮也沒有意義。所以最好的作法還是,讓編碼器自行視情況調節,使用自由的 VBR,這樣壓出來的結果會越接近 CQ「固定品質」。(當然,如果碼率實在設得太低,CQ 壓出來的結果就是「固定爛品質」 這時適當的運用曲線壓縮,以少換多,就有它的價值了) 。
經過許多人的測試經驗,最后的結論就是 linear scaling「線性壓縮」的結果最好。 線性壓縮時,1st pass與曲線壓縮無異,只是2nd pass的時候,就直接把 1st-pass 壓出來的碼率曲線按一定比例整個往下平移,降低碼率,達到你所設定的目標大小為止。由于曲線只是整個往下平移,使得最終的碼率變小,而不改變其原本的震蕩幅度,所以稱為「線性的調整大小」。 線性壓縮使原本復雜,需要高碼率的畫面還是分到較多的碼率;簡單,不用太多碼率的畫面也不會浪費了碼率。線性調整壓出來的結果較接近「完美的 VBR」,也就是固定的平均品質,不會有幾個幀突然發生明顯劣化的情況。
使用線性壓縮的方法很簡單,2nd-pass的時候,把Two Pass設定底下的High bitrate scenes degradation % 和 Low bitrate scenes improvement % 兩個設定都設為 0,這樣跑 2nd-pass 的時候就會自動根據 XviD Codec 內建的 scaling 算法,做線性調整。
VHQ模式
[Top]
VHQ與IF、BF、碼率控制沒有任何關系,但VHQ越高,圖像的品質越高。
MPEG系的編碼器在壓縮時以每個16x16像素塊大小的MacroBlock為單位進行動態預測。在VHQ模式下,它先是進行簡單的block-mode-decision(區塊模式判定),其間會對畫面內的每一塊MacroBlock施以優化,然后再按三個不同檔次(VHQ2、VHQ3、VHQ4)作進一步動態預測,從而更進一步的減少紀錄信息所需要的容量。
使用VHQ(特別是VHQ4)可以降低Q值、使畫面更干凈、保留更多的細節,但這些都只是VHQ的副作用,VHQ的主要功能是提高壓縮效率(當Q值一定時,令文件體積更小),以便更好的達到目標文件大小。
注意:
在1-PASS過程中,VHQ模式處于自動關閉狀態,因此不必擔心兩個PASS之間的設置不同。
在XviD 1.0正式版中,VHQ模式已經能與BF、Quarter Pixel、Chroma motion、Adaptive Quantization、GMC功能同時開啟使用了。
后記與人員列表
[Top]
整個XVID的重要參數到這里差不多都介紹完了。筆者還是堅持一點:每個片子都有其自身特點,要想用一套“萬用參數”來“通吃”所有片子是不可能的。有朋友非常心急,一上來就要找出來一套適用于手頭這部片子的“理想值”,但是這樣往往以失敗告終。所以壓片之前,不要怕麻煩,多抽幾段來試壓,然后根據每個參數的作用進行配置,相信你會制作出優秀的DVDRIP。
XviD是一款相當強大的MPEG4編碼器,如果參數配置得當,再配合良好的AVS腳本的話,可以制作出來容量只有DVD容量的1/5(MP3音頻),但畫質和DVD相比絲毫不差的影片!到現在為止,XviD仍然有很大的潛力可以發掘。希望大家永遠不要停止探索的腳步,去獲得更好的質量!
本文的編寫及內容不斷豐富、修訂的過程中,得到了很多朋友的幫助,在這里,編者dgwxx向他們表示最誠摯的謝意。另外:如果您撰寫文章或創作其他作品(如編譯自己版本的XVID)的時候引用了本文的內容,請一定要注明哪些內容出自本文,這是對于作者們的尊重,同時也有助于技術的交流。在線版本的放出,間接解除了強制復制保護。您現在可以任意復制本文的任何文字、圖像內容。但是這個許可僅限于用作技術交流,任何用于商業行為的復制行為、任何惡意抄襲均將受到本文作者團隊的最嚴厲追究。
本文由多位作者共同完成。
參與編寫的作者名單(依照字母順序排列):Bopirit、Dgwxx、RKinGBo、tct66、大衛
感謝以下朋友(按內容時間先后排列):
Nemolus——在2.0版本修訂過程中提出了大量意見、建議。
DvDSharer——一些概念解釋;提出2.0版的修訂。
Skywalker——Global Motion Compensation的改正意見。
本文編寫過程中參考的資料:《高品質DVDRIP制作進階教程》(作者DvDSharer)、《XviD-1.0的設置參考》(作者tct66)、《XVID的中文化解釋》(作者大衛)、《XVID中文設置全釋1.3+》以及DOOM9.org的相關英文資料。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的xvid 详解 代码分析 编译等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言中可以定义变量吗?怎么定义?有局
- 下一篇: C# Chart控件,chart、Ser