x264 參數詳解【很強大、很細緻,不再爲不懂啥意思很煩惱】

【 翻譯 】x264參數介紹(一、幀類型和碼率控制)

2010年10月2日

翻譯自:http://mewiki.project357.com/wiki/X264_Settings,水平有限,勿吝指教。
第二部分:http://blog.yikuyiku.com/?p=2206

輸入

用1個絕對路徑定義輸入文件(或者2個,rawYUV文件)。如下例:
x264.exe -o NUL C:\input.avs
x264 -o /dev/null ~/input.y4m
如果輸入文件是rawYUV格式的,還要把分辨率一併輸入。如果開啓了比特率控制,還需要輸入幀率。如下例:
x264.exe -o NUL –fps 25 D:\input.yuv 1280×720
x264 -o /dev/null –fps 30000/1001 ~/input.yuv 640×480

預設值

預設值是x264在r1177版本增加的一個方便的命令行選項。可以用x264.exe –fullhelp查看所有的命令行幫助。

profile

默認:無
說明:限制輸出文件的profile。這個參數將覆蓋其它所有值,此選項能保證輸出profile兼容的視頻流。如果使用了這個選項,將不能進行無損壓縮(qp 0 or crf 0)。
可選:baseline,main,high
建議:不設置。除非解碼環境只支持main或者baseline profile的解碼。

preset

默認:medium
一些在壓縮效率和運算時間中平衡的預設值。如果指定了一個預設值,它會在其它選項生效前生效。
可選:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo.
建議:可接受的最慢的值

tune

默認:無
說明:在上一個選項基礎上進一步優化輸入。如果定義了一個tune值,它將在preset之後,其它選項之前生效。
可選:film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency and touhou.
建議:根據輸入選擇。如果沒有合適的就不要指定。

slow-firstpass

默認:無
說明:隨着預設值機制在r1177版本的出現,使用–pass 1會在解析命令行時增加以下設置:
* ref 1
* no-8x8dct
* partitions i4x4 (if originally enabled, else none)
* me dia
* subme MIN( 2, subme )
* trellis 0
如果設置preset=placebo則自動關閉此特性。如果想顯式關閉此特性,使用slow-firstpass。

幀類型

keyint

默認:250
說明:設置x264輸出中最大的IDR幀(亦稱關鍵幀)間距。
IDR幀是視頻流的“分隔符”,所有幀都不可以使用越過關鍵幀的幀作爲參考幀。IDR幀是I幀的一種,所以它們也不參照其它幀。這意味着它們可以作爲視頻的搜索(seek)點。
通過這個設置可以設置IDR幀的最大間隔幀數(亦稱最大圖像組長度)。較大的值將導致IDR幀減少(會用佔用空間更少的P幀和B幀取代),也就同時減弱了參照幀選擇的限制。較小的值導致減少搜索一個隨機幀所需的平均時間。
建議:默認值(fps的10倍)對大多數視頻都很好。如果在爲藍光、廣播、直播流或者其它什麼專業流編碼,也許會需要更小的圖像組長度(一般等於fps)。
參見:min-keyint, scenecut, intra-refresh

min-keyint

默認:auto(keyint/10)
說明:參見keyint的說明。過小的keyint範圍會導致產生“錯誤的”IDR幀(比如說,一個閃屏場景,參見上一篇blog)。此選項限制了IDR幀之間的最小距離。
建議:默認,或者與fps相等
參見:keyint, scenecut

no-scenecut

默認:無
說明:完全關閉自適應I幀決策。
參見:scenecut

scenecut

默認:40
說明:設置決策使用I幀、IDR幀的閾值(場景變換檢測)。
x264會計算每一幀與前一幀的不同程度並得出一個值。如果這個值低於scenecut,那麼就算檢測到一個“場景變換”。如果此時距離上一幀的距離小於 min-keyint則插入一個I幀,反之則插入一個IDR幀。較高的值會增加偵測到“場景變換”紀律。更詳細的工作原理可見 http://forum.doom9.org/showthread.php?t=121116
設置scenecut=0與no-scenecut等效。
建議:使用默認值
參見:keyint, min-keyint, no-scenecut

intra-refresh

默認:off
說明:讓x264爲每keyint數量的幀使用宏塊內部編碼取代IDR幀。塊以水平移動列的方式更新,也叫刷新波。對於低延遲的流,這樣可以讓幀的尺寸比使用標準的IDR幀更加保持恆定。而且這樣可以增強視頻流對丟包的容錯能力。這個選項會降低壓縮率,所以在確實需要的時候才選擇它。
還有一些有意思的事情:1、第一幀依然是IDR幀。2、內部宏塊只在P幀中存在,刷新波在一個或多個B幀後的P幀中廣泛存在。3、主要的壓縮率下降原因是在宏塊中新(左邊)的波並不能參考舊(右邊)的波。
建議:使用默認值

bframes

默認:3
說明:設置x264可使用的B幀的最大連續數量。
沒有B幀時,一個典型的x264流幀類型是這樣的:IPPPPP…PI。如果設置了-bframes 2,那麼兩個連續的P幀就可以用B幀替換,然後就像這樣:IBPBBPBPPPB…PI。
B幀和P幀的區別在於它可以參照它之後的幀,這個特點讓它可以顯著地提升壓縮率。他們的平均品質受 –pbratio選項的控制。
還有一些有意思的事情:
1、x264有2種B幀,一種可以作爲參照幀,一種不能;
2、關於x264如何決策B幀或P幀,可以看看這個ffmpeg-devel郵件列表中的這一封http://article.gmane.org /gmane.comp.video.ffmpeg.devel/29064。這種情況下幀類型看起來就像這樣IBBBPBBBPBPI(假設設置 –bframes 3)。
參見:–no-b-adapt, –b-bias, –b-pyramid, –ref, –pbratio, –partitions, –weightb

b-adapt

默認:1
說明:設置B幀決策算法,這個選項會影響到x264使用P幀或者B幀。
0 —— 關閉。總是使用B幀。和以前的 no-b-adapt選項效果相同;
1 —— ‘快速’算法。快速,–b-frames越大速度越快。推薦配合使用–bframes 16;
2 —— ‘最佳’算法,慢速,–b-frames越大速度越慢;
注意:多趟編碼時,只有第一趟編碼的此選項起效,因爲第一趟編碼結束時,幀類型就已經被決定了。

b-bias

默認:0
說明:調節使用B幀的力度。越大的值越偏向B幀,可以在-100和100之間選擇。100或-100不能保證完全或是全是B幀(使用 –b-adapt 0)。
請只在你認爲你能做出比x264更好的碼率控制時才使用這個選項。
參見: –b-frames, –ipratio

b-pyramid

默認:normal
說明:允許B幀作爲參照幀。如果關閉,那麼只有I幀和P幀才能作爲參照幀。可以作爲參照幀的B幀的量化參數會介於P幀和普通B幀之間。只在–b-frames設置大於等於2時此選項才生效。如果是在爲藍光光盤編碼,請使用none或者strict。
none —— 不允許B幀作爲參照幀;
strict —— 一個圖像組內只允許一個B幀參照幀,這是藍光編碼強制要求的標準;
normal —— 任意使用B幀參照幀;
參見:–bframes, –refs, –no-mixed-refs

open-gop

默認:none
說明:Open-GOP是一個提升壓縮效率的編碼技術。它有以下選項:
none —— 關閉
normal —— 開啓
bluray —— 開啓。一個稍低效的open-GOP版本,因爲normal模式不能用於藍光編碼
有些解碼器不能完全支持open-GOP流,因此這個選項默認關閉。如果要用,請測試你的解碼器。
更多open-gop的資料可以看這個鏈接http://forum.doom9.org/showthread.php?p=1300124#post1300124

no-cabac

默認:無
說明:關閉CABAC (Context Adaptive Binary Arithmetic Coder)壓縮,使用較爲低效的CAVLC (Context Adaptive Variable Length Coder)。這兩者在壓縮效率和解碼效率上有10%-20%的差別。

ref

默認:3
說明:控制DPB (Decoded Picture Buffer)的大小。可以在0-16之間選擇。簡單地說,就是設置P幀可以選擇它之前的多少幀作爲參照幀(B幀的值要小1-2,取決於那個B幀能不能作爲參照)。最小可以選擇值1,只參照自己前面的那幀。
注意H.264標準限制了每個level可以參照的幀的數量。如果選擇level4.1,1080p最大選4,720p最大選9。
參照: –b-pyramid, –no-mixed-refs, –level

