AVC/H264編碼教程

AVC/H264編碼教程

原作:DeathTheSheep
翻譯:Tenlix

編碼次數(應當選擇何種編碼模式)

如果你想要得到一個確定的文件體積,我推薦採用二次編碼的模式。例如,你希望你生成的文件體積爲精確的170.00MB,那麼你就需要採用二次或三次編碼。嚴格地說,一次編碼針對的是那些嚴重缺乏時間或者並不期望得到高質量輸出的人。二次編碼能夠滿足大部分人的需要,它可以生成高質量的文件和確切的文件體積。然而,單次編碼模式有時候會被用於恆定質量的輸出。如果你想要編碼得到的是一個統一的、恆定質量的視頻而並不在意文件的體積,那麼可以參見下面的“恆定量化和恆定質量模式”部分。

恆定量化和恆定編碼模式

如果你並不需要你的視頻得到一個固定的、明確的體積,或者想讓編碼器來決定分配多大的文件體積來獲得最佳的質量,那麼可以考慮一下通過“單次編碼 - 量化(Single Pass - Quantizer)”或“恆定質量(Constant Quality)”模式來進行固定質量的編碼。這兩種模式的不同之處在於“恆定質量”模式採用了更爲先進的比率控制算法,能夠在複雜度較高而人眼不太注重細節的場景下降低比特率。這就意味着即使質量針對人眼的視覺效果進行了動態分配,它看起來也仍然是恆定的。很多人可能會因爲恆定質量模式的這種設計而認爲該模式要更勝一籌,但是如果你編碼的是比特率很低的動畫視頻,量化也許是個更好的選擇。

  • 確定你在編碼選擇菜單(A.)中選擇了“單次編碼 - 量化”或者“恆定質量”模式。
  • 記住更高的量化值或“質量”模式(B.)將會使視頻的實際質量更低,而文件體積會更小。“質量”和量化值相近,但是被乘以了10。
  • 除非你是爲了存檔(收藏)或再現(原來的)品質,否則請不要使用15(或150)以下的量化值。
  • 同樣地,也不要使該值大於40(或400):即使最終的文件體積會小到難以置信,這種編碼的質量也會使人難以接受,除非你編碼的視頻具有極其銳利的畫質和反差極大的邊緣表現。
  • 對大多數熱衷於高質量視頻的人來說,比較好的估計值是在20(或200)(最高質量)到30(或300)(相對較低的質量)的範圍內,根據個人的偏好和硬盤爲編碼文件所預備的空間來進行具體選擇。
  • 對於卡通動畫之類幾乎沒有什麼複雜紋理的視頻可以考慮使用比較高一些的量化值。
  • 對於現實的題材,特別是那種具有很多晦暗的場景和重要而精細的紋路的視頻,應當考慮將量化值降低一個較大的幅度。
  • 繼續在其他的選項卡中設定餘下的參數。
  • 在恆定質量模式中,“量化壓縮(Quantizer compression)”用以控制在複雜的和高運動量的場景中的質量波動,可以參考下面的標題“高速度,高質量”中的描述。
  • 在其他的選項卡中進行其餘的設定。
  • 在編碼類型菜單(A.)中選擇“多次編碼 - 第一次編碼(Multipass – First Pass)”或者“多次編碼 - 第一次編碼(快速)(Multipass – First Pass (Fast))”。由於人們熱衷於使用三次編碼來獲得最理想的質量,所以可以考慮使用“快速”的第一次編碼模式。對於二次編碼,我建議使用標準的第一次編碼模式。雖然在第一次編碼中,使用快速模式來替代標準模式在大部分的標準中並不會造成任何大的損失,但我還是推薦在二次編碼中使用標準模式,以保證對大多數視頻及編碼的情況取得最佳的質量。
  • 以“千比特/秒(kbps)”爲單位的“目標比特率(Target Bitrate)”(B.)是分配給視頻的數據碼率。這個碼率越高,可視信息被壓縮的就越少,從而可以獲得更好的質量、更清晰的圖像、更少的人爲編碼因素以及更多的細節保留。可以考慮使用比特率計算器來計算決定視頻所採用的比特率以達到所需的體積大小(你可以通過在Doom9的論壇狩獵來找到這些,但請不要在那裏誤殺任何“sheep“)。我建議對高質量的視頻使用500到900的比特率,但正如我所說的那樣,這完全取決於你希望得到的文件大小。對一部電影來說,根據視頻的長度和複雜性的不同,合理的文件體積限制是500、700或1400MB(大量的細節和高度的運動是導致高複雜度的主要原因)。
  • 比特率變量(Bitrate Variance):對指定的比特率所允許的波動範圍(用百分比表示)。給編解碼器一個圍繞目標比特率的波動餘地,以備在某些情況下應付額外數據的需要。基本上需要比較接近你所選擇的比特率而保持一個較低的數值,從1%到4%。
  • “量化壓縮(Quantizer compression)”控制在複雜的和運動量較大的場景中的質量波動。參見下面的標題“高速度,高質量”中的描述。
  • 繼續在其他的選項卡中設定餘下的參數。
  • 在進行了滿意的設定和第一次編碼之後,重新輸入和你剛纔相同的編解碼器參數設定並在編碼類型菜單中選擇“多次編碼 - 第N次編碼(Multipass – Nth Pass)”,保持其他所有的選項和它們在第一次編碼中相同的設定。如果你希望進行三次編碼,再重複一次這個步驟。

