x264參數介紹---幀類型和碼率控制

x264參數介紹---幀類型和碼率控制


輸入
用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幀更加保持恆定。並且這樣能夠加強視頻流對丟包的容錯能力。這個選項會下降壓縮率,因此在確實須要的時候才選擇它。
還有一些有意思的事情:一、第一幀依然是IDR幀。二、內部宏塊只在P幀中存在,刷新波在一個或多個B幀後的P幀中普遍存在。三、主要的壓縮率降低緣由是在宏塊中新(左邊)的波並不能參考舊(右邊)的波。
建議:使用默認值
bframes
默認:3
說明:設置x264可以使用的B幀的最大連續數量。
沒有B幀時,一個典型的x264流幀類型是這樣的:IPPPPP…PI。若是設置了-bframes 2,那麼兩個連續的P幀就能夠用B幀替換,而後就像這樣:IBPBBPBPPPB…PI。
B幀和P幀的區別在於它能夠參照它以後的幀,這個特色讓它能夠顯著地提高壓縮率。他們的平均品質受 –pbratio選項的控制。
還有一些有意思的事情:
一、x264有2種B幀,一種能夠做爲參照幀,一種不能;
二、關於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、2二、3二、6四、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趟bitrate編碼時,這個參數控制x264能夠偏離給定的平均目標比特率的百分比。能夠設置爲inf徹底關閉碼率溢出偵測。最低能夠設置爲 0.01。較高的值可讓x264更好地處理影片結束部分的複雜場景。對於這個目的而言單位是百分比(1.0意味着容許1%的bitrate誤差)。
不少影片(好比說動做打鬥片)在最後的片斷裏十分複雜。1趟編碼並不知道哪裏是最複雜的片段,每每到最後比特都已經用完了。把rateol設置爲inf就能解決這個問題,它容許編碼器用相似 –crf的方式工做,固然,文件大小會溢出。
二、當開啓了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參數介紹(2、分析和視頻可用性信息)
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×八、4×4),具體參數以下:
I幀:i8x八、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 --help、x264 --longhelp或x264 --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會在解析命令列的最後套用如下設定:
--ref 1
--no-8x8dct
--partitions i4x4 (若是最初有啓用,不然爲無)
--me dia
--subme MIN(2, subme)
--trellis 0
可使用--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值會稍微提升速度。當使用此模式時,基本上建議搭配--bframes16使用。
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纔會運做。
若是是在爲藍光編碼,須使用none或strict。
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-init, VBV編碼建議
vbv-bufsize
默認值:0
設定VBV緩衝的大小(單位是千位元)。
VBV會下降品質,因此必要時才使用。
參閱:--vbv-maxsize, --vbv-init, VBV編碼建議
vbv-init
默認值:0.9
設定VBV緩衝必須填滿多少纔會開始播放。
若是值小於1,初始的填滿量是:vbv-init * vbv-bufsize。不然該值便是初始的填滿量(單位是千位元)。
參閱:--vbv-maxsize, --vbv-bufsize, VBV編碼建議
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-firstpass, X264統計資料檔案
stats
默認值:"x264_2pass.log"
設定x264讀取和寫入統計資料檔案的位置。
參閱:--pass, X264統計資料檔案
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-gop是none則等同於一個IDR I幀,不然等同於一個加上Recovery Point SEI標幟的Non-IDR I幀。
分析
partitions
默認值:p8x8,b8x8,i8x8,i4x4
H.264視訊在壓縮過程當中劃分爲16x16的宏區塊。這些區塊能夠進一步劃分爲更小的分割,這就是此選項要控制的部分。
此選項能夠啓用個別分割。分割依不一樣幀類型啓用。
可用的分割:p8x8, p4x4, b8x8, i8x8, i4x4, none, all
I:i8x八、i4x4。
P:p8x8(也會啓用p16x8/p8x16)、p4x4(也會啓用p8x4/p4x8)。
B:b8x8(也會啓用b16x8/b8x16)。
p4x4一般不怎麼有用,並且性價比極低。
參閱:--no-8x8dct
direct
默認值:spatial
設定"direct"動態向量(motion vectors)的預測模式。有兩種模式可用:spatial和temporal。能夠指定none來停用direct動態向量,和指定auto來容許x264在二者之間切換爲適合的模式。若是設爲auto,x264會在編碼結束時輸出使用狀況的資訊。auto最適合用於兩階段編碼,但也可用於一階段編碼。在第一階段auto模式,x264持續記錄每一個方法執行到目前爲止的好壞,而後從該記錄挑選下一個預測模式。注意,僅在第一階段有指定auto時,才應該在第二階段指定auto;若是第一階段不是指定auto,第二階段將會默認爲temporal。none模式會浪費位元數,所以強烈不建議。
建議: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 php

更多點擊:http://www.nmm-hd.org/newbbs/ git

 

歡迎加入 TED(技術、娛樂、設計)交流羣 46367318
相關文章
相關標籤/搜索