no-deblock

默認:無
說明:完全關閉內置去塊濾鏡。不推薦使用。
參見: –deblock

deblock

默認:0:0
說明:調節H.264標準中的內置去塊濾鏡。這是個性價比很高的選則。
詳細的參數運作原理可以看這篇文章http://forum.doom9.org/showthread.php?t=109747(看樓主和akupenguin的回覆)。
See Also: –no-deblock

slices

默認:0
說明:設置每幀的分片數,強制使用矩形分片。(會被–slice-max-size 或 –slice-max-mbs選項覆蓋)
如果是在爲藍光光盤編碼,設置爲4。如果不是,不要使用這個選項,除非你確定你需要它。
參見:–slice-max-size, –slice-max-mbs

slice-max-size

默認:0
說明:設置每個分塊包括NAL頭的最大大小(bytes)。 (目前與 –interlaced選項不兼容)
參見:–slices

slice-max-mbs

默認:0
說明:設置每個分塊包含的最大宏塊數量。 (目前與 –interlaced選項不兼容)
參見:–slices

tff

說明:開啓隔行編碼並設置上半場在前。x264的隔行編碼使用MBAFF,因此效率不如逐行掃描。所以,僅在需要在隔行顯示的設備上顯示時纔開啓這個選項(或是送給x264之前無法進行反隔行掃描)。這個選項會觸發 –pic-struct開啓。

bff

說明:開啓隔行編碼並設置下半場在前。更多信息同–tff。

constrained-intra

默認:無
說明:開啓SVC編碼的底層要求的強制幀內預測。選擇每個人都無視SVC了,你也可以忽略這個設置。

pulldown

默認:none
說明:爲你的輸入流(逐行掃描的,固定幀率的)使用一組預設的“軟性電視模式”。“軟性電視模式”在HandBrake Wiki裏面有很好的解釋。可選的參數有:none、22、32、64、double、triple、euro。除了none之外的選項都會觸發 –pic-struct開啓。

fake-interlaced

默認:無
說明:把流標誌爲隔行的但不按隔行編碼。用於編碼25p和30p的藍光兼容視頻。

碼率控制

qp

默認:無
說明:三種可選的碼率控制方法之一。設置x264使用固定量化參數模式。給定的數量將被作爲P幀的量化參數,I幀和B幀的量化參數由–ipratio and –pbratio參數進一步算出。QP模式適用固定的量化參數,這意味着最終的文件大小是不可知的(可以通過一些其他方法預測)。設置爲0將產出無損的輸出。相同視覺質量時,QP模式產出的文件比crf模式大。QP模式將關閉自適應量化器,因爲它是固定QP的。
這個選項和 –bitrate和–crf是互斥的,三者只能選一個,它們背後的原理可以看這篇文章http://blog.yikuyiku.com/index.php/archives/1901。
一般而言crf都能代替QP模式,不過QP因爲完全不需要預測所以它會運行地更快些。
參見:–bitrate, –crf, –ipratio, –pbratio

bitrate

默認:無
說明:三種可選的碼率控制方法之二。設置x264使用固定目標比特率模式。固定目標比特率意味着最終文件的大小是可知的,但是目標的質量是不可知的。 x264會試圖讓最終文件的整體碼率與給定的碼率相等。參數的量綱爲kilobits/sec(8bit = 1byte)。
通常這個選項和–pass選項配合進行2趟編碼。
這個選項和 –qp和–crf是互斥的,三者只能選一個,它們背後的原理可以看這篇文章http://blog.yikuyiku.com/index.php/archives/1901。
參見:–qp, –crf, –ratetol, –pass, –stats

crf

默認:23.0
說明:三種可選的碼率控制方法之二。固定ratefactor。QP是固定量化器,bitrate是固定文件大小,crf則是固定“質量”。crf可以提供跟QP一樣的視覺的質量,但是文件更小。crf的單位是ratefactor。
crf是通過降低那些“不那麼重要”的幀的質量做到這一切的。“不那麼重要”意思是過於耗費碼率又難以用肉眼察覺的幀,比如複雜或者超高速運行的場景。省下來的碼率會用在其它更有效的幀裏。
crf編碼比2趟編碼快,因爲它相當於省略了第1趟編碼。所以crf的最終碼率也是不可預測的。你應該根據應用場景來選擇碼率控制方式。
這個選項和 –qp和–crf是互斥的,三者只能選一個,它們背後的原理可以看這篇文章http://blog.yikuyiku.com/index.php/archives/1901。
參見:–qp, –bitrate

rc-lookahead

默認:40
說明:爲mb-tree ratecontrol(Macroblock Tree Ratecontrol)和vbv-lookahead設置可用的幀的數量。最大可設置爲250。
對於mb-tree而言,調大這個值會得到更準確地結果,但也會更慢。mb-tree能使用的最大值是–rc-lookahead和–keyint中較小的那一個。
對於vbv-lookahead而言,調大這個值會得更穩定和精確的碼率控制。vbv-lookahead能使用的最大值是如下公式算出來的:MIN(rc-lookahead, MAX(–keyint, MAX(–vbv-maxrate, –bitrate) / –vbv-bufsize * –fps))
參見:–no-mbtree, –vbv-bufsize, –vbv-maxrate

vbv-maxrate

默認:0
說明:設置VBV(Video Buffering Verifier)可用的最大碼率。使用VBV會降低視頻質量,只在真正需要的才設定它。
參見:–vbv-bufsize, –vbv-init,http://mewiki.project357.com/wiki/X264_Encoding_Suggestions#VBV_Encoding

vbv-bufsize

默認:0
說明:設置VBV(Video Buffering Verifier)可用的最大緩衝區,單位是kilobits。使用VBV會降低視頻質量,只在真正需要的才設定它。
參見:–vbv-maxsize, –vbv-init,http://mewiki.project357.com/wiki/X264_Encoding_Suggestions#VBV_Encoding

vbv-init

默認:0.9
說明:設置重放之前必須先載入多大的VBV緩衝。
如果值小於1,那麼大小就爲 vbv-init * vbv-bufsize。如果大於1,則是以kbits爲單位的值。
參見:–vbv-maxsize, –vbv-bufsize,http://mewiki.project357.com/wiki/X264_Encoding_Suggestions#VBV_Encoding

crf-max

默認:無
說明:類似 –qp-max,但是設置的是最大的ratefactor值而不是量化參數。這個選項僅用於crf和vbv同時啓用的時候。它阻止x264使用小於給定值的ratefactor(也就是“質量”),哪怕會違反vbv。一般用於流服務器。更多的信息請看http://git.videolan.org /gitweb.cgi/x264.git/?a=commit; h=81eee062a4ce9aae1eceb3befcae855c25e5ec52。
參見:–crf, –vbv-maxrate, –vbv-bufsize

qpmin

默認:10
說明:設置x264可以使用的最小量化器。量化參數越小,輸出越接近輸入。使用某些值時,x264的輸出可以和輸入看起來完全一樣,雖然其實並不是精確相同的,通常就夠了沒有必要使用更多比特在宏塊上了。
如果開啓了自適應量化器(默認開啓),則不鼓勵提高qpmin的值,那樣可能會降低幀的平坦部分的質量。
參見:–qpmax, –ipratio

qpmax

默認:51
說明:qpmin的反面,設置x264可以使用的最大量化器。默認值51是H.264標準中的最大值,質量非常低。默認值51其實相當於沒有設置 qpmax。如果你想控制x264輸出的最低品質,也許你想要把這個值調低一點(調到30-40最低了),但一般而言不推薦調節這個值。參見:–qpmin, –pbratio, –crf-max

qpstep

默認:4
說明:設置2幀間量化器最大的可變值。

ratetol