編碼:高速度,高質量

這一部分介紹達到編碼質量和編碼速度的最佳組合的必要步驟。以下是在將編碼速度提升到最高的情況下,製作最高質量的AVC編碼的推薦設置。

  • “關鍵幀增益(%)(Keyframe boost (%))”(A.)控制關鍵幀(I幀、節點幀、轉場幀(I-frames, intra frames, the “scene-changer” frames))超出其他P幀而被增益的質量多少。增益會給這些關鍵幀一些外加的質量,因此從這些幀中預算出的幀也會具有較高的質量,即獲得更好的視覺效果。另外,關鍵幀經常會給一些靜止的場景提供背景基礎,在這些場景中,很多靜止的元素會在畫面上持續停留一段時間(特別是在一些慢節奏的動畫中),這樣,提升這些關鍵幀就顯得非常重要。保持這個數值在50到0之間(數值是0的話會獲得一個更一致的質量,所有的幀都被同樣地對待處理)以便達到一個可以被普遍接受的一致結果。對全局來說,40是一個推薦值;然而,在個別情況下,進行少許的增減可能會得到更好的效果(在低比特率/低質量的動畫編碼中增加該值,在現實題材的視頻或明亮的、背景經常變化或移動的連續快速運動的視頻中減少該值)。然而,在大多數的普遍情況下,只要你的片源不是太過特別——例如使用了大量的漸變場景轉換或者過於發灰或者發亮,抑或是發暗(在這種情況下你可能會想要調整它)——最好是不用過多地擔心這個選項。
  • “B幀縮減(%)(B-frames reduction (%))”(B.或者在比特率選項卡)控制B幀相對於其他的P幀所減少的量化值(質量)。對人類的視覺系統來說,這種在B幀的比特率上的減少很難被注意到,因爲B幀是不顯著地用於其他的P幀之間來更有效地重構視頻的運動。將這個值設定地低一些可以從本質上增加壓縮率,但是你就可能會遭致視頻的運動出現過多的人工計算因素和不協調地細節再現效果的懲罰。對高比特率和低量化值的現實題材的視頻,你可能想要將該值下降到略微低於30的推薦值,也許是25或者20,以此來保證一個更一致的細節質量、運動效果和視頻整體。對於動畫的內容(卡通、動畫等),你可以將這個值設定到50,對某些動畫的題材甚至可以到60,這是由動畫在運動的效果和細節變換的精確性上先天的侷限性所決定的。
  • 量化壓縮(%)(Quantizer compression(%))”(C.),也被理解爲“比特率變動(Bitrate Variability)”,控制x264在你所指定的比特率所確定的量化值(質量)的範圍內的波動幅度。這個選項設定得越低,量化(質量)的變化就會更趨於飄忽和不穩定。例如說,將該值設定爲0會允許x264在每一幀中劇烈地改變它的質量:缺點是一些“簡單”的幀(低細節、低運動量)會在你所選擇的比特率下顯示出驚人的效果,而其他“複雜”的幀(高細節、高運動量)顯示效果就會相當糟糕,因爲x264可能會劇烈地降低它的質量來維持所需的比特率,以獲得一個比較穩定的、恆定的比特率。然而,這個設定越高,質量就會趨於相等,從而獲得一個具有更加穩定的質量的視頻。例如,將該值設定爲100會強迫x264對所有的幀使用相同的質量(無波動),因此從理論上講,它可能給某一幀分配10kbps而另一幀是1000來保持兩者之間相同的質量(純VBR);所以從全局上看,所有的幀都會被一致地量化,按照質量波動的限制來處理同樣的質量,即使比特率可能會劇烈地波動。
  • 從這個角度來考慮:這個選項的功能正如其名稱所說。你將這個“比特率變動”設定得越小,從一個場景到下一個場景之間的比特率的變動就越少,但是其質量會顯得更爲恆定。
  • 這個選項的設定和個人的偏好有關,如果你不是特別明確地想要進行一個CBR的編碼(對數據流之類,在這種情況下你可以設定爲0)或者是等質量下的VBR編碼(在這種情況下你可以設定爲100),我強烈建議你保持默認值60不變以獲得最佳的質量。
  • 當然,比特率變動的控制只是在一個比特率可以被控制的模式中可用,例如多次編碼或者“單次編碼 – 比特率”模式(這裏我們將不討論這個模式),對於恆定量化的模式是不可用的,因爲它在質量上已經恆定了。
  • D.,E.和F.的焦點集中在所謂的量化限制上,同樣是只能用在比特率可控的模式中。對於大多數的編碼來說,你無需接觸到其中的任何一個。“最小QP(Min QP)”(D.)設定你的視頻在任意一點所能達到的最小量化值(最高質量)。如果你不是打算要在一個低分辨率的視頻上實現超高比特率的編碼,我的建議值是從10到15。類似地,設定你的視頻所能達到的最高量化值(最低質量)。這個設定甚至會更加困難,所以我推薦保持原來的數值而不必更改(默認值51),讓x264去決定每個場景的量化。51的最大值看起來雖然有些過度,但是幀的相對複雜度在可控比特率的量化過程中已經被納入了考慮範圍,而x264知道在這種條件下采取最好的處理方式。“最大QP間距(Max QP Step)”控制x264在兩個量化(質量)等級之間的變換速率。將這個值設定地過低會強迫編解碼器緩慢地變換質量等級,對那些可能突然地需要一個較低的量化值以維持相似的視覺效果的特定場景可能會造成一個毀滅性地打擊,而將這個值設定得過高可能會導致質量上的顯著跳變。
  • “場景切換閾值(Scene Cut Threshold)”(G.)在x264決定一次場景轉換之前,確定一幀所需要變化的程度(因此也會引入一個關鍵幀)。40是默認的推薦值,但是在每個視頻或每次編碼時稍作改變會對精確檢測場景變換大有裨益。對於昏暗、夜晚、洞穴、水下等等視頻,你可以減少這個值以使x264更精確地確定場景的變換。更一般的原則是,具有更精細的場景變換的視頻需要一個更高的場景切換閾值(例如45到50),而對那些明亮的、高對比度且具有顯著的場景變換的視頻,事實上則有理由嘗試設定一個較低的閾值(例如35)。同樣,需要認識到更短的關鍵幀間距最好工作在較低等級的關鍵幀增益下。
  • “最小IDR幀間距(Min IDR-frame interval)”(H.)設定在x264應用一個關鍵幀之前所需經過的最小幀數。通常來說,你所編碼的視頻的幀率即可用於該參數,以通過限制在一秒之內兩幀之間的幀數插入來有效地控制x264的幀數插入能力。如果這個值設定得過高,在x264沒有確定一個場景變換和實現必要的關鍵幀之前會浪費太多的時間,同樣也會導致點擊進度滑塊的滯後。而設定得過低將會導致比特率的浪費以及產生閃爍現象:在過短的時間內經過了過多的幀數,對人眼來說便無法識別分佈在它們之間的附加細節。正如之前所說,需要認識到更短的關鍵幀間距最好工作在較低等級的關鍵幀增益下。
  • “最大IDR幀間距(Max IDR-frame interval)”(I.) 設定在x264應用一個關鍵幀之前所需經過的最大幀數。通常地,將這個值設定爲你所編碼的視頻的幀率乘以10,即如果在10秒的時間內沒有確定場景變換,將會強制插入一個關鍵幀。將該值設定得過低將會導致關鍵幀的過飽和並可能產生閃爍現象,以及全面的比特率浪費,降低全局質量。將這個值設定得過高則會導致進度條的問題,而且在兩個關鍵幀之間的時間段內,任何人爲的、編碼的瑕疵都會在屏幕上存在得更久。然而,如果你不介意進度滑塊的拖動問題,尤其是你將場景切換閾值設定得足夠低以誘導產生有益的關鍵幀流入時,我相信將這個值設定到1000甚至是更高都是安全的。
  • VBV設定(未顯示)和數據率峯值以及變化的比特率有關。這些值是特定針對硬件解碼應用和AVC等級的,因此,如果你不是確切地知道在每一欄內應該填些什麼,就不要改變原有的默認值(0,0,90)。

 

