AVC/H264編碼教程
原作:DeathTheSheep
翻譯:Tenlix
編碼次數(應當選擇何種編碼模式)
如果你想要得到一個(gè)確定的文件體積,我推薦采用二次編碼的模式。例如,你希望你生成的文件體積為精確的170.00MB,那么你就需要采用二次或三次編碼。嚴格地說(shuō),一次編碼針對的是那些嚴重缺乏時(shí)間或者并不期望得到高質(zhì)量輸出的人。二次編碼能夠滿(mǎn)足大部分人的需要,它可以生成高質(zhì)量的文件和確切的文件體積。然而,單次編碼模式有時(shí)候會(huì )被用于恒定質(zhì)量的輸出。如果你想要編碼得到的是一個(gè)統一的、恒定質(zhì)量的視頻而并不在意文件的體積,那么可以參見(jiàn)下面的“恒定量化和恒定質(zhì)量模式”部分。
恒定量化和恒定編碼模式
如果你并不需要你的視頻得到一個(gè)固定的、明確的體積,或者想讓編碼器來(lái)決定分配多大的文件體積來(lái)獲得最佳的質(zhì)量,那么可以考慮一下通過(guò)“單次編碼 - 量化(Single Pass -Quantizer)”或“恒定質(zhì)量(ConstantQuality)”模式來(lái)進(jìn)行固定質(zhì)量的編碼。這兩種模式的不同之處在于“恒定質(zhì)量”模式采用了更為先進(jìn)的比率控制算法,能夠在復雜度較高而人眼不太注重細節的場(chǎng)景下降低比特率。這就意味著(zhù)即使質(zhì)量針對人眼的視覺(jué)效果進(jìn)行了動(dòng)態(tài)分配,它看起來(lái)也仍然是恒定的。很多人可能會(huì )因為恒定質(zhì)量模式的這種設計而認為該模式要更勝一籌,但是如果你編碼的是比特率很低的動(dòng)畫(huà)視頻,量化也許是個(gè)更好的選擇。
- 確定你在編碼選擇菜單(A.)中選擇了 “單次編碼 - 量化”或者“恒定質(zhì)量”模式。
- 記住更高的量化值或“質(zhì)量”模式(B.) 將會(huì )使視頻的實(shí)際質(zhì)量更低,而文件體積會(huì )更小。“質(zhì)量”和量化值相近,但是被乘以了10。
- 除非你是為了存檔(收藏)或再現(原來(lái) 的)品質(zhì),否則請不要使用15(或150)以下的量化值。
- 同樣地,也不要使該值大于40(或 400):即使最終的文件體積會(huì )小到難以置信,這種編碼的質(zhì)量也會(huì )使人難以接受,除非你編碼的視頻具有極其銳利的畫(huà)質(zhì)和反差極大的邊緣表現。
- 對大多數熱衷于高質(zhì)量視頻的人來(lái)說(shuō),比較 好的估計值是在20(或200)(最高質(zhì)量)到30(或300)(相對較低的質(zhì)量)的范圍內,根據個(gè)人的偏好和硬盤(pán)為編碼文件所預備的空間來(lái)進(jìn)行具體選 擇。
- 對于卡通動(dòng)畫(huà)之類(lèi)幾乎沒(méi)有什么復雜紋理的 視頻可以考慮使用比較高一些的量化值。
- 對于現實(shí)的題材,特別是那種具有很多晦暗 的場(chǎng)景和重要而精細的紋路的視頻,應當考慮將量化值降低一個(gè)較大的幅度。
- 繼續在其他的選項卡中設定余下的參數。
- 在恒定質(zhì)量模式中,“量化壓縮 (Quantizer compression)”用以控制在復雜的和高運動(dòng)量的場(chǎng)景中的質(zhì)量波動(dòng),可以參考下面的標題“高速度,高質(zhì)量”中的描述。
- 在其他的選項卡中進(jìn)行其余的設定。
- 在編碼類(lèi)型菜單(A.)中選擇“多次編碼 - 第一次編碼(Multipass – First Pass)”或者“多次編碼 - 第一次編碼(快速)(Multipass – First Pass (Fast))”。由于人們熱衷于使用三次編碼來(lái)獲得最理想的質(zhì)量,所以可以考慮使用“快速”的第一次編碼模式。對于二次編碼,我建議使用標準的第一次編 碼模式。雖然在第一次編碼中,使用快速模式來(lái)替代標準模式在大部分的標準中并不會(huì )造成任何大的損失,但我還是推薦在二次編碼中使用標準模式,以保證對大多 數視頻及編碼的情況取得最佳的質(zhì)量。
- 以“千比特/秒(kbps)”為單位的“目標比特率(Target Bitrate)”(B.)是分配給視頻的數據碼率。這個(gè)碼率越高,可視信息被壓縮的就越少,從而可以獲得更好的質(zhì)量、更清晰的圖像、更少的人為編碼因素 以及更多的細節保留??梢钥紤]使用比特率計算器來(lái)計算決定視頻所采用的比特率以達到所需的體積大?。憧梢酝ㄟ^(guò)在Doom9的論壇狩獵來(lái)找到這些,但請不 要在那里誤殺任何“sheep“)。我建議對高質(zhì)量的視頻使用500到900的比特率,但正如我所說(shuō)的那樣,這完全取決于你希望得到的文件大小。對一部電 影來(lái)說(shuō),根據視頻的長(cháng)度和復雜性的不同,合理的文件體積限制是500、700或1400MB(大量的細節和高度的運動(dòng)是導致高復雜度的主要原因)。
- 比特率變量(Bitrate Variance):對指定的比特率所允許的波動(dòng)范圍(用百分比表示)。給編解碼器一個(gè)圍繞目標比特率的波動(dòng)余地,以備在某些情況下應付額外數據的需要。 基本上需要比較接近你所選擇的比特率而保持一個(gè)較低的數值,從1%到4%。
- “量化壓縮(Quantizer compression)”控制在復雜的和運動(dòng)量較大的場(chǎng)景中的質(zhì)量波動(dòng)。參見(jiàn)下面的標題“高速度,高質(zhì)量”中的描述。
- 繼續在其他的選項卡中設定余下的參數。
- 在進(jìn)行了滿(mǎn)意的設定和第一次編碼之后,重新輸入和你剛才相同的編解碼器參數設定并在編碼類(lèi)型菜單中選擇“多次編碼 - 第N次編碼(Multipass – Nth Pass)”,保持其他所有的選項和它們在第一次編碼中相同的設定。如果你希望進(jìn)行三次編碼,再重復一次這個(gè)步驟。
編碼:高速度,高質(zhì)量
這一部分介紹達到編碼質(zhì)量和編碼速度的最佳組合的必要步驟。以下是在將編碼速度提升到最高的情況下,制作最高質(zhì)量的AVC編碼的推薦設置。
- “關(guān)鍵幀增益(%)(Keyframe boost (%))”(A.)控制關(guān)鍵幀(I幀、節點(diǎn)幀、轉場(chǎng)幀(I-frames, intra frames, the “scene-changer” frames))超出其他P幀而被增益的質(zhì)量多少。增益會(huì )給這些關(guān)鍵幀一些外加的質(zhì)量,因此從這些幀中預算出的幀也會(huì )具有較高的質(zhì)量,即獲得更好的視覺(jué)效 果。另外,關(guān)鍵幀經(jīng)常會(huì )給一些靜止的場(chǎng)景提供背景基礎,在這些場(chǎng)景中,很多靜止的元素會(huì )在畫(huà)面上持續停留一段時(shí)間(特別是在一些慢節奏的動(dòng)畫(huà)中),這樣, 提升這些關(guān)鍵幀就顯得非常重要。保持這個(gè)數值在50到0之間(數值是0的話(huà)會(huì )獲得一個(gè)更一致的質(zhì)量,所有的幀都被同樣地對待處理)以便達到一個(gè)可以被普遍 接受的一致結果。對全局來(lái)說(shuō),40是一個(gè)推薦值;然而,在個(gè)別情況下,進(jìn)行少許的增減可能會(huì )得到更好的效果(在低比特率/低質(zhì)量的動(dòng)畫(huà)編碼中增加該值,在 現實(shí)題材的視頻或明亮的、背景經(jīng)常變化或移動(dòng)的連續快速運動(dòng)的視頻中減少該值)。然而,在大多數的普遍情況下,只要你的片源不是太過(guò)特別——例如使用了大 量的漸變場(chǎng)景轉換或者過(guò)于發(fā)灰或者發(fā)亮,抑或是發(fā)暗(在這種情況下你可能會(huì )想要調整它)——最好是不用過(guò)多地擔心這個(gè)選項。
- “B幀縮減(%)(B-frames reduction (%))”(B.或者在比特率選項卡)控制B幀相對于其他的P幀所減少的量化值(質(zhì)量)。對人類(lèi)的視覺(jué)系統來(lái)說(shuō),這種在B幀的比特率上的減少很難被注意 到,因為B幀是不顯著(zhù)地用于其他的P幀之間來(lái)更有效地重構視頻的運動(dòng)。將這個(gè)值設定地低一些可以從本質(zhì)上增加壓縮率,但是你就可能會(huì )遭致視頻的運動(dòng)出現過(guò) 多的人工計算因素和不協(xié)調地細節再現效果的懲罰。對高比特率和低量化值的現實(shí)題材的視頻,你可能想要將該值下降到略微低于30的推薦值,也許是25或者 20,以此來(lái)保證一個(gè)更一致的細節質(zhì)量、運動(dòng)效果和視頻整體。對于動(dòng)畫(huà)的內容(卡通、動(dòng)畫(huà)等),你可以將這個(gè)值設定到50,對某些動(dòng)畫(huà)的題材甚至可以到 60,這是由動(dòng)畫(huà)在運動(dòng)的效果和細節變換的精確性上先天的局限性所決定的。
- 量化壓縮(%)(Quantizer compression(%))”(C.),也被理解為“比特率變動(dòng)(Bitrate Variability)”,控制x264在你所指定的比特率所確定的量化值(質(zhì)量)的范圍內的波動(dòng)幅度。這個(gè)選項設定得越低,量化(質(zhì)量)的變化就會(huì )更 趨于飄忽和不穩定。例如說(shuō),將該值設定為0會(huì )允許x264在每一幀中劇烈地改變它的質(zhì)量:缺點(diǎn)是一些“簡(jiǎn)單”的幀(低細節、低運動(dòng)量)會(huì )在你所選擇的比特 率下顯示出驚人的效果,而其他“復雜”的幀(高細節、高運動(dòng)量)顯示效果就會(huì )相當糟糕,因為x264可能會(huì )劇烈地降低它的質(zhì)量來(lái)維持所需的比特率,以獲得 一個(gè)比較穩定的、恒定的比特率。然而,這個(gè)設定越高,質(zhì)量就會(huì )趨于相等,從而獲得一個(gè)具有更加穩定的質(zhì)量的視頻。例如,將該值設定為100會(huì )強迫x264 對所有的幀使用相同的質(zhì)量(無(wú)波動(dòng)),因此從理論上講,它可能給某一幀分配10kbps而另一幀是1000來(lái)保持兩者之間相同的質(zhì)量(純VBR);所以從 全局上看,所有的幀都會(huì )被一致地量化,按照質(zhì)量波動(dòng)的限制來(lái)處理同樣的質(zhì)量,即使比特率可能會(huì )劇烈地波動(dòng)。
- 從這個(gè)角度來(lái)考慮:這個(gè)選項的功能正如其 名稱(chēng)所說(shuō)。你將這個(gè)“比特率變動(dòng)”設定得越小,從一個(gè)場(chǎng)景到下一個(gè)場(chǎng)景之間的比特率的變動(dòng)就越少,但是其質(zhì)量會(huì )顯得更為恒定。
- 這個(gè)選項的設定和個(gè)人的偏好有關(guān),如果你 不是特別明確地想要進(jìn)行一個(gè)CBR的編碼(對數據流之類(lèi),在這種情況下你可以設定為0)或者是等質(zhì)量下的VBR編碼(在這種情況下你可以設定為100), 我強烈建議你保持默認值60不變以獲得最佳的質(zhì)量。
- 當然,比特率變動(dòng)的控制只是在一個(gè)比特率 可以被控制的模式中可用,例如多次編碼或者“單次編碼 – 比特率”模式(這里我們將不討論這個(gè)模式),對于恒定量化的模式是不可用的,因為它在質(zhì)量上已經(jīng)恒定了。
- D.,E.和F.的焦點(diǎn)集中在所謂的量化限制上,同樣是只能用在比特率可控的模式中。對于大多數的編碼來(lái)說(shuō),你無(wú) 需接觸到其中的任何一個(gè)。“最小QP(Min QP)”(D.)設定你的視頻在任意一點(diǎn)所能達到的最小量化值(最高質(zhì)量)。如果你不是打算要在一個(gè)低分辨率的視頻上實(shí)現超高比特率的編碼,我的建議值是 從10到15。類(lèi)似地,設定你的視頻所能達到的最高量化值(最低質(zhì)量)。這個(gè)設定甚至會(huì )更加困難,所以我推薦保持原來(lái)的數值而不必更改(默認值51),讓 x264去決定每個(gè)場(chǎng)景的量化。51的最大值看起來(lái)雖然有些過(guò)度,但是幀的相對復雜度在可控比特率的量化過(guò)程中已經(jīng)被納入了考慮范圍,而x264知道在這 種條件下采取最好的處理方式。“最大QP間距(Max QP Step)”控制x264在兩個(gè)量化(質(zhì)量)等級之間的變換速率。將這個(gè)值設定地過(guò)低會(huì )強迫編解碼器緩慢地變換質(zhì)量等級,對那些可能突然地需要一個(gè)較低的 量化值以維持相似的視覺(jué)效果的特定場(chǎng)景可能會(huì )造成一個(gè)毀滅性地打擊,而將這個(gè)值設定得過(guò)高可能會(huì )導致質(zhì)量上的顯著(zhù)跳變。
- “場(chǎng)景切換閾值(Scene Cut Threshold)”(G.)在x264決定一次場(chǎng)景轉換之前,確定一幀所需要變化的程度(因此也會(huì )引入一個(gè)關(guān)鍵幀)。40是默認的推薦值,但是在每個(gè) 視頻或每次編碼時(shí)稍作改變會(huì )對精確檢測場(chǎng)景變換大有裨益。對于昏暗、夜晚、洞穴、水下等等視頻,你可以減少這個(gè)值以使x264更精確地確定場(chǎng)景的變換。更 一般的原則是,具有更精細的場(chǎng)景變換的視頻需要一個(gè)更高的場(chǎng)景切換閾值(例如45到50),而對那些明亮的、高對比度且具有顯著(zhù)的場(chǎng)景變換的視頻,事實(shí)上 則有理由嘗試設定一個(gè)較低的閾值(例如35)。同樣,需要認識到更短的關(guān)鍵幀間距最好工作在較低等級的關(guān)鍵幀增益下。
- “最小IDR幀間距(Min IDR-frame interval)”(H.)設定在x264應用一個(gè)關(guān)鍵幀之前所需經(jīng)過(guò)的最小幀數。通常來(lái)說(shuō),你所編碼的視頻的幀率即可用于該參數,以通過(guò)限制在一秒之 內兩幀之間的幀數插入來(lái)有效地控制x264的幀數插入能力。如果這個(gè)值設定得過(guò)高,在x264沒(méi)有確定一個(gè)場(chǎng)景變換和實(shí)現必要的關(guān)鍵幀之前會(huì )浪費太多的時(shí) 間,同樣也會(huì )導致點(diǎn)擊進(jìn)度滑塊的滯后。而設定得過(guò)低將會(huì )導致比特率的浪費以及產(chǎn)生閃爍現象:在過(guò)短的時(shí)間內經(jīng)過(guò)了過(guò)多的幀數,對人眼來(lái)說(shuō)便無(wú)法識別分布在 它們之間的附加細節。正如之前所說(shuō),需要認識到更短的關(guān)鍵幀間距最好工作在較低等級的關(guān)鍵幀增益下。
- “最大IDR幀間距(Max IDR-frame interval)”(I.) 設定在x264應用一個(gè)關(guān)鍵幀之前所需經(jīng)過(guò)的最大幀數。通常地,將這個(gè)值設定為你所編碼的視頻的幀率乘以10,即如果在10秒的時(shí)間內沒(méi)有確定場(chǎng)景變換, 將會(huì )強制插入一個(gè)關(guān)鍵幀。將該值設定得過(guò)低將會(huì )導致關(guān)鍵幀的過(guò)飽和并可能產(chǎn)生閃爍現象,以及全面的比特率浪費,降低全局質(zhì)量。將這個(gè)值設定得過(guò)高則會(huì )導致 進(jìn)度條的問(wèn)題,而且在兩個(gè)關(guān)鍵幀之間的時(shí)間段內,任何人為的、編碼的瑕疵都會(huì )在屏幕上存在得更久。然而,如果你不介意進(jìn)度滑塊的拖動(dòng)問(wèn)題,尤其是你將場(chǎng)景 切換閾值設定得足夠低以誘導產(chǎn)生有益的關(guān)鍵幀流入時(shí),我相信將這個(gè)值設定到1000甚至是更高都是安全的。
- VBV設定(未顯示)和數據率峰值以及變化的比特率有關(guān)。這些值是特定針對硬件解碼應用和AVC等級的,因此,如 果你不是確切地知道在每一欄內應該填些什么,就不要改變原有的默認值(0,0,90)。
下一個(gè)選項卡:體積與幀(MBs&Frames)
- 區塊的搜索和確定被“區塊 (Partitions)”標題之下在框格J中的選項所控制。該選項通過(guò)增加精度來(lái)提升編解碼器的質(zhì)量和壓縮效率,獲得更高的質(zhì)量輸出。作為普遍的規則, 編解碼器在可視信息上進(jìn)行的搜索類(lèi)型越多,它就能夠更精確、更有效率地預算和編碼,所以我推薦勾選它們全部。然而,有一個(gè)特殊的情況需要了解,這將在下一 條中提到。
- “8×8變換(8x8 Transform)”特性是一個(gè)非常強大的壓縮技術(shù),它作用于更大的可視信息塊,并且可以開(kāi)啟使用一些其他高質(zhì)量的區塊選項,例如“8×8節點(diǎn)內搜尋 (8x8 Intra search)”(L),它在不使用8×8變換時(shí)是不可用的。這兩個(gè)選項都能夠有效地提升質(zhì)量,但8×8變換的使用會(huì )使得你的視頻成為“High Profile AVC”,破壞編碼視頻“Main Profile AVC”的兼容性。如果沒(méi)有這項兼容,你的視頻可能無(wú)法在某些不支持“High Profile AVC”的解碼器上播放。目前,大多數主流或高端的桌面解碼器都支持high profit,所以采用這個(gè)特性(的視頻)在你的臺式機上播放是安全的。參照下面的“兼容性”部分以獲得更多關(guān)于設備兼容性的信息。
- x264在一行中可以使用的最大B幀數量 由選項M所控制。B幀是在兩個(gè)P幀(由I幀或關(guān)鍵幀預算出來(lái)的標準幀)之間的高壓縮的幀,作為一種高效率的預算模式。它們會(huì )非常有效地提升壓縮率而帶來(lái)的 視覺(jué)影響卻極其微小,即使它們相對于其他的幀來(lái)說(shuō)通常會(huì )被分配一個(gè)較高的量化值(可參考上面的B選項)。只要選項P(“Adaptive”復選框)被選 中,我建議你將這個(gè)限制提高到3或更高,那樣的話(huà)x264就可以在保持最佳質(zhì)量的情況下自主地決定所采用的最佳B幀數量。
- B幀“偏差(Bias)”(N)用于改變x264對B幀的使用。這個(gè)數值越高,x264就會(huì )越頻繁地插入B幀。例 如將這個(gè)數值設定為100會(huì )強制x264使用由框格M所指定的最大數量的B幀;然而,這個(gè)結果可以由簡(jiǎn)單地去掉勾選“Adaptive”(P)來(lái)得到。將 這個(gè)值設定為-100則意味著(zhù)幾乎不使用任何B幀——實(shí)際上,對大多數情況來(lái)說(shuō)就是一幀都不使用。對大多數視頻來(lái)說(shuō),理想的B幀使用量在選擇偏差值為0的 時(shí)候往往是最好的,我也推薦保持這一數值。
- X264編解碼器可以通過(guò)“使用B幀作為參考幀(Use [B-frames] as references)”(O)來(lái)使用B-frame pyramid特性。對其他連續的B幀來(lái)使用B幀作為參考幀可以提高少許的質(zhì)量,因為這些B幀可以從另一個(gè)B幀預算出來(lái)而不是被限制在使用它附近的P幀進(jìn) 行預算。B-pyramid在搭配使用最大3幀連續B幀的設定(M)時(shí)是最有效的。我推薦開(kāi)啟這個(gè)選項,因為它可以提高一些質(zhì)量而幾乎不會(huì )降低速度。
- “加權B幀預算(Weighted biprediction)”(Q)被選擇時(shí)可以允許B幀在預算時(shí)相對P幀或另一個(gè)幀獲得更大的權重。其結果是獲得更加準確和有效的B幀,從而提升質(zhì)量。 我強烈推薦勾選該項。
- “雙向運動(dòng)幀對照(Bidirectional ME)”(R)是一個(gè)新的特性,允許x264參照所要預算的B幀之前和之后的運動(dòng)幀預算出一些B幀,以提升質(zhì)量。勾選使用。
- B幀指導模式(Direct B-frame mode)(S)可以使B幀使用“預算運動(dòng)向量(predicted motion vectors)”來(lái)代替實(shí)際上的每一幀的運動(dòng)編碼,以有效地節省空間和提升壓縮率。我建議將其設定為“Auto”,尤其是在還未明確運動(dòng)的不一致的存在 的二次編碼的情況下。如果是在恒定量化編碼的模式中,而Auto出現了問(wèn)題,那么我建議對動(dòng)畫(huà)和現實(shí)題材視頻的所有比特范圍均使用Spatial,但是由 于極低比特率或者極高量化值的現實(shí)題材所具有的運動(dòng)重構的流動(dòng)性,需要對其使用Temporal。
下一個(gè)選項卡:其他(More...)
- “分塊檢測(Partition Decision)”(A),也可以理解為“Subpixel Refinement Quality”,是一個(gè)控制x264關(guān)于運動(dòng)估算的范圍的重要特性。選擇菜單包含了一個(gè)具有7個(gè)選項的選單,依次從最低的質(zhì)量“1(Fastest)” 到最高的質(zhì)量“6b(RDO on B-frames)”。要記住使用質(zhì)量較高的選項會(huì )導致x264在運算確定方面“思考”得更多,從而降低更多的速度。由于這是在x264的質(zhì)量(和速度) 上起決定因素的選項,所以請將其確定在一個(gè)合適的范圍內。我建議將該值設定為不低于‘5’。‘5’是一個(gè)可以允許使用“色度動(dòng)態(tài)預測(Chroma ME)”(參見(jiàn)下面F的說(shuō)明)的速度很快的選項。然而看起來(lái)比較可怕的“6(RDO)”對編碼的質(zhì)量則大有裨益,因為它采用了比率失真優(yōu)化(rate distortion optimization)(RDO),這是一個(gè)以花費更多編碼時(shí)間為代價(jià)來(lái)大幅提升分塊檢測質(zhì)量(以及由此帶來(lái)的壓縮品質(zhì)的提升)的特性。但是在我看 來(lái),使用比率失真優(yōu)化(即‘6’)所帶來(lái)的大幅質(zhì)量提升并不足以彌補其在編碼階段所大幅降低的速度,因此,除非你的CPU非常之快,我才會(huì )推薦采用6。 ‘7’被稱(chēng)作“Insane(精神錯亂的)”可謂名副其實(shí),因為(和6相比)它幾乎沒(méi)有提升多少質(zhì)量而在速度方面的下降卻是一點(diǎn)兒也不含糊。
- 'RDO for B-frames'對B幀也使用了比率失真優(yōu)化,盡管使得編碼速度略有下降,但是給B幀帶來(lái)了較大的質(zhì)量提升。我推薦選擇對B幀使用比率失真優(yōu)化的參數。
- 運動(dòng)估算“方法(Method)”選項 (B)可以讓用戶(hù)選擇x264如何檢索畫(huà)面的運動(dòng)。這個(gè)方法越好,x264找到并且準確地記錄運動(dòng)的可能性就越高,從而提升壓縮質(zhì)量和效率。我建議對較慢 的機器和缺乏時(shí)間的人群使用“正六邊形檢索(Hexagonal search)”(水平、垂直和對角檢索),而此外則是使用“可變半徑六邊形檢索(Uneven Multi-Hexagon)”(通過(guò)復數的六邊形二進(jìn)制組進(jìn)行檢索)比較有優(yōu)勢,由于其更加精確和具有擴展性的算法,將能夠帶來(lái)更佳的質(zhì)量,編碼時(shí)間也 會(huì )隨之提升。我不推薦使用“全面檢索(Exhaustive Search)”(強制一個(gè)像素一個(gè)像素地進(jìn)行檢索);它并不會(huì )顯著(zhù)地優(yōu)于“ Uneven Multi-Hexagon”,而且會(huì )劇烈地降低速度,(一旦選擇了該選項,)如果你的編碼能夠在一周之內完成,算你走運。它看起來(lái)僅僅是為了調試的目的 來(lái)使用(編寫(xiě)編解碼器的程序)而并非實(shí)際編碼。
- 注意在使用“可變半徑六邊形檢索 (Uneven Multi-Hexagon)”或“全面檢索(Exhaustive Search)”(請勿使用)時(shí),用戶(hù)可以在框格(C)中指定搜索“半徑(Range)”。將其保持在16:這是優(yōu)化算法的取值,通常會(huì )帶來(lái)最佳的速度和 質(zhì)量。但是,如果你有一個(gè)高分辨率的視頻而其幀率卻很低(小于15),可以考慮將該值稍微提高一點(diǎn),可以是24或32(最大值)。同理,如果你有一個(gè)低分 辨率的視頻而其幀率卻非常之高(大于60),你可以考慮降低該值至12或8以節約時(shí)間。
- 你可以通過(guò)“最大參考幀數(Max Ref. Frames)”選項(D)來(lái)設定x264可以使用的參考幀數。AVC可以通過(guò)參考它之前編碼的相似幀來(lái)有效地編碼出新的幀。這個(gè)選項用于設置可以被參考 的最大幀數。這個(gè)值設定得越高,編碼質(zhì)量會(huì )越好,而編碼速度則會(huì )降低。對于現實(shí)題材,在大多數保持較高編碼速度的情況下,3到5便足夠了。對于動(dòng)畫(huà)的題 材,或者帶有冗余的重復運動(dòng)的題材,更多的參考幀可以帶來(lái)質(zhì)量的顯著(zhù)提高,因此在這里我建議無(wú)論何時(shí)都在勾選“混合參考幀(Mixed Refs)”(G)的前提下采用5到10的設定值,混合參考幀可以使得x264擁有更大的自由來(lái)制定參考幀的子幀級別。
- “快速P幀跳過(guò)(Fast Pskip)”(E)被使用以后,x264會(huì )加速其編碼過(guò)程,但有時(shí)候會(huì )導致在單調的場(chǎng)景或精細的漸變畫(huà)面中產(chǎn)生人為編碼的痕跡。如果你很在意這些問(wèn)題和 現象,不勾選“快速P幀跳過(guò)”會(huì )有一定的幫助。禁止該選項(強制編解碼器徹底地檢測每一個(gè)區塊)之后,對全局的質(zhì)量會(huì )產(chǎn)生及其微小的提升,以及一個(gè)細微卻 很明顯的速度下降。因此我建議如果不是十分必要的話(huà),勾選該選項。然而,如果你使用Trellis量化,你可能會(huì )想要取消勾選該項以追求最高的質(zhì)量。這樣 做可以使得Trellis在信息的揚棄不與其他選項沖突的情況下成為量化的決定因素。
- “DCT精簡(jiǎn)(DCT Decimation)”(R)是指由x264來(lái)決定什么時(shí)候可以忽略向數據流中寫(xiě)入特定的DCT數據塊。也就是說(shuō),當x264確定不需要進(jìn)行某個(gè)數據塊 變換的時(shí)候,程序會(huì )允許x264直接跳過(guò)對其的編碼,以節約那些原本有可能被浪費在x264認為是無(wú)用的信息上的比特率。從這方面看,DCT精簡(jiǎn)和快速P 幀跳過(guò)以及Trellis量化有相似之處,即由x264來(lái)判斷可以忽略的信息。然而,在當前的情況下,我推薦盡可能地勾選該項,因為禁止它會(huì )導致在恒定量 化下的更大的文件體積,而相對于編碼的比特率來(lái)說(shuō),質(zhì)量的提升幾乎感覺(jué)不到。
- “色度動(dòng)態(tài)預測(Chroma ME)”(F)的工作原理是測定在運動(dòng)估算期間視頻的色度,以提高運動(dòng)估算的精度和視覺(jué)質(zhì)量。這一般會(huì )帶來(lái)品質(zhì)的重要提升,尤其是對動(dòng)畫(huà)的題材。我建議總 是勾選該項。
- “采樣高寬比(Sample AR)”(H)處理視頻外觀(guān)的高寬比——如果你不了解其作用,可以無(wú)需接觸它。
- “線(xiàn)程(Threads)”(I)用以設定x264分配給編碼進(jìn)程的線(xiàn)程數。你可用的線(xiàn)程數應當與你電腦處理器的 核心數相適應。需要記住每個(gè)支持超線(xiàn)程(HT)的處理器按兩個(gè)線(xiàn)程計算。如果你不知道你的CPU的核心數,或者其是否具有超線(xiàn)程(hyper threading),比較保險的辦法是將其設定為1。設定多核心的優(yōu)點(diǎn)僅僅是在多核心的機器上編碼的處理速度會(huì )快一些。
- 調試記錄(Debug logging)(J):記錄編碼過(guò)程的相關(guān)信息。將其設定為Error——它不會(huì )對一般水平的使用者提供(他們所需要的)更多的調試信息。
- x264生成的AVI文件的FourCC(K)是其中(指AVI容器中)的視頻流的標識符。如果沒(méi)有特別指定,Xvid生成的AVI文件具 有“XVID”的FourCC。對AVC文件來(lái)說(shuō),H264是一個(gè)可以被廣泛接受和支持的FourCC,依照AVC 1.1標準所建議,你最好保持其默認的H264。
- CABAC,即雙向適應二進(jìn)制算法編碼(L),是x264的main profile中的一項能夠允許視頻流的構成基礎參照之前和之后來(lái)進(jìn)行預算的關(guān)鍵特性。它主要是用以在品質(zhì)無(wú)損耗的前提下提升壓縮效率(依具體視頻和比特 率的不同在10%~15%之間波動(dòng)),而解碼速度會(huì )有輕微的下降(通常高比特率和低量化值會(huì )導致復雜的CABAC解碼)。如果將其禁止,x264會(huì )采用較 低品質(zhì)的CAVLC,同時(shí)你也就會(huì )失去使用Trellis量化特性的機會(huì )。我強烈建議你勾選該選項,除非你想要獲得一個(gè)盡可能快的解碼速度(Xbox、掌 上電腦等等)。
- “Trellis”(M)是一個(gè)通過(guò)選取在壓縮過(guò)程中存在于編碼文件中的數據來(lái)提升編碼的視覺(jué)品質(zhì)的高級特性。它 看上去像是提高了比特率的利用率,但是由于當你選擇一直開(kāi)啟該選項(框格呈灰色并被選中)時(shí)會(huì )造成約10%的速度下降(即CLI中trellis 1和trellis 2的區別),而相對(正常選擇狀態(tài))提升的品質(zhì)比較有限,我建議將該選項置于正常選取狀態(tài),而當你知道它將會(huì )造成問(wèn)題時(shí),完全取消勾選該項。
- “交錯編碼(Interlacing)”(S)是一個(gè)可以使得x264對視頻源文件進(jìn)行簡(jiǎn)單的固定交錯編碼的特 性。如果你的視頻源文件不是隔行的,或者你不知道這個(gè)選項的作用,最好是敬而遠之。反之,如果你確切地知道你的視頻源文件是隔行的,則勾選該項。注意:你 必須取消勾選Trellis (M)并設定最大連續B幀(max consecutive B-frames,在“體積與幀(MBs&Frames)”選項卡下)為0。
- “降噪(Noise Reduction)”(O):如果你的視頻源文件有很多噪點(diǎn)(比如帶有很多類(lèi)似電影的斑點(diǎn)或者錄像/抓取視頻時(shí)的靜電干擾),你可以在這里設定一個(gè)降噪 值。如果你沒(méi)有其他的降噪操作,這就是一個(gè)很好的預處理特性。范圍從0(關(guān)閉)到100(極大程度的降噪)。我通常將其設為0,然而,這是在我事先知道我 的視頻源文件看起來(lái)是我想要的那樣的前提下。如果我的目的是很低的比特率,由于降噪可以去除那些難以(被通過(guò)編碼的方式)壓縮的噪點(diǎn),它就會(huì )對品質(zhì)和比特 率有所助益。
- 參照下面的“去馬賽克教程”來(lái)獲得有關(guān)如何正確設置使用“去塊插件(Deblocking Filter)”(N)的相關(guān)信息。
去馬賽克教程(Deblocking Guide)
AVC格式內置了一個(gè)極其實(shí)用的特性,它可以消除馬賽克和其他人為編碼的瑕疵,而這些問(wèn)題曾經(jīng)使得AVC之前的那些格式飽受困擾。它在A(yíng)VC的編碼中相當實(shí)用,由于A(yíng)VC是構筑在這個(gè)濾鏡之上的事實(shí)以及你可能經(jīng)歷到的在視頻中存在過(guò)多的馬賽克以及人為編碼的瑕疵(糟糕的片源),一般來(lái)說(shuō)在正常情況下不要禁止這個(gè)去塊插件。然而,因為它會(huì )占用大量的解碼時(shí)間,如果解碼器又不支持在播放時(shí)手動(dòng)關(guān)閉它,你可能會(huì )考慮(在編碼時(shí))禁止掉它以獲得盡可能快的解碼速度(Xbox、掌上電腦等等)。
應該有這樣的認識:即由于人類(lèi)的視覺(jué)系統(human visualsystem(HVS))在空間上比較復雜的場(chǎng)景中往往會(huì )把瑕疵和馬賽克當作該場(chǎng)景的固有細節,因此去塊插件的使用在原則上常常會(huì )存在爭議。因為x264會(huì )默認地除去這些人為編碼的痕跡,人類(lèi)的視覺(jué)系統便會(huì )以為這是“損失了細節”,即使從技術(shù)角度來(lái)講,x264的細節處理其實(shí)相當精確——甚至在相近的比特率之下的表現有過(guò)之而無(wú)不及。事實(shí)上,已經(jīng)有共識認為(Doom9論壇的編解碼器性能對比也很好地支持這一觀(guān)點(diǎn))x264確實(shí)是在致力于比ASP(未去馬賽克的)編解碼器在相近的比特率之下更精確地保持更多的細節。然而,去塊插件對人為編碼瑕疵的去除仍然為人類(lèi)的視覺(jué)系統所干涉并認為它移除了本該存在的畫(huà)面細節,而存在這些虛假的“細節”的畫(huà)面正是人們在不使用去塊插件的情況下所習慣了的。對于那些認為在編碼視頻中的噪點(diǎn)可以得到一個(gè)更為柔和和舒服的畫(huà)面的人們來(lái)說(shuō),去塊插件對這些噪點(diǎn)的去除也并不討巧。這些偏好依據各人的情況是有所不同的,所以請努力地發(fā)現什么樣的設定對你的眼睛和需求來(lái)說(shuō)是最合適的。
Alpha去塊閾值“strength”(P)幫助決定需要多強的去塊效果來(lái)除去馬賽克。Beta去塊閾值“threshold”(見(jiàn)上圖的Q)確定有多少馬賽克需要去除。這個(gè)值設定得越高,x264就會(huì )將越多的視頻部分理解為馬賽克(如果設定得過(guò)高,會(huì )將過(guò)多的視頻部分判斷為馬賽克),因而會(huì )進(jìn)行更多的去塊操作。當然,如果你對原材料“清洗”(比喻去塊)得不夠,在那些沒(méi)有被清洗到的地方就會(huì )有污漬(比喻馬賽克)殘留下來(lái)——就這樣按照清洗襯衫的方法來(lái)考慮它——而如果你清洗的強度不夠,有些污漬便不會(huì )完全消失。然而,如果你洗得過(guò)多,力量過(guò)強,你就會(huì )毀掉這件襯衫而不是清洗污漬了——會(huì )有很難看的褪色,并且紋理和細節都被抹掉了。
-
兩個(gè)滑動(dòng)條的初始設置都是0,這是為什么呢?這是 能夠在去塊和細節保留之間取得計量平衡以產(chǎn)生最高質(zhì)量的標準值。然而,如果你對默認的0,0編碼的結果不滿(mǎn)意,可以參考下面的意見(jiàn):
-
不要超過(guò)-3到2的范圍(對兩個(gè)滑動(dòng)條來(lái)說(shuō)都是如 此)。一般地說(shuō),超過(guò)2會(huì )使解碼的結果過(guò)于模糊,而低于-3會(huì )使結果看起來(lái)有點(diǎn)過(guò)于銳利——感覺(jué)也不會(huì )好,因為所有的掩蓋都被去除了,細節的缺乏只會(huì )顯得 更加突出。
-
如果你在編碼一個(gè)動(dòng)畫(huà)類(lèi)的視頻源文件,推薦使用比 較強的去塊(將兩個(gè)滑動(dòng)條都設置為1)以盡可能地去除所有的馬賽克。這是由于動(dòng)畫(huà)視頻內容的邊緣具有很高的反差對比,需要去除的馬賽克之類(lèi)會(huì )具有較高的抵 抗力。從另一個(gè)方面說(shuō),如果你在編碼一個(gè)現實(shí)題材的視頻,尤其是具有復雜的紋理和較低的亮度的那種,則應該考慮降低去塊的強度以保持這些細節,以免出現過(guò) 度的模糊。
-
努力在這兩個(gè)設定之間保持一種確定的關(guān)系。即如果 你想要進(jìn)行更強力的去塊,那么就要確定你同時(shí)也提升了閾值以便于使更多的部分得到去塊處理,反之亦然(如1,1;2,2;-1,-1;等)?;貞浺幌履莻€(gè) 洗衣服的比方:你不會(huì )想要只是很強力地去清洗一小塊地方而其他的部分都沒(méi)有被清洗到(對于一件普通的待清洗衣物來(lái)說(shuō)),這樣的話(huà)沒(méi)有清洗到的部分會(huì )顯得突 出而生硬,帶來(lái)很糟糕的視覺(jué)效果。
-
在高比特率下,為了盡可能保持最多的細節,我建議 對兩個(gè)設置嘗試采取-1的設定(閾值可達-2)。然而,根據視頻源文件的情況(梯度、紋理和對比度)、采用的比特率以及個(gè)人偏好,對其中之一或全部?jì)蓚€(gè)設 置來(lái)說(shuō),0可能仍然是最理想的設置。
歡迎來(lái)到DeathTheSheep的AVC VfW編碼教程,這個(gè)內容豐富而易用的教程將會(huì )在A(yíng)VC編碼中最大限度地幫助您。不論您是新手還是想要在編碼細節方面增進(jìn)理解的專(zhuān)家,都可以在本教程中學(xué) 到相應的知識?;旧?,您可以用本教程替代任何有關(guān)Xvid/Divx的設置教程。下面就讓我們前進(jìn)吧!
然而,我們首先需要提出一些術(shù)語(yǔ)。為了充分利用本教 程,我們最好對這些編碼相關(guān)的詞匯及其用法有一個(gè)了解。
1.編解碼器(Codec):壓縮器(Compressor)/解壓縮器(Decompressor)。這里,x264是一個(gè)編解碼 器,也被稱(chēng)作“編碼器(encoder)”。Divx是一個(gè)編解碼器,Xvid也是一個(gè)編解碼器。如果你下載了DTS_x264的程序包,你會(huì )得到一個(gè)編 碼器(壓縮視頻的部分)和一個(gè)被稱(chēng)為“解碼器(decoder)”的解壓縮器(使你能夠播放你制作或者“編碼”的視頻的那一部分)。由于你可能并不需要調 整解碼軟件,這個(gè)教程便沒(méi)有提及這方面的內容。值得注意的是,“編解碼器(Codec)”同“標準(Standard)”是有區別的:H.264是 x264所基于的標準,MPEG4-ASP是Xvid和Divx所基于的標準。MPEG4既不是編解碼器,也不是MP3,而是一個(gè)標準。
2.比特率(碼率、Bitrate):這和你編碼生成 的最終文件的大小(“filesize”)有關(guān)。比特率越高,文件質(zhì)量就越高,而文件體積也會(huì )越大。它通常用(數據量/時(shí)間)的單位形式來(lái)表示,例如“千 比特/秒(KB/sec)”或者kbps。在視頻中,有大量運動(dòng)的場(chǎng)景通常需要較高的比特率來(lái)將畫(huà)面質(zhì)量維持在一個(gè)可以接受的水準;因為運動(dòng)量越大,編解 碼器就需要將更多的數據儲存在文件中。
3.量化(Quantizer):編解碼器決定質(zhì)量的 基礎單位。注意較高的量化值會(huì )產(chǎn)生較低的質(zhì)量和比特率。
4.Pass:對輸入的源文件進(jìn)行一輪完整的處理。根 據你所選擇的模式不同,編解碼器會(huì )對文件進(jìn)行特定次數的全局處理。第一次的全局處理("Pass 1" 或 "First Pass")通常是用來(lái)對源視頻文件有一個(gè)總體的了解,編解碼器同時(shí)會(huì )將這些結果寫(xiě)入到一個(gè)被稱(chēng)作pass file的文件中,該文件會(huì )(作為參考)用來(lái)對視頻文件進(jìn)行第二次或者第三次的處理,以決定如何對視頻文件分配比特率和量化值,從而達到(在給定條件下) 它所能達到的最好質(zhì)量。需要注意的是在恒定質(zhì)量或恒定量化的模式中,由于編解碼器已經(jīng)知道了采用怎樣的質(zhì)量進(jìn)行編碼,所以只會(huì )用one pass(一次編碼)的方式,而這個(gè)質(zhì)量值是由使用者設定的。同時(shí)它的比特率也是獨立的,編解碼器會(huì )以一種簡(jiǎn)單的方式盡可能多地調用它所需的比特率來(lái)達到 給定的質(zhì)量。
5.編碼速度(Encoding Speed):其定義為:“在任意特定的時(shí)間點(diǎn)內,編碼器處理/編碼整個(gè)文件所需要的時(shí)間,用幀/秒(frames/sec、fps)來(lái)表示”。意思是在 編碼過(guò)程中,會(huì )有一個(gè)全局的或平均的編碼速度(根據從開(kāi)始到完成所花費的時(shí)間)和一個(gè)在每個(gè)視頻場(chǎng)景改變時(shí)的瞬時(shí)編碼速度。在處理運動(dòng)變化較為激烈的場(chǎng)景 時(shí),編碼速度會(huì )趨向于更慢。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。