默認:1.0
說明:這個參數有2個可能的含義:
1、在1趟bitrate編碼時,這個參數控制x264可以偏離給定的平均目標比特率的百分比。可以設置爲inf完全關閉碼率溢出偵測。最低可以設置爲 0.01。較高的值可以讓x264更好地處理影片結束部分的複雜場景。對於這個目的而言單位是百分比(1.0意味着允許1%的bitrate偏差)。
很多影片(比如說動作打鬥片)在最後的片段裏十分複雜。1趟編碼並不知道哪裏是最複雜的片斷,往往到最後比特都已經用完了。把rateol設置爲inf就能解決這個問題,它允許編碼器用類似 –crf的方式工作,當然,文件大小會溢出。
2、當開啓了vbv時(只要使用了任何–vbv-開頭的選項就會開啓),這個選項意味着vbv的強度。更高的值意味着允許更高的在設定的vbv值上下波動。在這個含義時,可以使用任意的度量單位。

ipratio

默認:1.40
說明:設置平均的I幀的量化器相比P幀量化器增值。更高的值意味着更高的I幀質量。
參見:–pbratio

pbratio

默認:1.30
說明:設置平均的B幀的量化器相比P幀量化器減值。更高的值意味着更低的B幀質量。開啓mbtree(默認開啓)選項時不可用,mbtree會自適應地計算B幀量化器。
參見:–ipratio

chroma-qp-offset

默認:0
說明:設置一個用於色度編碼(譯者按:視頻使用YUI編碼,人眼對於亮度更敏感)的量化器的偏移值。可以是負值。在開啓 psy-rd或 psy-trellis時 x264會自動降低色度的量化參數用於補償亮度的量化器,意味着色度質量會被降低。它們默認會在chroma-qp-offset的基礎上減2。
注意:x264在量化器29時會爲亮度和色度使用同樣的量化器。往後,色度都會使用比亮度還好的量化器,最後,亮度達到q51時,色度的量化器是q39。這個是H.264標準中要求的做法。

aq-mode

默認:1
說明:自適應量化器模式。不使用自適應量化的話,x264趨向於使用較少的bit在缺乏細節的場景裏。自適應量化可以在整個視頻的宏塊裏更好地分配比特。它有以下選項:
0 —— 完全關閉自適應量化器
1 —— 允許自適應量化器在所有視頻幀內部分配比特。
2 —— 根據前一幀強度決策的自變量化器(實驗性的)。
參見: –aq-strength

aq-strength

默認:1.0
說明:自適應量化強度。設置自適應量化對於缺乏細節(平坦)的宏塊的剝削程度。不允許負值。0.0 – 2.0之外的值不推薦。
參見:–aq-mode

pass

默認:無
說明:這對2趟編碼是一個重要的選項。這個選項控制了x264如何處理 –stats指定的文件。它有三個選項。
1 —— 建立一個新的stats文件,用於第一趟編碼。
2 —— 讀取stats文件,用於最後一趟編碼。
3 —— 讀取stats文件,而且更新它。
stats文件包含了每個輸入幀的信息,x264可以讀取這些信息來改進輸出。大概意思就是先跑一趟編碼生成stats文件,然後第二趟編碼就可以使用這個文件優化編碼結果。視頻質量會得到很大的提升,大部分原因是因爲可以更好地進行比特分配。
參見:–stats, –bitrate, –slow-firstpass X264_statsfile

stats

默認:’x264_2pass.log’
說明:設置x264讀取和寫入的stats文件名

no-mbtree

默認:無
說明:關閉基於宏塊樹的比特控制(macroblock tree ratecontrol)。基於宏塊樹的比特控制通過持續監控宏塊在幀間的運動和相對權重來提升視頻質量。它會單獨生成一個很大的stats文件。
建議值:保持默認
參見:–rc-lookahead

qcomp

默認:0.60
說明:量化器曲線壓縮參數。0.0意味着恆定比特率,1.0意味着恆定量化器。如果開啓了mbtree,這個選項會影響mbtree的強度(更高的值意味着更弱的mbtree)。
建議:保持默認
參見:–cplxblur, –qblur

cplxblur

默認:20
說明:把給定值作爲高斯模糊的半徑應用到量化曲線上。這意味着分配給每個幀的量化器會被它附近的幀的量化器平均掉,這樣會達到限制量化器波動的效果。
參見:–qcomp, –qblur

qblur

默認:0.5
說明:在量化曲線壓縮後,把給定值作爲高斯模糊的半徑應用到量化曲線上。這不是一個很重要的選項。
參見:–qcomp, –cplxblur

zones

默認:無
說明:調節視頻的特殊片斷。可以用它修改大多數x264選項。
一個單獨的zone使用<start frame>,<end frame>,<options>的形式表達。多個zone用’/'分隔。
選項:
以下2個選項,每個zone只能設置其中一個,此選項必須是zone列出來的第一個選項:
b=<float> 使zone內的bitraye乘上給定的係數。在調整快速和慢速場景時很有用。
q=<int> 使用zone內使用給定的量化器。在優化一個幀序列是很有用。

其他可用選項:
ref=<integer>
b-bias=<integer>
scenecut=<integer>
no-deblock
deblock=<integer>:<integer>
deadzone-intra=<integer>
deadzone-inter=<integer>
direct=<string>
merange=<integer>
nr=<integer>
subme=<integer>
trellis=<integer>
(no-)chroma-me
(no-)dct-decimate
(no-)fast-pskip
(no-)mixed-refs
psy-rd=<float>:<float>
me=<string>
no-8x8dct
b-pyramid=<string>
限制:
一個zone的參照幀數量不能超過–ref定義的值。
如果Scenecut原本是關閉的,無法開啓它。
–me如果原本被設置爲–me esa/tesa則不能修改。
Subme如果原本被設置爲0則不能修改。
如果–me被設置爲dia, hex或umh,不能修改爲–me esa/tesa。

例子:
0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000

建議值:保持默認

qpfile

說明:人工改變標準的碼率控制方法。給定一個爲特殊幀給定了量化器和幀類型的文件。格式是’幀序號 幀類型 量化器’。
例子:
0 I 18 < IDR (key) I-frame
1 P 20 < P-frame
2 B 22 < Referenced B-frame
3 i 21 < Non-IDR (non-key) I-frame
4 b 18 < Non-referenced B-frame
5 K 16 < Keyframe*
注意:
不用指定每一個幀。
只想設置幀類型時,可以把量化器設置爲-1來表明允許x264自行選擇優化的量化器,
如果手工指定大量的幀類型和量化器之間間歇穿插着讓x264自行決策的部分,則會降低x264的表現。
‘Keyframe’ 表示可以seek到的關鍵幀。如果–open-gop設置爲none則意味着IDR幀,不然就意味着一個Non-IDR的標記爲“發現點SEI”的I幀。

【 翻譯 】x264參數介紹(二、分析和視頻可用性信息)

2011年2月11日

翻譯自:http://mewiki.project357.com/wiki/X264_Settings,水平有限,勿吝指教。
第一部分:http://blog.yikuyiku.com/?p=2029

分析

partitions

默認:’p8x8,b8x8,i8x8,i4x4′
說明:H.264在壓縮前會被切分爲16×16大小的宏塊。這些塊可被進一步切分成更小的塊,利用此參數,可以控制不同的幀類型(I、P、B)開啓更細的幀切分(8×8、4×4),具體參數如下:
I幀:i8x8、i4x4;
P幀:p8x8(會同時開啓p16x8和p8x16)、p4x4(會同時開啓p8x4和p4x8);
B幀:b8x8(會同時開啓b18x8和b8x16);
另外,也可以設置爲’none’和’all’。一般而言,開啓p4x4不會帶來多少的質量提升,而且它極其耗時,是個性價比比較低的選項。
參見:–no-8x8dct

direct

默認:’spatial’
說明:爲’direct’類型的運動矢量設定預測模式。有兩種可選的模式:spatial(空間預測)和temporal(時間預測)。可以設置爲’none’關閉預測,也可以設置爲’auto’讓x264去選擇它認爲更好的模式,x264會在編碼結束時告訴你它的選擇。’auto’最好在2趟編碼中使用,但也可以在1趟編碼時使用。如果用於2趟編碼,x264會在第1趟編嗎時同時嘗試2種預測模式,然後在第2趟編碼時使用它認爲較好的那一個。注意,如果第1趟編碼時選擇了’auto’,那麼第2趟編碼時也必須設置爲’auto’。不然,第2趟編碼會使用’temporal’。本選項從不會浪費比特,強烈推薦使用。
建議:’auto’

no-weightb

默認:無
說明:H.264允許給可參考B幀加上影響預測圖像的權重,此選項會關閉此特性。
建議:保持默認

weightp