下一個選項卡:體積與幀(MBs&Frames)

  • 區塊的搜索和確定被“區塊(Partitions)”標題之下在框格J中的選項所控制。該選項通過增加精度來提升編解碼器的質量和壓縮效率,獲得更高的質量輸出。作爲普遍的規則,編解碼器在可視信息上進行的搜索類型越多,它就能夠更精確、更有效率地預算和編碼,所以我推薦勾選它們全部。然而,有一個特殊的情況需要了解,這將在下一條中提到。
  • “8×8變換(8x8 Transform)”特性是一個非常強大的壓縮技術,它作用於更大的可視信息塊,並且可以開啓使用一些其他高質量的區塊選項,例如“8×8節點內搜尋(8x8 Intra search)”(L),它在不使用8×8變換時是不可用的。這兩個選項都能夠有效地提升質量,但8×8變換的使用會使得你的視頻成爲“High Profile AVC”,破壞編碼視頻“Main Profile AVC”的兼容性。如果沒有這項兼容,你的視頻可能無法在某些不支持“High Profile AVC”的解碼器上播放。目前,大多數主流或高端的桌面解碼器都支持high profit,所以採用這個特性(的視頻)在你的臺式機上播放是安全的。參照下面的“兼容性”部分以獲得更多關於設備兼容性的信息。
  • x264在一行中可以使用的最大B幀數量由選項M所控制。B幀是在兩個P幀(由I幀或關鍵幀預算出來的標準幀)之間的高壓縮的幀,作爲一種高效率的預算模式。它們會非常有效地提升壓縮率而帶來的視覺影響卻極其微小,即使它們相對於其他的幀來說通常會被分配一個較高的量化值(可參考上面的B選項)。只要選項P(“Adaptive”複選框)被選中,我建議你將這個限制提高到3或更高,那樣的話x264就可以在保持最佳質量的情況下自主地決定所採用的最佳B幀數量。
  • B幀“偏差(Bias)”(N)用於改變x264對B幀的使用。這個數值越高,x264就會越頻繁地插入B幀。例如將這個數值設定爲100會強制x264使用由框格M所指定的最大數量的B幀;然而,這個結果可以由簡單地去掉勾選“Adaptive”(P)來得到。將這個值設定爲-100則意味着幾乎不使用任何B幀——實際上,對大多數情況來說就是一幀都不使用。對大多數視頻來說,理想的B幀使用量在選擇偏差值爲0的時候往往是最好的,我也推薦保持這一數值。
  • X264編解碼器可以通過“使用B幀作爲參考幀(Use [B-frames] as references)”(O)來使用B-frame pyramid特性。對其他連續的B幀來使用B幀作爲參考幀可以提高少許的質量,因爲這些B幀可以從另一個B幀預算出來而不是被限制在使用它附近的P幀進行預算。B-pyramid在搭配使用最大3幀連續B幀的設定(M)時是最有效的。我推薦開啓這個選項,因爲它可以提高一些質量而幾乎不會降低速度。
  • “加權B幀預算(Weighted biprediction)”(Q)被選擇時可以允許B幀在預算時相對P幀或另一個幀獲得更大的權重。其結果是獲得更加準確和有效的B幀,從而提升質量。我強烈推薦勾選該項。
  • “雙向運動幀對照(Bidirectional ME)”(R)是一個新的特性,允許x264參照所要預算的B幀之前和之後的運動幀預算出一些B幀,以提升質量。勾選使用。
  • B幀指導模式(Direct B-frame mode)(S)可以使B幀使用“預算運動向量(predicted motion vectors)”來代替實際上的每一幀的運動編碼,以有效地節省空間和提升壓縮率。我建議將其設定爲“Auto”,尤其是在還未明確運動的不一致的存在的二次編碼的情況下。如果是在恆定量化編碼的模式中,而Auto出現了問題,那麼我建議對動畫和現實題材視頻的所有比特範圍均使用Spatial,但是由於極低比特率或者極高量化值的現實題材所具有的運動重構的流動性,需要對其使用Temporal。