默認:2
說明:開啓明確的權重預測以增進P幀壓縮。越高級的模式越耗時,有以下模式:
0 —— 關閉
1 —— 靜態補償(永遠爲-1)
2 —— 智能統計靜態幀,特別爲增進淡入淡出效果的壓縮率而設計。
注意:爲Adobe Flash(版本低於10.1)編碼時請把此值設爲0,會導致解碼時出現錯誤。Flash 10.1時此BUG得到修正。

me

默認:’hex’
說明:設置全局的運動預測方法,有以下5種選擇:
dia(四邊形搜索) —— 最簡單的搜索,從最樂觀的情況開始預測,在運動矢量的上下左右分別偏移一個像素對比,選擇其中最好的,循環直至找不到更匹配的運動矢量。
hex(六邊形搜索) —— 和菱形差不多的策略,不同的是,它在6邊形的6個頂點上進行rang-2的搜索,它實現了比dia有效率地多的搜索而幾乎不會使用更多的耗時,它是普通編碼任務一個很好的選擇。
umh(不均勻的多六邊形搜索) —— 顯著地比hex要慢,但它嘗試進行復雜多六邊形的搜索,以避免錯過那些難以找到的運動矢量。與hex和dia不同的是,merange參數直接任意大小控制umh的搜索半徑。
esa(全局搜索) —— 高度優化的全局智能搜索,在最佳預測器的merange範圍內進行運動搜索。在全局面進行運動向量的算術對比,雖然計算過程並不慢,但好事仍比umh有顯著提升,而且並不會帶來太多質量方面的提升。所以,對於日常的編碼任務來說,它不是特別有用。
tesa(變換全局搜索) —— 使用一種算法,效果近於對全局的每個運動矢量進行Hadamard 變換比對。搜索方式上和esa很像,但是效果比esa好一點點,耗時也多一點點。
參見:–merange

merange

默認:16
說明:merange控制運動搜索的最大像素範圍。對於hex和dia,範圍被控制在4-16像素,默認就是16。對於umh和esa,可以超過默認的 16像素進行大範圍的運行搜索,這對高分辨率視頻和快速運動視頻而言很有用。注意,對於umh、esa、tesa,增大merange會顯著地增加編碼耗時。
參見:–me

mvrange

默認:-1(自動)
說明:設置垂直的運動矢量最大像素值。默認值如下:
level 1/1b —— 64
level 1.1-2.0 —— 128
level 2.1-3.0 —— 256
level 3.1+ —— 512
注意:如果打算手動設置此值,要在上面給出的值的基礎上減去0.25(如:–mvrange 127.75),
建議:保持默認

mvrange-thread

默認:-1(自動)
說明:設置線程間運動矢量的緩衝區大小的最小值。不要碰這個選項。
建議:保持默認

subme

默認:7
說明:設置亞像素估計的複雜度。值越高越好。級別1-5簡單控制亞像素的細化力度。級別6給模式決策開啓RDO(碼率失真優化模式),級別8給運動矢量和幀內預測模式開啓RDO。開啓RDO會顯著增加耗時。
使用小於2的值會開啓一個快速的、低質量的預測模式,效果如同設置了一個很小的 –scenecut值。不推薦這樣設置。
可使用的值如下:
0 —— fullpel only
1 —— QPel SAD 1 iteration
2 —— QPel SATD 2 iterations
3 —— HPel on MB then QPel
4 —— Always QPel
5 —— Multi QPel + bi-directional motion estimation
6 —— RD on I/P frames
7 —— RD on all frames
8 —— RD refinement on I/P frames
9 —— RD refinement on all frames
10 —— QP-RD (requires –trellis=2, –aq-mode > 0)
建議:保持默認,或設置爲更高,除非對速度十分敏感。

subq

–subme的別名

psy-rd

默認:1.0:0.0
說明:第1個數字是psy-RDO的強度(subme大於等於6時激活)。第2個數字是Psy-Trellis的強度(subme大於等於1時激活)。注意Trellis的特性仍是’實驗性’的,至少對於動畫視頻來說,它總是會壞事的。
關於psy-rd的更詳盡解釋可以參見doom9的這篇文章:http://forum.doom9.org/showthread.php?t=138293。

no-psy

默認:無
說明:關閉全部爲了心理視覺而降低psnr或ssim的優化。此選項同時也會關閉一些不能通過x264命令行設置的內部的心理視覺優化方法。
建議:保持默認

no-mixed-refs

默認:無
說明:Mixed refs(混合參照)會以8×8的切塊爲參照取代以整個宏塊爲參照。會增進多幀參照的幀的質量,會有一些時間耗用。此選項將禁用這個特性。
建議:保持默認
參見:–ref

no-chroma-me

默認:無
說明:通常運動估計都會同時考慮亮度和色度因素。開啓此選項將會忽略色度因素換取一些速度的提升。
建議:保持默認

no-8x8dct

默認:無
說明:自適應的8×8 DCT會在I幀中開啓更智能的自適應8×8的時域變換。開啓此選項可以禁用這個特性。(譯者按:此選項是將H.264的Profile從High降爲Main的重要參數)
建議:保持默認

trellis

默認:1
說明:使用網格編碼量化以增進編碼效率:
0 —— 關閉
1 —— 僅在宏塊最終編碼時啓用
2 —— 所有模式下均啓用
選項1提供了速度和效率間較好的均衡,選項2大幅降低速度。
關於網格編碼量化的更詳盡解釋可以參見:http://en.wikipedia.org/wiki/Trellis_quantization。
建議:保持默認
注意:需要開啓 –cabac選項生效

no-fast-pskip

默認:無
說明:關閉P幀的早期跳過決策。大量的時耗換回非常小的質量提升。
建議:保持默認

no-dct-decimate

默認:無
說明:DCT抽樣會丟棄看上去“多餘”的DCT塊。會增加編碼效率,通常質量損失可以忽略。此選項關閉此特性。
建議:保持默認

nr

默認:無
說明:執行快速去噪。以此值爲閾值確定噪音,通過在量化前丟失小細節的方式嘗試去除噪音。效果可能不如優秀的外部去造濾鏡,但它執行地非常快。
建議:保持默認或者設置爲100-1000用以去噪。

deadzone-inter/intra

默認:無
說明:設置幀間/幀內的亮度量化器輸出爲0的區域大小。輸出爲0的區域可以設置爲0-32,這個值設置的是x264毫不嘗試保護直接丟棄的精密細節。十分精細的細節既難以發覺,編碼代價又昂貴,直接丟棄它們可以避免在這些低迴報的部分浪費比特。此選項和Trellis選項是互不相容的。
建議:保持默認

cqm

默認:Flat(沒設置)
說明:設置自定義的量化矩陣取代內建的內建值。內建值有flast或JVT。
建議:保持默認
參見:–cqmfile

cqmfile

默認:無
說明:使用一個JM格式矩陣文件設置自定義的量化矩陣。會覆蓋其他的 –cqm*選項們。
建議:保持默認
參見:–cqm

cqm4* / cqm 8*

默認:無
–cqm4: 設置所有4×4塊的量化矩陣,以由16個逗號分隔值域爲1-255的值組成的列表的形式給出。
–cqm8: 設置所有8×8塊的量化矩陣,以由64個逗號分隔值域爲1-255的值組成的列表的形式給出。
–cqm4i, –cqm4p, –cqm8i, –cqm8p: 同時設置色度和亮度(i爲幀內、p爲幀間)矩陣
–cqm4iy, –cqm4ic, –cqm4py, –cqm4pc: 設置色度或亮度矩陣(y爲亮度、c爲色度)。這樣的參數cqm8也有同樣的4個。
建議:保持默認


視頻可用性信息

這些參數爲解碼的程序設置一個可用標記。由於經常被解碼軟件所忽略,在大多數場景中這些參數都沒什麼意義,

overscan

默認:undef
說明:如何處理過掃描。過掃描在這裏用於只顯示圖像的一部分。(譯者按:過掃描技術本用在陰極射線管顯示器中爲保持畫面完整。)
可選:
undef – 不定義
show – 顯示全部圖像。理論上此值應該被解碼器重視。
crop – 視頻已經爲過掃描顯示器做過處理。可以不重視。
建議:如果你的設備支持此選項,建議在編碼之前對視頻進行裁剪然後設置爲show。如果不支持就別管此選項了。