下一個選項卡:其他(More...)

  • “分塊檢測(Partition Decision)”(A),也可以理解爲“Subpixel Refinement Quality”,是一個控制x264關於運動估算的範圍的重要特性。選擇菜單包含了一個具有7個選項的選單,依次從最低的質量“1(Fastest)”到最高的質量“6b(RDO on B-frames)”。要記住使用質量較高的選項會導致x264在運算確定方面“思考”得更多,從而降低更多的速度。由於這是在x264的質量(和速度)上起決定因素的選項,所以請將其確定在一個合適的範圍內。我建議將該值設定爲不低於‘5’。‘5’是一個可以允許使用“色度動態預測(Chroma ME)”(參見下面F的說明)的速度很快的選項。然而看起來比較可怕的“6(RDO)”對編碼的質量則大有裨益,因爲它採用了比率失真優化(rate distortion optimization)(RDO),這是一個以花費更多編碼時間爲代價來大幅提升分塊檢測質量(以及由此帶來的壓縮品質的提升)的特性。但是在我看來,使用比率失真優化(即‘6’)所帶來的大幅質量提升並不足以彌補其在編碼階段所大幅降低的速度,因此,除非你的CPU非常之快,我纔會推薦採用6。‘7’被稱作“Insane(精神錯亂的)”可謂名副其實,因爲(和6相比)它幾乎沒有提升多少質量而在速度方面的下降卻是一點兒也不含糊。
  • 'RDO for B-frames'對B幀也使用了比率失真優化,儘管使得編碼速度略有下降,但是給B幀帶來了較大的質量提升。我推薦選擇對B幀使用比率失真優化的參數。
  • 運動估算“方法(Method)”選項(B)可以讓用戶選擇x264如何檢索畫面的運動。這個方法越好,x264找到並且準確地記錄運動的可能性就越高,從而提升壓縮質量和效率。我建議對較慢的機器和缺乏時間的人羣使用“正六邊形檢索(Hexagonal search)”(水平、垂直和對角檢索),而此外則是使用“可變半徑六邊形檢索(Uneven Multi-Hexagon)”(通過複數的六邊形二進制組進行檢索)比較有優勢,由於其更加精確和具有擴展性的算法,將能夠帶來更佳的質量,編碼時間也會隨之提升。我不推薦使用“全面檢索(Exhaustive Search)”(強制一個像素一個像素地進行檢索);它並不會顯著地優於“ Uneven Multi-Hexagon”,而且會劇烈地降低速度,(一旦選擇了該選項,)如果你的編碼能夠在一週之內完成,算你走運。它看起來僅僅是爲了調試的目的來使用(編寫編解碼器的程序)而並非實際編碼。
  • 注意在使用“可變半徑六邊形檢索(Uneven Multi-Hexagon)”或“全面檢索(Exhaustive Search)”(請勿使用)時,用戶可以在框格(C)中指定搜索“半徑(Range)”。將其保持在16:這是優化算法的取值,通常會帶來最佳的速度和質量。但是,如果你有一個高分辨率的視頻而其幀率卻很低(小於15),可以考慮將該值稍微提高一點,可以是24或32(最大值)。同理,如果你有一個低分辨率的視頻而其幀率卻非常之高(大於60),你可以考慮降低該值至12或8以節約時間。
  • 你可以通過“最大參考幀數(Max Ref. Frames)”選項(D)來設定x264可以使用的參考幀數。AVC可以通過參考它之前編碼的相似幀來有效地編碼出新的幀。這個選項用於設置可以被參考的最大幀數。這個值設定得越高,編碼質量會越好,而編碼速度則會降低。對於現實題材,在大多數保持較高編碼速度的情況下,3到5便足夠了。對於動畫的題材,或者帶有冗餘的重複運動的題材,更多的參考幀可以帶來質量的顯著提高,因此在這裏我建議無論何時都在勾選“混合參考幀(Mixed Refs)”(G)的前提下采用5到10的設定值,混合參考幀可以使得x264擁有更大的自由來制定參考幀的子幀級別。
  • “快速P幀跳過(Fast Pskip)”(E)被使用以後,x264會加速其編碼過程,但有時候會導致在單調的場景或精細的漸變畫面中產生人爲編碼的痕跡。如果你很在意這些問題和現象,不勾選“快速P幀跳過”會有一定的幫助。禁止該選項(強制編解碼器徹底地檢測每一個區塊)之後,對全局的質量會產生及其微小的提升,以及一個細微卻很明顯的速度下降。因此我建議如果不是十分必要的話,勾選該選項。然而,如果你使用Trellis量化,你可能會想要取消勾選該項以追求最高的質量。這樣做可以使得Trellis在信息的揚棄不與其他選項衝突的情況下成爲量化的決定因素。
  • “DCT精簡(DCT Decimation)”(R)是指由x264來決定什麼時候可以忽略向數據流中寫入特定的DCT數據塊。也就是說,當x264確定不需要進行某個數據塊變換的時候,程序會允許x264直接跳過對其的編碼,以節約那些原本有可能被浪費在x264認爲是無用的信息上的比特率。從這方面看,DCT精簡和快速P幀跳過以及Trellis量化有相似之處,即由x264來判斷可以忽略的信息。然而,在當前的情況下,我推薦儘可能地勾選該項,因爲禁止它會導致在恆定量化下的更大的文件體積,而相對於編碼的比特率來說,質量的提升幾乎感覺不到。
  • “色度動態預測(Chroma ME)”(F)的工作原理是測定在運動估算期間視頻的色度,以提高運動估算的精度和視覺質量。這一般會帶來品質的重要提升,尤其是對動畫的題材。我建議總是勾選該項。
  • “採樣高寬比(Sample AR)”(H)處理視頻外觀的高寬比——如果你不瞭解其作用,可以無需接觸它。
  • “線程(Threads)”(I)用以設定x264分配給編碼進程的線程數。你可用的線程數應當與你電腦處理器的核心數相適應。需要記住每個支持超線程(HT)的處理器按兩個線程計算。如果你不知道你的CPU的核心數,或者其是否具有超線程(hyper threading),比較保險的辦法是將其設定爲1。設定多核心的優點僅僅是在多核心的機器上編碼的處理速度會快一些。
  • 調試記錄(Debug logging)(J):記錄編碼過程的相關信息。將其設定爲Error——它不會對一般水平的使用者提供(他們所需要的)更多的調試信息。
  • x264生成的AVI文件的FourCC(K)是其中(指AVI容器中)的視頻流的標識符。如果沒有特別指定,Xvid生成的AVI文件具有“XVID”的FourCC。對AVC文件來說,H264是一個可以被廣泛接受和支持的FourCC,依照AVC 1.1標準所建議,你最好保持其默認的H264。
  • CABAC,即雙向適應二進制算法編碼(L),是x264的main profile中的一項能夠允許視頻流的構成基礎參照之前和之後來進行預算的關鍵特性。它主要是用以在品質無損耗的前提下提升壓縮效率(依具體視頻和比特率的不同在10%~15%之間波動),而解碼速度會有輕微的下降(通常高比特率和低量化值會導致複雜的CABAC解碼)。如果將其禁止,x264會採用較低品質的CAVLC,同時你也就會失去使用Trellis量化特性的機會。我強烈建議你勾選該選項,除非你想要獲得一個儘可能快的解碼速度(Xbox、掌上電腦等等)。
  • “Trellis”(M)是一個通過選取在壓縮過程中存在於編碼文件中的數據來提升編碼的視覺品質的高級特性。它看上去像是提高了比特率的利用率,但是由於當你選擇一直開啓該選項(框格呈灰色並被選中)時會造成約10%的速度下降(即CLI中trellis 1和trellis 2的區別),而相對(正常選擇狀態)提升的品質比較有限,我建議將該選項置於正常選取狀態,而當你知道它將會造成問題時,完全取消勾選該項。
  • “交錯編碼(Interlacing)”(S)是一個可以使得x264對視頻源文件進行簡單的固定交錯編碼的特性。如果你的視頻源文件不是隔行的,或者你不知道這個選項的作用,最好是敬而遠之。反之,如果你確切地知道你的視頻源文件是隔行的,則勾選該項。注意:你必須取消勾選Trellis (M)並設定最大連續B幀(max consecutive B-frames,在“體積與幀(MBs&Frames)”選項卡下)爲0。
  • “降噪(Noise Reduction)”(O):如果你的視頻源文件有很多噪點(比如帶有很多類似電影的斑點或者錄像/抓取視頻時的靜電干擾),你可以在這裏設定一個降噪值。如果你沒有其他的降噪操作,這就是一個很好的預處理特性。範圍從0(關閉)到100(極大程度的降噪)。我通常將其設爲0,然而,這是在我事先知道我的視頻源文件看起來是我想要的那樣的前提下。如果我的目的是很低的比特率,由於降噪可以去除那些難以(被通過編碼的方式)壓縮的噪點,它就會對品質和比特率有所助益。
  • 參照下面的“去馬賽克教程”來獲得有關如何正確設置使用“去塊插件(Deblocking Filter)”(N)的相關信息。

去馬賽克教程(Deblocking Guide)

AVC格式內置了一個極其實用的特性,它可以消除馬賽克和其他人爲編碼的瑕疵,而這些問題曾經使得AVC之前的那些格式飽受困擾。它在AVC的編碼中相當實用,由於AVC是構築在這個濾鏡之上的事實以及你可能經歷到的在視頻中存在過多的馬賽克以及人爲編碼的瑕疵(糟糕的片源),一般來說在正常情況下不要禁止這個去塊插件。然而,因爲它會佔用大量的解碼時間,如果解碼器又不支持在播放時手動關閉它,你可能會考慮(在編碼時)禁止掉它以獲得儘可能快的解碼速度(Xbox、掌上電腦等等)。
應該有這樣的認識:即由於人類的視覺系統(human visual system (HVS))在空間上比較複雜的場景中往往會把瑕疵和馬賽克當作該場景的固有細節,因此去塊插件的使用在原則上常常會存在爭議。因爲x264會默認地除去這些人爲編碼的痕跡,人類的視覺系統便會以爲這是“損失了細節”,即使從技術角度來講,x264的細節處理其實相當精確——甚至在相近的比特率之下的表現有過之而無不及。事實上,已經有共識認爲(Doom9論壇的編解碼器性能對比也很好地支持這一觀點)x264確實是在致力於比ASP(未去馬賽克的)編解碼器在相近的比特率之下更精確地保持更多的細節。然而,去塊插件對人爲編碼瑕疵的去除仍然爲人類的視覺系統所幹涉並認爲它移除了本該存在的畫面細節,而存在這些虛假的“細節”的畫面正是人們在不使用去塊插件的情況下所習慣了的。對於那些認爲在編碼視頻中的噪點可以得到一個更爲柔和和舒服的畫面的人們來說,去塊插件對這些噪點的去除也並不討巧。這些偏好依據各人的情況是有所不同的,所以請努力地發現什麼樣的設定對你的眼睛和需求來說是最合適的。
Alpha去塊閾值“strength”(P)幫助決定需要多強的去塊效果來除去馬賽克。Beta去塊閾值“threshold”(見上圖的Q)確定有多少馬賽克需要去除。這個值設定得越高,x264就會將越多的視頻部分理解爲馬賽克(如果設定得過高,會將過多的視頻部分判斷爲馬賽克),因而會進行更多的去塊操作。當然,如果你對原材料“清洗”(比喻去塊)得不夠,在那些沒有被清洗到的地方就會有污漬(比喻馬賽克)殘留下來——就這樣按照清洗襯衫的方法來考慮它——而如果你清洗的強度不夠,有些污漬便不會完全消失。然而,如果你洗得過多,力量過強,你就會毀掉這件襯衫而不是清洗污漬了——會有很難看的褪色,並且紋理和細節都被抹掉了。