videoformat

默認:undef
說明:表明此視頻在 編碼/數字化 之前是什麼格式的。
可選:
component
pal
ntsc
secam
mac
undef
建議:設爲原視頻的格式,或者設爲undef。

fullrange

默認:off
說明:表明亮度和色度級別是否是全範圍的(譯者按:0-255)。如果設爲off,則不會使用全範圍(譯者按:16-235)。
進一步的說明可參見http://blog.yikuyiku.com/?p=2015和http://en.wikipedia.org/wiki/YCbCr。
建議:如果視頻源是從模擬視頻數字化而來的,設爲off。否則則設置爲on。

colorprim

默認:undef
說明:設置轉換到RGB的原色。
可選:
undef
bt709
bt470m
bt470bg
smpte170m
smpte240m
film
進一步的說明可參見http://en.wikipedia.org/wiki/YCrCb和http://en.wikipedia.org/wiki/RGB_color_spaces。
建議:保持默認,除非你知道你的源用的是哪個值。

transfer

默認:undef
說明:設置光電轉換器使用的特性。(設置用於修正的gamma曲線。)
可選:
undef
bt709
bt470m
bt470bg
linear
log100
log316
smpte170m
smpte240m
進一步的說明可參見http://en.wikipedia.org/wiki/Gamma_correction。
建議:保持默認,除非你知道你的源用的是哪個值。

colormatrix

默認:undef
說明:設置用於從RGB原色中提取亮度和色度的矩陣係數。
可選:
undef
bt709
fcc
bt470bg
smpte170m
smpte240m
GBR
YCgCo
進一步的說明可參見http://en.wikipedia.org/wiki/YCrCb。
建議:源使用的值,或者保持默認。

chromaloc

默認:0
說明:設置色度取樣位置。(H.264標準的附件E中定義)。取值範圍爲0-5。
進一步的說明可參見http://git.videolan.org/?p=x264.git;a=blob;f=doc/vui.txt
建議:
如果你以MPEG1源爲輸入做4:2:0採樣的轉碼,而且沒作任何色彩空間轉換,應該設置爲1;
如果你以MPEG2源爲輸入做4:2:0採樣的轉碼,而且沒作任何色彩空間轉換,應該設置爲0;
如果你以MPEG4源爲輸入做4:2:0採樣的轉碼,而且沒作任何色彩空間轉換,應該設置爲0;
其他情況保持默認。

nal-hrd

默認:none
說明:設置HRD信息。用於藍光流、電視廣播和其他一些特殊場合。可用選項如下:
none —— 不設置HRD信息
vbr —— 設置HRD信息
cbr —— 設置HRD信息,而且把流限制在bitrate參數定義的碼率內。需要bitrate碼率控制方式。
建議:none,除非你需要設置HRD。
參見:–vbv-bufsize, –vbv-maxrate和 –aud

pic-struct

默認:無
說明:強制按照圖像時序SEI傳送pic_struct。使用–pulldown或 –tff或–bff參數時會隱式啓用。
建議:保持默認



X264設定

出自NMM Doc

跳轉到: 導航搜索

目錄

[隱藏]

本頁說明所有x264參數之目的和用法。參數的排列相同於在x264 --fullhelp出現的順序。

參閱:X264統計資料輸出X264統計資料檔案X264編碼建議

x264設定

說明

x264帶有一些內置的文件。要閱讀此說明,執行x264 --helpx264 --longhelpx264 --fullhelp。越後面的選項會提供越詳細的資訊。

輸入

以一個位置引數指定輸入的視訊。例如:

x264.exe --output NUL C:\input.avs x264 --output /dev/null ~/input.y4m

當輸入是raw YUV格式時,還必須告知x264視訊的分辨率。你可能也要使用--fps來指定幀率:

x264.exe --output NUL --fps 25 --input-res 1280x720 D:\input.yuv x264 --output /dev/null --fps 30000/1001 --input-res 640x480 ~/input.yuv

默認

爲了減少使用者花費時間和精力在命令列上而設計的一套系統。這些設定切換了哪些選項可以從x264 --fullhelp的說明裏得知。

profile

默認值:無

限制輸出資料流的profile。如果指定了profile,它會覆寫所有其他的設定。所以如果指定了profile,將會保證得到一個相容的資料流。如果設了此選項,將會無法使用無失真(lossless)編碼(--qp0--crf 0)。

如果播放設備僅支援某個profile,則應該設此選項。大多數解碼器都支援High profile,所以沒有設定的必要。

可用的值:baseline, main, high

preset

默認值:medium

變更選項,以權衡壓縮效率和編碼速度。如果指定了默認,變更的選項將會在套用所有其他的參數前套用。

通常應該將此設爲所能忍受的最慢一個選項。

可用的值:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo

tune

默認值:無

調整選項,以進一步最佳化爲視訊的內容。如果指定了tune,變更的選項將會在--preset之後,但所有其他的參數之前套用。

如果視訊的內容符合其中一個可用的調整值,則可以使用此選項,否則不要使用。

可用的值:film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency

slow-firstpass

默認值:無

使用--pass 1會在解析命令列的最後套用以下設定:

可以使用--slow-firstpass來停用此功能。注意,使用--presetplacebo也會啓用slow-firstpass。

參閱:--pass

幀類型選項

keyint

默認值:250

設定x264輸出的資料流之最大IDR幀(亦稱爲關鍵幀)間隔。可以指定infinite讓x264永遠不要插入非場景變更的IDR幀。

IDR幀是資料流的“分隔符號”,所有幀都無法從IDR幀的另一邊參照資料。因此,IDR幀也是I幀,所以它們不從任何其他幀參照資料。這意味着它們可以用作視訊的搜尋點(seek points)。

注意,I幀通常明顯大於P/B幀(在低動態場景通常爲10倍大或更多),所以當它們與極低的VBV設定合併使用時會打亂速率控制。在這些情況下,研究--intra-refresh

默認值對於大多數視訊沒啥問題。在爲藍光、廣播、即時資料流或某些其他特殊情況編碼時,可能需要更小的GOP長度(通常等於幀率)。

參閱:--min-keyint--scenecut--intra-refresh

min-keyint

默認值:自動 (MIN(--keyint / 10, --fps))

設定IDR幀之間的最小長度。

IDR幀的說明可以參閱--keyint。過小的keyint範圍會導致“不正確的”IDR幀位置(例如閃屏場景)。此選項限制在每個IDR幀之後,要有多少幀纔可以再有另一個IDR幀的最小長度。

min-keyint的最大允許值是--keyint/2+1。

建議:默認值,或者等於幀率

參閱:--keyint--scenecut

no-scenecut

默認值:無

完全停用彈性I幀決策(adaptive I-frame decision)。

參閱:--scenecut

scenecut

默認值:40

設定I/IDR幀位置的閾值(場景變更偵測)。

x264爲每一幀計算一個度量值,來估計與前一幀的不同程度。如果該值低於scenecut,則算偵測到一個“場景變更”。如果此時與最近一個IDR幀的距離低於--min-keyint,則放置一個I幀,否則放置一個IDR幀。越大的scenecut值會增加偵測到場景變更的數目。場景變更是如何比較的詳細資訊可以參閱http://forum.doom9.org/showthread.php?t=121116

將scenecut設爲0相當於設定--no-scenecut

建議:默認值

參閱:--keyint--min-keyint--no-scenecut

intra-refresh

默認值:無

停用IDR幀,作爲替代x264會爲每隔--keyint的 幀的每個宏區塊(macroblock)使用內部編碼(intra coding)。區塊是以一個水平捲動的行刷新,稱爲刷新波(refresh wave)。這有利於低延遲的資料流,使它有可能比標準的IDR幀達到更加固定的幀大小。它也增強了視訊資料流對封包遺失的恢復能力。此選項會降低壓縮效率,因此必要時才使用。

有趣的事:

  • 第一幀仍然是IDR幀。
  • 內部區塊(Intra-blocks)僅處於P幀裏,刷新波在一或多個B幀後的第一個P幀更廣泛。
  • 壓縮效率的損失主要來自於在刷新波上左側(新)的宏區塊無法參照右側(舊)的資料。

bframes

默認值:3

設定x264可以使用的最大並行B幀數。

沒有B幀時,一個典型的x264資料流有着像這樣的幀類型:IPPPPP...PI。當設了--bframes 2時,最多兩個連續的P幀可以被B幀取代,就像:IBPBBPBPPPB...PI。

B幀類似於P幀,除了B幀還能從它之後的幀做動態預測(motion prediction)。就壓縮比來說效率會大幅提高。它們的平均品質是由--pbratio所控制。

有趣的事:

  • x264還區分兩種不同種類的B幀。"B"是代表一個被其他幀作爲參照幀的B幀(參閱--b-pyramid),而"b"則代表一個不被其他幀作爲參照幀的B幀。如果看到一段混合的"B"和"b",原因通常與上述有關。當差別並不重要時,通常就以"B"代表所有B幀。
  • x264是如何爲每個候選幀選定爲P幀或B幀的詳細資訊可以參閱http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064。在此情況下,幀類型看起來會像這樣(假設--bframes 3):IBBBPBBBPBPI。

參閱:--b-bias--b-pyramid--ref--pbratio--partitions--weightb

b-adapt

默認值:1

設定彈性B幀位置決策算法。此設定控制x264如何決定要放置P幀或B幀。

0:停用,總是挑選B幀。這與舊的no-b-adapt設定相同作用。
1:“快速”算法,較快,越大的--bframes值會稍微提高速度。當使用此模式時,基本上建議搭配--bframes 16使用。
2:“最佳”算法,較慢,越大的--bframes值會大幅降低速度。

注意:對於多重階段(multi-pass)編碼,僅在第一階段(first pass)才需要此選項,因爲幀類型在此時已經決定完了。

b-bias

默認值:0

控制使用B幀而不使用P幀的可能性。大於0的值增加偏向B幀的加權,而小於0的值則相反。範圍是從-100到100。100並不保證全是B幀(要全是B幀該使用--b-adapt 0),而-100也不保證全是P幀。

僅在你認爲能比x264做出更好的速率控制決策時才使用此選項。

參閱:--bframes--ipratio

b-pyramid

默認值:normal

允許B幀作爲其他幀的參照幀。沒有此設定時,幀只能參照I/P幀。雖然I/P幀因其較高的品質作爲參照幀更有價值,但B幀也是很有用的。作爲參照幀的B幀會得到一個介於P幀和普通B幀之間的量化值。b-pyramid需要至少兩個以上的--bframes纔會運作。

如果是在爲藍光編碼,須使用nonestrict

none:不允許B幀作爲參照幀。
strict:每minigop允許一個B幀作爲參照幀,這是藍光標準強制執行的限制。
normal:每minigop允許多個B幀作爲參照幀。

參閱:--bframes--refs--no-mixed-refs

open-gop

默認值:none

open-gop是一個提高效率的編碼技術。有三種模式:

none:停用open-gop。
normal:啓用open-gop。
bluray:啓用open-gop。一個效率較低的open-gop版本,因爲normal模式無法用於藍光編碼。

某些解碼器不完全支援open-gop資料流,這就是爲什麼此選項並未默認爲啓用。如果想啓用open-gop,應該先測試所有可能用來撥放的解碼器。

open-gop的說明可以參閱http://forum.doom9.org/showthread.php?p=1300124#post1300124

no-cabac

默認值:無

停用彈性內容的二進制算數編碼(CABAC:Context Adaptive Binary Arithmetic Coder)資料流壓縮,切換回效率較低的彈性內容的可變長度編碼(CAVLC:Context Adaptive Variable Length Coder)系統。大幅降低壓縮效率(通常10~20%)和解碼的硬件需求。

ref

默認值:3

控制解碼圖片緩衝(DPB:Decoded Picture Buffer)的大小。範圍是從0到16。總之,此值是每個P幀可以使用先前多少幀作爲參照幀的數目(B幀可以使用的數目要少一或兩個,取決於它們是否作爲參照幀)。可以被參照的最小ref數是1。

還要注意的是,H.264規格限制了每個level的DPB大小。如果遵守Level 4.1規格,720p和1080p視訊的最大ref數分別是9和4。

參閱:--b-pyramid--no-mixed-refs--level

no-deblock

默認值:無

完全停用loop濾鏡。不建議。

參閱:--deblock

deblock

默認值:0:0

控制loop濾鏡(亦稱爲inloop deblocker),這是H.264標準的一部分。就性價比來說非常有效率。

可以在http://forum.doom9.org/showthread.php?t=109747找到loop濾鏡的參數是如何運作的說明(參閱第一個帖子和akupenguin的回覆)。

參閱:--no-deblock

slices

默認值:0

設定每幀的切片數,而且強制爲矩形切片(會被--slice-max-size--slice-max-mbs覆寫)。

如果是在爲藍光編碼,將值設爲4。否則,不要使用此選項,除非你知道真的有必要。

參閱:--slice-max-size--slice-max-mbs

slice-max-size

默認值:0

設定最大的切片大小(單位是字節),包括估計的NAL額外負荷(overhead)。(目前與--interlaced不相容)

參閱:--slices

slice-max-mbs

默認值:0

設定最大的切片大小(單位是宏區塊)。(目前與--interlaced不相容)

參閱:--slices

tff

啓用交錯式編碼並指定頂場優先(top field first)。x264的交錯式編碼使用MBAFF,本身效率比漸進式編碼差。出於此原因,僅在打算於交錯式顯示器上播放此視訊時,才應該編碼爲交錯式(或者視訊在送給x264之前無法進行去交錯)。此選項會自動啓用--pic-struct

bff

啓用交錯式編碼並指定底場優先(bottom field first)。詳細資訊可以參閱--tff

constrained-intra

默認值:無

啓用限制的內部預測(constrained intra prediction),這是SVC編碼的基礎層(base layer)所需要的。由於EveryoneTM忽略SVC,你同樣可以忽略此選項。

pulldown

默認值:none

使用其中一個默認模式將漸進式、固定幀率的輸入資料流標誌上軟膠捲過帶(soft telecine)。軟膠捲過帶在http://trac.handbrake.fr/wiki/Telecine有更詳細的解釋。

可用的默認:none, 22, 32, 64, double, triple, euro

指定除了none以外的任一模式會自動啓用--pic-struct

fake-interlaced

默認值:無

將資料流標記爲交錯式,即使它並未以交錯式來編碼。用於編碼25p和30p爲符合藍光標準的視訊。

速率控制

qp

默認值:無

三種速率控制方法之一。設定x264以固定量化值(Constant Quantizer)模式來編碼視訊。這裏給的值是指定P幀的量化值。I幀和B幀的量化值則是衍生自--ipratio--pbratio。CQ模式把某個量化值作爲目標,這意味着最終檔案大小是未知的(雖然可以透過一些方法來準確地估計)。將值設爲0會產生無失真輸出。對於相同視覺品質,qp會比--crf產生更大的檔案。qp模式也會停用彈性量化,因爲按照定義“固定量化值”意味着沒有彈性量化。

此選項與--bitrate--crf互斥。各種速率控制系統的詳細資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD

雖然qp不需要lookahead來執行因此速度較快,但通常應該改用--crf

參閱:--bitrate--crf--ipratio--pbratio

bitrate

默認值:無

三種速率控制方法之二。以目標位元速率(target bitrate)模式來編碼視訊。目標位元速率模式意味着最終檔案大小是已知的,但最終品質則未知。x264會嘗試把給定的位元速率作爲整體平均值來編碼視訊。此參數的單位是千位元/秒(8位元=1字節)。注意,1千位元(kilobit)是1000位元,而不是1024位元。

此設定通常與--pass在兩階段(two-pass)編碼一起使用。

此選項與--qp--crf互斥。各種速率控制系統的詳細資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD

參閱:--qp--crf--ratetol--pass--stats

crf

默認值:23.0

最後一種速率控制方法:固定速率係數(Constant Ratefactor)。當qp是把某個量化值作爲目標,而bitrate是把某個檔案大小作爲目標時,crf則是把某個“品質”作爲目標。構想是讓crf n提供的視覺品質與qp n相同,只是檔案更小一點。crf值的度量單位是“速率係數(ratefactor)”。

CRF是藉由降低“較不重要”的幀之品質來達到此目的。在此情況下,“較不重要”是指在複雜或高動態場景的幀,其品質不是很耗費位元數就是不易察覺,所以會提高它們的量化值。從這些幀裏所節省下來的位元數被重新分配到可以更有效利用的幀。