兩個滑動條的初始設置都是0,這是爲什麼呢?這是能夠在去塊和細節保留之間取得計量平衡以產生最高質量的標準值。然而,如果你對默認的0,0編碼的結果不滿意,可以參考下面的意見:
不要超過-3到2的範圍(對兩個滑動條來說都是如此)。一般地說,超過2會使解碼的結果過於模糊,而低於-3會使結果看起來有點過於銳利——感覺也不會好,因爲所有的掩蓋都被去除了,細節的缺乏只會顯得更加突出。
如果你在編碼一個動畫類的視頻源文件,推薦使用比較強的去塊(將兩個滑動條都設置爲1)以儘可能地去除所有的馬賽克。這是由於動畫視頻內容的邊緣具有很高的反差對比,需要去除的馬賽克之類會具有較高的抵抗力。從另一個方面說,如果你在編碼一個現實題材的視頻,尤其是具有複雜的紋理和較低的亮度的那種,則應該考慮降低去塊的強度以保持這些細節,以免出現過度的模糊。
努力在這兩個設定之間保持一種確定的關係。即如果你想要進行更強力的去塊,那麼就要確定你同時也提升了閾值以便於使更多的部分得到去塊處理,反之亦然(如1,1;2,2;-1,-1;等)。回憶一下那個洗衣服的比方:你不會想要只是很強力地去清洗一小塊地方而其他的部分都沒有被清洗到(對於一件普通的待清洗衣物來說),這樣的話沒有清洗到的部分會顯得突出而生硬,帶來很糟糕的視覺效果。
在高比特率下,爲了儘可能保持最多的細節,我建議對兩個設置嘗試採取-1的設定(閾值可達-2)。然而,根據視頻源文件的情況(梯度、紋理和對比度)、採用的比特率以及個人偏好,對其中之一或全部兩個設置來說,0可能仍然是最理想的設置。