CRF花費的時間會比兩階段編碼少,因爲兩階段編碼中的“第一階段”被略過了。另一方面,要預測CRF編碼的最終位元速率是不可能的。根據情況哪種速率控制模式更好是由你來決定。

此選項與--qp--bitrate互斥。各種速率控制系統的詳細資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD

參閱:--qp--bitrate

rc-lookahead

默認值:40

設定mb-tree速率控制和vbv-lookahead使用的幀數。最大允許值是250。

對於mb-tree部分,增加幀數帶來更好的效果但也會更慢。mb-tree使用的最大緩衝值是MIN(rc-lookahead, --keyint)。

對於vbv-lookahead部分,當使用vbv時,增加幀數帶來更好的穩定性和準確度。vbv-lookahead使用的最大值是:

MIN(rc-lookahead, MAX(--keyint, MAX(--vbv-maxrate--bitrate) / --vbv-bufsize * --fps))

參閱:--no-mbtree--vbv-bufsize--vbv-maxrate

vbv-maxrate

默認值:0

設定重新填滿VBV緩衝的最大速率。

VBV會降低品質,所以必要時才使用。

參閱:--vbv-bufsize--vbv-initVBV編碼建議

vbv-bufsize

默認值:0

設定VBV緩衝的大小(單位是千位元)。

VBV會降低品質,所以必要時才使用。

參閱:--vbv-maxsize--vbv-initVBV編碼建議

vbv-init

默認值:0.9

設定VBV緩衝必須填滿多少纔會開始播放。

如果值小於1,初始的填滿量是:vbv-init * vbv-bufsize。否則該值即是初始的填滿量(單位是千位元)。

參閱:--vbv-maxsize--vbv-bufsizeVBV編碼建議

crf-max

默認值:無

一個類似--qpmax的設定,除了指定的是最大速率係數而非最大量化值。當使用--crf且啓用VBV時,此選項纔會運作。它阻止x264降低速率係數(亦稱爲“品質”)到低於給定的值,即使這樣做會違反VBV的條件約束。此設定主要適用於自訂資料流服務器。詳細資訊可以參閱http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52

參閱:--crf--vbv-maxrate--vbv-bufsize

qpmin

默認值:10

定義x264可以使用的最小量化值。量化值越小,輸出就越接近輸入。到了一定的值,x264的輸出看起來會跟輸入一樣,即使它並不完全相同。通常沒有理由允許x264花費比這更多的位元數在任何特定的宏區塊上。

當彈性量化啓用時(默認啓用),不建議提高qpmin,因爲這會降低幀裏面平面背景區域的品質。

參閱:--qpmax--ipratio

qpmax

默認值:51

定義x264可以使用的最大量化值。默認值51是H.264規格可供使用的最大量化值,而且品質極低。此默認值有效地停用了qpmax。如果想要限制x264可以輸出的最低品質,可以將此值設小一點(通常30~40),但通常並不建議調整此值。

參閱:--qpmin--pbratio--crf-max

qpstep

默認值:4

設定兩幀之間量化值的最大變更幅度。

ratetol

默認值:1.0

此參數有兩個目的:

  • 在一階段位元速率編碼時,此設定控制x264可以偏離目標平均位元速率的百分比。可以指定inf來完全停用溢出偵測(overflow detection)。可以設定的最小值是0.01。值設得越大,x264可以對接近電影結尾的複雜場景作出越好的反應。此目的的度量單位是百分比(例如,1.0等於允許1%的位元速率偏差)。
很多電影(例如動作片)在電影結尾時是最複雜的。因爲一階段編碼並不知道這一點,結尾所需的位元數通常被低估。將ratetol設爲inf可以減輕此情況,藉由允許編碼以更像--crf的模式運行,但檔案大小將會暴增。
  • 當VBV啓用時(即指定了--vbv-開頭的選項),此設定也會影響VBV的強度。值設得越大,允許VBV在冒着可能違反VBV設定的風險下有越大的波動。

ipratio

默認值:1.40

修改I幀量化值相比P幀量化值的目標平均增量。越大的值會提高I幀的品質。

參閱:--pbratio

pbratio

默認值:1.30

修改B幀量化值相比P幀量化值的目標平均減量。越大的值會降低B幀的品質。當mbtree啓用時(默認啓用),此設定無作用,mbtree會自動計算最佳值。

參閱:--ipratio

chroma-qp-offset

默認值:0

在編碼時增加色度平面量化值的偏移。偏移可以爲負數。

當使用psy-rd或psy-trellis時,x264自動降低此值來提高亮度的品質,其後降低色度的品質。這些設定的默認值會使chroma-qp-offset再減去2。

注意:x264僅在同一量化值編碼亮度平面和色度平面,直到量化值29。在此之後,色度逐步以比亮度低的量被量化,直到亮度在q51和色度在q39爲止。此行爲是由H.264標準所要求。

aq-mode

默認值:1

彈性量化模式。沒有AQ時,x264很容易分配不足的位元數到細節較少的部分。AQ是用來更好地分配視訊裏所有宏區塊之間的可用位元數。此設定變更AQ會重新分配位元數到哪個範圍裏:

0:完全不使用AQ。
1:允許AQ重新分配位元數到整個視訊和幀內。
2:自動變化(Auto-variance)AQ,會嘗試對每幀調整強度。(實驗性的)

參閱:--aq-strength

aq-strength

默認值:1.0

彈性量化強度。設定AQ偏向低細節(平面)的宏區塊之強度。不允許爲負數。0.0~2.0以外的值不建議。

參閱:--aq-mode

pass

默認值:無

此爲兩階段編碼的一個重要設定。它控制x264如何處理--stats檔案。有三種設定:

1:建立一個新的統計資料檔案。在第一階段使用此選項。
2:讀取統計資料檔案。在最終階段使用此選項。
3:讀取統計資料檔案並更新。

統計資料檔案包含每個輸入幀的資訊,可以輸入到x264以改進輸出。構想是執行第一階段來產生統計資料檔案,然後第二階段將建立一個最佳化的視訊編碼。改進的地方主要是從更好的速率控制中獲益。

參閱:--stats--bitrate--slow-firstpassX264統計資料檔案

stats

默認值:"x264_2pass.log"

設定x264讀取和寫入統計資料檔案的位置。

參閱:--passX264統計資料檔案

no-mbtree

默認值:無

停用宏區塊樹(macroblock tree)速率控制。使用宏區塊樹速率控制會改進整體壓縮率,藉由追蹤跨幀的時間傳播(temporal propagation)然後相應地加權。除了已經存在的統計資料檔案之外,多重階段編碼還需要一個新的統計資料檔案。

建議:默認值

參閱:--rc-lookahead

qcomp

默認值:0.60

量化值曲線壓縮係數。0.0是固定位元速率,1.0則是固定量化值。

當mbtree啓用時,它會影響mbtree的強度(qcomp越大,mbtree越弱)。

建議:默認值

參閱:--cplxblur--qblur

cplxblur

默認值:20

以給定的半徑範圍套用高斯模糊(gaussian blur)於量化值曲線。這意味着分配給每個幀的量化值會被它的鄰近幀模糊掉,以此來限制量化值波動。

參閱:--qcomp--qblur

qblur

默認值:0.5

在曲線壓縮之後,以給定的半徑範圍套用高斯模糊於量化值曲線。不怎麼重要的設定。

參閱:--qcomp--cplxblur

zones

默認值:無

調整視訊的特定片段之設定。可以修改每區段的大多數x264選項。

  • 一個單一區段的形式爲<起始幀>,<結束幀>,<選項>。
  • 多個區段彼此以"/"分隔。

選項:

這兩個是特殊選項。每區段只能設定其中一個,而且如果有設定其中一個,它必須爲該區段列出的第一個選項:

  • b=<浮點數> 套用位元速率乘數在此區段。在額外調整高動態和低動態場景時很有用。
  • q=<整數> 套用固定量化值在此區段。在套用於一段範圍的幀時很有用。

其他可用的選項如下:

  • ref=<整數>
  • b-bias=<整數>
  • scenecut=<整數>
  • no-deblock
  • deblock=<整數>:<整數>
  • deadzone-intra=<整數>
  • deadzone-inter=<整數>
  • direct=<字串>
  • merange=<整數>
  • nr=<整數>
  • subme=<整數>
  • trellis=<整數>
  • (no-)chroma-me
  • (no-)dct-decimate
  • (no-)fast-pskip
  • (no-)mixed-refs
  • psy-rd=<浮點數>:<浮點數>
  • me=<字串>
  • no-8x8dct
  • b-pyramid=<字串>