歡迎來到DeathTheSheep的AVC VfW編碼教程,這個內容豐富而易用的教程將會在AVC編碼中最大限度地幫助您。不論您是新手還是想要在編碼細節方面增進理解的專家,都可以在本教程中學到相應的知識。基本上,您可以用本教程替代任何有關Xvid/Divx的設置教程。下面就讓我們前進吧!

然而,我們首先需要提出一些術語。爲了充分利用本教程,我們最好對這些編碼相關的詞彙及其用法有一個瞭解。

1.編解碼器(Codec):壓縮器(Compressor)/解壓縮器(Decompressor)。這裏,x264是一個編解碼器,也被稱作“編碼器(encoder)”。Divx是一個編解碼器,Xvid也是一個編解碼器。如果你下載了DTS_x264的程序包,你會得到一個編碼器(壓縮視頻的部分)和一個被稱爲“解碼器(decoder)”的解壓縮器(使你能夠播放你製作或者“編碼”的視頻的那一部分)。由於你可能並不需要調整解碼軟件,這個教程便沒有提及這方面的內容。值得注意的是,“編解碼器(Codec)”同“標準(Standard)”是有區別的:H.264是x264所基於的標準,MPEG4-ASP是Xvid和Divx所基於的標準。MPEG4既不是編解碼器,也不是MP3,而是一個標準。