限制:

  • 一個區段的參照幀數無法超過--ref所指定的大小。
  • 無法開啓或關閉scenecut;如果--scenecut最初爲開啓(>0),則只能改變scenecut的大小。
  • 如果使用--me esa/tesa,merange無法超過最初所指定的大小。
  • 如果--subme最初指定爲0,則無法變更subme。
  • 如果--me最初指定爲dia、hex或umh,則無法將me設爲esa爲tesa。

範例:0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000

建議:默認值

qpfile

手動覆寫標準的速率控制。指定一個檔案,爲指定的幀賦予量化值和幀類型。格式爲“幀號 幀類型 量化值”。例如:

0 I 18 < IDR (key) I-frame 1 P 18 < P-frame 2 B 18 < Referenced B-frame 3 i 18 < Non-IDR (non-key) I-frame 4 b 18 < Non-referenced B-frame 5 K 18 < Keyframe*
  • 不需要指定每個幀。
  • 使用-1作爲所需的量化值允許x264自行選擇最佳的量化值,在只需設定幀類型時很有用。
  • 在指定了大量的幀類型和量化值時仍然讓x264間歇地自行選擇,會降低x264的效能。
  • "Keyframe"是一個泛用關鍵幀/搜尋點,如果--open-gopnone則等同於一個IDR I幀,否則等同於一個加上Recovery Point SEI標幟的Non-IDR I幀。

分析

partitions

默認值:p8x8,b8x8,i8x8,i4x4

H.264視訊在壓縮過程中劃分爲16x16的宏區塊。這些區塊可以進一步劃分爲更小的分割,這就是此選項要控制的部分。

此選項可以啓用個別分割。分割依不同幀類型啓用。

可用的分割:p8x8, p4x4, b8x8, i8x8, i4x4, none, all

  • I:i8x8、i4x4。
  • P:p8x8(也會啓用p16x8/p8x16)、p4x4(也會啓用p8x4/p4x8)。
  • B:b8x8(也會啓用b16x8/b8x16)。

p4x4通常不怎麼有用,而且性價比極低。

參閱:--no-8x8dct

direct

默認值:spatial

設定"direct"動態向量(motion vectors)的預測模式。有兩種模式可用:spatialtemporal。可以指定none來停用direct動態向量,和指定auto來允許x264在兩者之間切換爲適合的模式。如果設爲auto,x264會在編碼結束時輸出使用情況的資訊。auto最適合用於兩階段編碼,但也可用於一階段編碼。在第一階段auto模式,x264持續記錄每個方法執行到目前爲止的好壞,然後從該記錄挑選下一個預測模式。注意,僅在第一階段有指定auto時,才應該在第二階段指定auto;如果第一階段不是指定auto,第二階段將會默認爲temporalnone模式會浪費位元數,因此強烈不建議。

建議:auto

no-weightb

默認值:無

H.264允許“加權”B幀的參照,它允許變更每個參照影響預測圖片的程度。此選項停用該功能。

建議:默認值

weightp

默認值:2

使x264能夠使用明確加權預測(explicit weighted prediction)來改進P幀的壓縮。模式越高越慢。

注意:在爲Adobe Flash編碼時,將值設爲0,否則它的解碼器會產生不自然痕跡(artifacts)。Flash 10.1修正了此bug。

模式:

0:停用。
1:盲目偏移(固定-1的偏移)。
2:智慧重複幀分析,特別設計爲改進淡入/淡出的壓縮。

me

默認值:hex

設定全像素(full-pixel)動態估算(motion estimation)的方法。有五個選項:

dia(diamond):最簡單的搜尋方法,起始於最佳預測器(predictor),檢查上、左、下、右方一個像素的動態向量,挑選其中最好的一個,然後重複此過程,直到它不再找到任何更好的動態向量爲止。
hex(hexagon):由類似策略組成,除了它使用周圍6點範圍爲2的搜尋,因此叫做六邊形。它比dia更有效率且幾乎沒有變慢,因此作爲一般用途的編碼是個不錯的選擇。
umh(uneven multi-hex):比hex更慢,但搜尋複雜的多六邊形圖樣以避免遺漏難以找到的動態向量。不像hex和dia,merange參數直接控制umh的搜尋半徑,允許增加或減少廣域搜尋的大小。
esa(exhaustive):一種在merange內整個動態搜尋空間的高度最佳化智慧搜尋。雖然速度較快,但數學上相當於搜尋該區域每個單一動態向量的暴力(bruteforce)方法。不過,它仍然比UMH還要慢,而且沒有帶來很大的好處,所以對於日常的編碼不是特別有用。
tesa(transformed exhaustive):一種嘗試接近在每個動態向量執行Hadamard轉換法(transform)比較的效果之算法,就像exhaustive,但效果好一點而速度慢一點。

參閱:--merange

merange

默認值:16

merange控制動態搜尋的最大範圍(單位是像素)。對於hex和dia,範圍限制在4~16。對於umh和esa,它可以增加到超過默認值16來允許範圍更廣的動態搜尋,對於HD視訊和高動態鏡頭很有用。注意,對於umh、esa和tesa,增加merange會大幅減慢編碼速度。

參閱:--me

mvrange

默認值:-1 (自動)

設定動態向量的最大(垂直)範圍(單位是像素)。默認值依level不同:

  • Level 1/1b:64。
  • Level 1.1~2.0:128。
  • Level 2.1~3.0:256。
  • Level 3.1+:512。

注意:如果想要手動覆寫mvrange,在設定時從上述值減去0.25(例如--mvrange 127.75)。

建議:默認值

mvrange-thread

默認值:-1 (自動)

設定執行緒之間的最小動態向量緩衝。不要碰它。

建議:默認值

subme

默認值:7

設定子像素(subpixel)估算複雜度。值越高越好。層級1~5只是控制子像素細分(refinement)強度。層級6爲模式決策啓用RDO,而層級8爲動態向量和內部預測模式啓用RDO。RDO層級明顯慢於先前的層級。

使用小於2的值不但會啓用較快且品質較低的lookahead模式,而且導致較差的--scenecut決策,因此不建議。

可用的值:

0:Fullpel only
1:QPel SAD 1 iteration
2:QPel SATD 2 iterations
3:HPel on MB then QPel
4:Always QPel
5:Multi QPel + bi-directional motion estimation
6:RD on I/P frames
7:RD on all frames
8:RD refinement on I/P frames
9:RD refinement on all frames
10:QP-RD (requires --trellis=2, --aq-mode>0)

建議:默認值,或者更高,除非速度非常重要

psy-rd

默認值:1.0:0.0

第一個數是Psy-RDO的強度(需要subme>=6)。第二個數是Psy-Trellis的強度(需要trellis>=1)。注意,Trellis仍然被視爲“實驗性的”,而且幾乎可以肯定至少卡通不適合使用。

psy-rd的解釋可以參閱http://forum.doom9.org/showthread.php?t=138293

no-psy

默認值:無

停用所有會降低PSNR或SSIM的視覺最佳化。這也會停用一些無法透過x264的命令列引數設定的內部psy最佳化。

建議:默認值

no-mixed-refs

默認值:無

混合參照會以每個8x8分割爲基礎來選取參照,而不是以每個宏區塊爲基礎。當使用多個參照幀時這會改進品質,雖然要損失一些速度。設定此選項會停用該功能。

建議:默認值

參閱:--ref

no-chroma-me

默認值:無

通常,亮度和色度兩個平面都會做動態估算。此選項停用色度動態估算來提高些微速度。

建議:默認值

no-8x8dct

默認值:無

彈性8x8離散餘弦轉換(Adaptive 8x8 DCT)使x264能夠智慧彈性地使用I幀的8x8轉換。此選項停用該功能。

建議:默認值

trellis

默認值:1

執行Trellis quantization來提高效率。

0:停用。
1:只在一個宏區塊的最終編碼上啓用。
2:在所有模式決策上啓用。

在宏區塊時提供了速度和效率之間的良好平衡。在所有決策時則更加降低速度。

建議:默認值

注意:需要--cabac

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