2.比特率(碼率、Bitrate):這和你編碼生成的最終文件的大小(“filesize”)有關。比特率越高,文件質量就越高,而文件體積也會越大。它通常用(數據量/時間)的單位形式來表示,例如“千比特/秒(KB/sec)”或者kbps。在視頻中,有大量運動的場景通常需要較高的比特率來將畫面質量維持在一個可以接受的水準;因爲運動量越大,編解碼器就需要將更多的數據儲存在文件中。

3.量化(Quantizer):編解碼器決定質量的基礎單位。注意較高的量化值會產生較低的質量和比特率。

4.Pass:對輸入的源文件進行一輪完整的處理。根據你所選擇的模式不同,編解碼器會對文件進行特定次數的全局處理。第一次的全局處理("Pass 1" 或 "First Pass")通常是用來對源視頻文件有一個總體的瞭解,編解碼器同時會將這些結果寫入到一個被稱作pass file的文件中,該文件會(作爲參考)用來對視頻文件進行第二次或者第三次的處理,以決定如何對視頻文件分配比特率和量化值,從而達到(在給定條件下)它所能達到的最好質量。需要注意的是在恆定質量或恆定量化的模式中,由於編解碼器已經知道了採用怎樣的質量進行編碼,所以只會用one pass(一次編碼)的方式,而這個質量值是由使用者設定的。同時它的比特率也是獨立的,編解碼器會以一種簡單的方式儘可能多地調用它所需的比特率來達到給定的質量。

5.編碼速度(Encoding Speed):其定義爲:“在任意特定的時間點內,編碼器處理/編碼整個文件所需要的時間,用幀/秒(frames/sec、fps)來表示”。意思是在編碼過程中,會有一個全局的或平均的編碼速度(根據從開始到完成所花費的時間)和一個在每個視頻場景改變時的瞬時編碼速度。在處理運動變化較爲激烈的場景時,編碼速度會趨向於更慢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章