(轉)x264參數中文詳解(X264 Settings)

0php

解釋x264命令可選項的用途和使用方法。同執行 x264 --fullhelp 顯示順序。本文主要翻譯:mewiki.project357.com/wiki/X264_Settings,同時參考doom9 論壇、Silky Bible、以及其它互聯網資料加以註解。

詞彙翻譯:
macroblock:宏區塊。是一種圖像壓縮的術語。
宏區塊是運動預測的基本單位,一張完整的圖像(frame)一般會被切割成幾個宏區塊。h.264 的宏區塊大小是可變的,經常使用 16x16 pixels。

幫助
X264 內置幫助文檔。運行 x264 時帶上 --help、--longhelp 或者 --fullhelp 便可看到幫助信息。三個選項給出的信息一個比一個詳細。

輸入
使用單一位置參數指定視頻源。如:
x264.exe --output NUL C:\input.avs
x264 --output /dev/null ~/input.y4m
當輸入是原始 YUY 數據時,必須告訴 x264 分辨率。一樣的還要指定幀率:
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.exe --fullhelp

Profile
默認值:未設置
限定編碼輸出流的等級。若是你指定了等級,它將取代所有其它選項,因此使用等級選項能夠獲得良好的兼容性。但使用等級選項,就沒法使用無損壓縮(--qp 0 or --crf 0)。
若是你的播放器僅能支持特定等級的話,就須要指定等級選項。大多數播放器支持高等級,就不須要指定等級選項了。
可選項: baseline, main, high.

Preset
默認值: medium
選擇預設配置須要綜合考慮壓縮效果和編碼速度。
修改 x264 參數順序:預設配置先於其它選項。
最好設置爲能夠接受的 slowest。
可選項: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo.
我的體會:slow, slower, verslow 質量基本至關,slow 略差一點。placebo 反而不如那三個,但速度卻慢的多。建議使用 slower。

Tune
默認值: 未設置
對輸入內容進行 優化
修改 x264 參數順序:調優項後於 --preset,但先於其它選項。
若是源內容符合下面的條件,可使用調優,不然就不要用。
可選項: film(膠片電影), animation(動畫片), grain(顆粒感很重的), stillimage(靜態圖像), psnr(信噪比。參見: http://baike.baidu.com/view/1624289.htm), ssim(結構類似性。參見: http://baike.baidu.com/view/1559204.htm), fastdecode(快速解碼。主要用於一些低性能的播放設備), zerolatency(低時延。主要用於直播等).

slow-firstpass
默認值: 未設置
--pass 1 選項隱含把下列參數追加到 x264 命令行末尾:
•        --ref 1
•        --no-8x8dct
•        --partitions i4x4 (原本有,繼續有;原本無,則沒有)
•        --me dia 
•        --subme MIN( 2, subme )
•        --trellis 0
可使用 --slow-firstpass 關閉 --pass 1 這項特性。
注意:使用 --preset placebo 隱含應用 slow-firstpass 選項。
參閱 --pass 選項。


幀類型 選項
「幀」基礎知識:
影片能夠看做是由一張張連續的圖片組成的,每幅圖片就是一幀。壓縮的視頻由3種不一樣類型的幀(Intra (I) frames (也叫 key frames),Predictive (P) 和 Bidirectional (B) frames)組成。
特定類型的幀之間能夠參考,意思是一幅幀有時僅需保存自身與被參考幀的不一樣之處便可。不過參考模式會致使錯誤延續傳播,即 X 幀出錯,參考它的 Y幀也會出錯,那麼參考 Y 幀的 Z 幀也會出錯。。。,後果很嚴重,因此視頻裏必定要有不能被參考的幀。
I 幀須要包含完整圖像信息,因此壓縮的少,體積大。在視頻播放中,跳躍式快進(快退)時須要 I 幀,有的視頻快進後黑屏,就是在新的播放位置尚未找到 I 幀引發的。
P 幀保存自身與 I 幀或其它 P 幀之間的差別。P 幀能夠被看成參考幀,它須要包含足夠多的信息,因爲採用運動補償壓縮技術,P 幀比 I 幀保存的內容少。
B 幀也是保存自身與其它幀之間的差別,它既能夠參考它前面的幀也能夠參考它後的幀(播放順序),可是它不能做爲參考幀(特殊的"B-frame pyramid" 除外)。H.264 支持"B-frame pyramid",這種特殊的 B 幀能夠被另外的連續 B 幀參考,除此以外,B 幀不能被其它幀參考。B 幀的壓縮最大,包含的信息最少。
圖像質量高、壓縮率高的視頻就是I、P、B 幀的完美結合。

Keyint
默認值: 250 
設置 x264 輸出流中兩個IDR 幀(也叫 keyframes 關鍵幀。IDR英文原意爲「瞬間解碼刷新」)之間的最大間隔幀數。也能夠定義「無限」從而再也不插入非場景轉換 IDR 幀。
IDR 幀就像視頻流裏的‘分隔符’,位於它先後(播放順序)的幀之間是不能相互參考的。並且 IDR 幀也是 I 幀,所以它也不能參考其它幀。這些特性意味着它們能夠做爲視頻跳躍播放時的新開始點。
通常狀況下 I 幀比 P 或 B 幀體積大的多(在低運動場景中經常是10倍或更大),當和低 VBV 設置並用時會給碼率控制帶來極大的麻煩。關於這種狀況,參考 --intra-refresh。
默認設置適合大多數視頻。但當用於藍光、廣播、生活錄像或其它專業錄像時,可能須要較小的 GOP (圖像組。一個GOP就是一組連續的畫面。)長度(經常爲fps 的1倍左右)。
參照: --min-keyint, --scenecut, --intra-refresh

min-keyint
默認值: auto (取 --keyint/10 和 --fps 兩個中的最小值)
設置兩個 IDR 幀之間的最小間隔幀數。
閱讀 --keyint 瞭解 IDR 幀。很是小的關鍵幀範圍會形成錯誤放置 IDR 幀(例如:頻閃場景)。選項限定在每一個 IDR 幀以後放置 IDR 幀的最小間隔。
min-keyint 最大容許值爲 --keyint/2+1
推薦: Default, 或 1倍的framerate.
參照: --keyint, --scenecut

no-scenecut
默認值: 未設置
徹底關閉自適應 I 幀決策。
參照: --scenecut

scenecut
默認值: 40 
設置放置 I 或 IDR 幀的閥值(閱讀:場景變換檢測)。
x264 爲每一個幀計算一個度量來評估它與它前面的幀有多大不一樣。假如值小於 scenecut 設定值,意味着發生場景切換。若是此幀與前面最後一個 IDR 幀間隔小於 --min-keyint 就放置一個 I 幀,不然就放置一個 IDR 幀。過大的 scenecut 值會致使產生大量的場景切換。欲詳細瞭解場景切換的比較過程,請參考 http://forum.doom9.org/showthread.php?t=121116
scencecut 設置爲0時至關於--no-scenecut。
推薦: Default
參照: --keyint, --min-keyint, --no-scenecut

intra-refresh
默認值: Off 
禁用 IDR 幀,取而代之的是 x264 對位於 --keyint 位置的幀採用宏區塊內編碼方式。這樣作的好處是能夠得到比使用 IDR 幀更恆定的幀大小,對要求低時延的視頻流更有利。同時也增長了丟包後的視頻流恢復能力。這個選項會下降壓縮率,所以僅在確有必要時才使用。
我的理解:IDR 幀雖然也是 I 幀,即自己是自解碼幀,不須要參考其它幀來解碼。可是 IDR 幀內部各宏區塊之間是互相參考的,若是傳輸過程當中某宏區塊丟失,會致使整幀沒法解碼。

Bframes
默認值: 3 
設置 x264 可使用的最大連續 B 幀數量。
若是沒有 B 幀,典型的 x264 流的幀類型就像:IPPPPP...PI。若是設置 --bframes 2,兩個連續的 P 幀將被 B 幀代替,就像:IBPBBPBPPPB...PI。
除了 B 幀能夠參考後面的幀(播放順序)外,B 幀和 P 幀差很少。向後參考能夠極大提升壓縮率。B 幀的平均質量由 --pbratio 控制。
有趣的現象:
•        x264 偶爾須要區分兩種不一樣類型的 B 幀。一個‘B’幀能夠參考另外一個用於被其它幀參考的 B 幀(見 --b-pyramid,這裏的 ‘b’指的是參考了別的B幀的幀,而 B 不是。假如你看到既‘b’又有‘B’,就是這個意思。當不須要區分的時候,用‘B’表明全部的 B 幀。)
•        欲詳細瞭解 x264 壓縮時如何把候選幀肯定爲 P 或 B 幀,請參考 http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064。這種狀況下,幀類型看起來就像(播放順序)(若是 --bframes 3):IBBBPBBBPBPI。
參照: --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 幀代替 P 幀的可能性。值大於0增長採用 B 幀的可能性,小於0則相反。這個數沒有度量單位。範圍從 -100 到 100。值100不保證都是 P 幀,值-100不保證沒有 P 幀(真想沒有 P 幀可使用 --b-adapt 0)。
僅當你感受能比 x264 更好的控制碼率的時候採用。
參照: --b-frames, --ipratio

b-pyramid
默認值: normal 
容許 B 幀做爲其它幀的參考幀。不設置,就只能參考 I 或 P 幀。儘管高質量的 I/P 幀做爲參考幀更有價值,但 B 幀也能夠做爲參考幀。做爲參考幀的 B 幀將被量化至 P 幀 和普通 B 幀之間(所謂的半量化)。 --bframes 至少爲2時B-pyramid 纔開始工做。
壓制藍光時,使用'none' 或 'strict'。
•        none: 不容許 B 幀做爲參考幀。
•        strict: 藍光標準強制性規定:每一個 minigop 中只容許一個 B 幀做爲參考幀。
•        normal: 每一個 minigop 中容許任意數量 B 幀做爲參考幀。
參照: --bframes, --refs, --no-mixed-refs

open-gop
默認值: none
Open-GOP 是一種提升壓縮率的編碼技術。有三種模式:
•        none: 關閉
•        normal: 啓用
•        bluray: 啓用。一個較低效率版本的 Open-GOP,當壓制藍光時 normal 模式不能工做。
一些解碼器不徹底支持Open-GOP 流,這就是爲何默認是關閉的。你須要測試播放視頻流的解碼器,或者等到Open-GOP 被廣泛支持。
Open-GOP 的解釋: http://forum.doom9.org/showthread.php?p=1300124

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個,取決於它們是或否做爲參考幀)。最小值是1。
H.264規範限定每一個 level 的 DPB 大小。若是遵照 Level 4.1 規範,720p 和 1080p 視頻最大的 refs 值爲9和4。
參照: --b-pyramid, --no-mixed-refs, --level

no-deblock
默認值: 未設置
關閉 loop filter(環內濾波)。不推薦。
參照: --deblock

deblock
默認值: 0:0
控制 loop filter(環內濾波。也叫 inloop deblocker),是 H.264 標準的一部分。就平衡編碼時間與圖像質量來講它很是有效。
參考  http://forum.doom9.org/showthread.php?t=109747(樓主帖和 akupenguin 的回覆)來了解 loop filter 參數如何工做。
注:樓主(*.mp4 guy)的描述有誤,仔細看 lovelove 的回覆。
參照: --no-deblock

slices
默認值: 0 
設置每幀的分片數量,而且強制矩形分片。
編碼藍光時設爲4,除此以外不要使用這個選項,除非你知道你在幹什麼。
參照: --slice-max-size, --slice-max-mbs.

slice-max-size
默認值: 0
以字節爲單位設置切片最大尺寸,包括預估的網絡層開銷在內。(目前和 --interlaced 不兼容)
參照: --slices

slice-max-mbs
默認值: 0
以宏區塊爲單位設置切片最大數。(目前和 --interlaced 不兼容)
參照: --slices

tff
開啓隔行編碼方式,並指定 top field(頂部圖場)在先。x264的隔行編碼使用 MBAFF,不如逐行編碼效率高。所以,只有須要在隔行掃描設備上播放時纔開啓隔行掃描編碼(或者是視頻流在送給 x264 之間沒法完成反隔行變換)。隱含應用 --pic-struct。

bff
開啓隔行編碼方式,並指定 bottom field(底部圖場)在先。更多信息見 --tff。

constrained-intra
默認值: 未設置
開啓強制內部預測,這是 SVC 編碼的基本要求。因爲 EveryoneTM 放棄了 SVC, 你也能夠無視這個選項了。

pulldown
默認值: none 
‘軟’膠捲過帶(逐行,恆定幀率。之因此叫‘軟’是由於大部分膠捲過帶是硬件實現的)。更多解釋見 http://trac.handbrake.fr/wiki/Telecine。可選項:none, 22, 32, 64, double, triple, euro.
除 none 外其它選項隱含應用 --pic-struct。
Telecine(膠捲過帶)和 IVTC(inverse telecine。反膠捲過帶)實現方法:
電影本來是 24fps 的,若是要在 NTSC 制式的電視上播放,就須要膠捲過帶,在此過程當中,會把影片通過 3:2 pulldown 轉爲 30fps。
把電影本來的 1 2 3 4 四個幀,拆成 1o 1e 2o 2e 3o 3e 4o 4e,每一個幀拆成奇數掃瞄線組成的奇數圖場(Odd Field)和偶數掃瞄線組成的偶數圖場(Even Field)。從新組合以下(以 Odd Field First 的順序)
1o 1e - 2o 2e - 2o 3e - 3o 4e - 4o 4e
[ A ] - [ B ] - [ C ] - [ D ] - [ E ]
每兩個 Field 再從新組合成一個幀,就變成 [A][B][C][D][E] 五個幀。這樣由本來的 4 張變成 5 張,4*6 = 24 => 5*6 = 30,就能從 24fps 轉爲 30fps。
理解了膠捲過帶,再理解 IVTC 就容易了。IVTC,將 30fps 轉回 24fps,這樣壓縮的畫面張數由 30fps 減小爲 24fps,少了 20%,等於碼率增長 20%,並且畫面無交錯容易壓縮,因此壓出來的畫質會好不少。

fake-interlaced
默認值: 未設置
把視頻流標記爲隔行方式,即便它不是隔行方式編碼。容許編碼 25p 和 30p 藍光兼容視頻流。


碼率控制

qp
默認值: 未設置
三種可用的碼率控制方法之一。以恆定量化值(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。
可使用 --crf 代替 qp,不過 qp 模式不須要預分析會更快一些。
參照: --bitrate, --crf, --ipratio, --pbratio

bitrate
默認值: 未設置
碼率控制方法之二。以比特率(bitrate)做爲目標的編碼方式。最終文件大小可知,但最終圖像質量不可知。x264 把給定的比特率做爲總平均值來做爲目標,也就是說每幀的比特率可能不符合給定的比特率,可是整體平均比特率符合給定的比特率。比特率的單位是 kilobits/sec(8bits = 1字節)。須要注意的是 1 kilobit 是 1000 bits,而不是 1024 位。
這個選項常和 --pass 一塊兒用於2遍編碼。
本選項與 --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 比2遍編碼方式節省時間,由於它少了一次編碼。另外,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 的最大值是 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
mb-tree 的解釋: http://baike.baidu.com/view/3098244.html
vbv 的解釋: http://baike.baidu.com/view/1519233.htm
vbv-lookahead 是vbv 預檢測。

vbv-maxrate
默認值: 0
設置 vbv 緩存被再充滿的最大碼率。因爲 vbv 緩存充滿會形成溢出,爲防止溢出發生,視頻的最大碼率不能超過 vbv-maxrate。
vbv 下降圖像質量,僅在確實須要時再使用。
參照: --vbv-bufsize, --vbv-init 和 vbv 編碼建議: http://mewiki.project357.com/wik ... stions#VBV_Encoding

vbv-bufsize
默認值: 0 
以 kilobits 爲單位設置 vbv 緩存大小。
vbv 下降圖像質量,僅在確實須要時再使用。
參照: --vbv-maxrate, --vbv-init 和 vbv 編碼建議: http://mewiki.project357.com/wik ... stions#VBV_Encoding

vbv-init
默認值: 0.9 
設置開始播放前 vbv 緩存必須的充滿率。
假如小於1,初始填充量爲 vbv-init * vbv-bufsize。反之則是單位爲 kilobits 的初始填充量數值。
參照: --vbv-maxsize, --vbv-bufsize 和 vbv 編碼建議: http://mewiki.project357.com/wik ... stions#VBV_Encoding

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
默認值: 0
定義最小量化值。量化值越低,輸出越接近輸入,到某個量化值,輸出看起來就和輸入同樣,儘管並非真的相同。一般沒有理由讓 x264 在特別宏區塊上浪費碼流。
當自適應量化開啓時(默認開啓),提升 qpmin 是不可取的,由於這樣會下降幀中平坦背景區域的畫面質量。
參照: --qpmax, --ipratio

qpmax
默認值: 51
和 qpmin 相反,定義最大量化值。51是 h.264 規範中能夠採用的最大量化值,質量至關低。默認值至關於禁用 qpmax。假如想控制輸出的最低質量,也許你會把它設的低一些(30-40是你能設的最低值),但不建議調整它。
參照: --qpmin, --pbratio, --crf-max

qpstep
默認值: 4
設置兩幀之間量化值的最大差值。

ratetol
默認值: 1.0
這是一個雙用途參數:
•        在 1-pass 編碼中,告訴 x265 能夠與設定比特率相差百分之幾。能夠設置爲‘inf’來完全關閉碼率溢出檢測。最低可設爲0.01。設的高些有利於 x264 處理影片末尾的複雜場景。單位是%(例如:1.0 就是 1% 的比特率誤差)。
許多動做片等,結尾都是火爆場景。但 1-pass 不知道這些,經常會低估影片末尾的碼率需求。inf 參數讓編碼更像 --crf 模式來緩解這個問題,但文件大小會超標。
•        當 vbv 啓用時(例如:使用帶 --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
給色度的量化值增長一個偏移量。能夠是負值。
當開啓 psy-rd 和/或 psy-trellis 時,x264 會自動減少偏移量來提升亮度質量,形成色度質量降低。默認從偏移量中減2。
注意:在 q29如下,x264 對亮度和色度以相同量化值進行編碼。超過29後,色度量化值的增加率小於亮度,直至亮度達到 q51 和 色度達到 q39。這是 H.264 標準要求的。

aq-mode
自適應量化模式
默認值: 1
不用 AQ,x264 傾向於給缺少細節的場景分配較少的碼流。AQ 用來把可用的碼流更好的分配給全部的宏區塊。此選項用於改變 AQ 從新分配碼流的範圍:
•        0:關閉 AQ。
•        1:在整個視頻範圍和幀內部分配。
•        2:根據幀的比重自動分配(實驗性質)。
參照: --aq-strength

aq-strength
自適應量化比重
默認值: 1.0
讓 AQ 向低細節(平坦、單調)宏區塊傾斜。不容許負值。
參照: --aq-mode

pass
默認值: 未設置
這是兩邊編碼的重要選項。控制 x264 如何處理 stats 文件。有三種設置:
•        1:生成新 stats 文件。在第一遍編碼時使用。
•        2:讀 stats 文件。在最終編碼時使用。
•        3:讀 stats 文件,並更新文件。
stats 文件包含每一個幀的信息,x264 用於提升輸出質量。第一遍編碼時生成 stats 文件,第二遍編碼時利用它來優化視頻。最佳用途是碼率控制。
參照: --stats, --bitrate, --slow-firstpass X264_statsfile

stats
默認值: 'x264_2pass.log' 
設置存放 stats 文件的位置及文件名。
參照: --pass

no-mbtree
默認值: 未設置
禁用宏區塊樹(mb-tree)碼率控制。使用宏區塊樹跟蹤宏區塊在幀中的使用狀況和權重能夠提升壓縮率。須要生成一個很大的狀態文件來保存數據。
推薦: Default
參照: --rc-lookahead

qcomp
默認值: 0.60
量化值曲線因子。0.0 趨向於 恆定比特率,1.0 趨向於 恆定量化值。
當和 mb-tree 連用時,影響 mb-tree 權重。(高 qcomp 等價於減弱 mb-tree)
推薦: Default
參照: --cplxblur, --qblur

cplxblur
默認值: 20
以指定的半徑對量化值曲線應用高斯模糊濾鏡。就是經過模糊相鄰幀的量化值來達到限制量化值波動的目的。
參照: --qcomp, --qblur

qblur
默認值: 0.5 
在量化值曲線壓縮後,以指定的半徑對量化值曲線應用高斯模糊濾鏡。這個設置不重要。
參照: --qcomp, --cplxblur

zones
默認值: 未設置
能夠把視頻分段(zone),對每段分別設置壓縮選項。你能夠修改 zone 中的大部分 x264 選項。
•        單個 zone 格式爲 <start frame>,<end frame>,<options>
•        多個 zone 之間用 '/' 分隔。

zone 選項: 
有兩個選項比較特殊。能夠僅設置一個,假如你設置一個的話,它必須是這個 zone 中的第一個選項。
•        b=<float> 乘以原有 bitrate 是 zone 的 bitrate。有益於高速和低速場景優化。
•        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 定義值。
•        不能在 zone 中 關閉 或 開啓 scenecut;若是已經開啓,僅能夠修改。
•        若是 subme 原有值爲 0,則不能修改。
•        若是 --me 原有值爲 dia, hex 或 umh,則不能設置爲 esa 或 tesa。
•        若是 --me 原有值爲 esa 或 tesa ,則不能超越。
例子: 0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000
建議: Default

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 執行效率。
•        假如設置 --open-gop none,則 'Keyframe' 等價因而一個 IDR I幀的普通關鍵幀,反之,等價因而一個帶恢復點標誌 SEI的非 IDR I幀。


分析 選項
partitions
默認: 'p8x8,b8x8,i8x8,i4x4' 
壓縮過程當中視頻被分割成16x16 的宏區塊。這些塊能被進一步分割的更小,這些就由本選項控制。
使用本選項,你能夠單獨定義分割類型。分割類型按幀類型(如:I, P, B)分類。可用的分割類型爲 p8x8, p4x4, b8x8, i8x8, 和 i4x4。
•        I: i8x8, i4x4
•        P: p8x8 (亦包含 p16x8/p8x16), p4x4 (亦包含 p8x4/p4x8)
•        B: b8x8 (亦包含 b16x8/b8x16)
你也能夠設置爲'none' 或 'all'
p4x4 一般不太有用,經過使用它來增長圖像質量將極大的下降壓縮速度。
參照: --no-8x8dct

direct
默認: 'spatial'
設置直接運動矢量的預測模式。有兩種模式:空域和時域(spatial, temporal)。你也能夠選擇 none 禁用直接運動矢量,或選擇 auto 讓 x264 根據狀況在兩種模式之間切換。若是設爲 auto,x264 會在編碼結束後輸出相關信息。auto 在兩遍編碼方式下工做的很好,並且在單遍編碼下也能夠工做。在第一遍編碼爲 auto 時,x264 保存每種方法的平均執行狀況,並從中選出下一種預測模式。注意:若是第一遍編碼時用的 auto,第二遍編碼時就只能用 auto;不然,第二遍編碼將默認爲 temporal。使用 none 浪費碼流,嚴重不建議。
建議: 'auto' 

no-weightb
默認: 未設置
H.264 容許設置 B 幀參考幀的權重,權重可讓你改變各參考幀對預測畫面的影響程度。本選項關閉此特性。
建議: Default

weightp
默認: 2
在 P 幀中開啓加權預測用於提升壓縮率。同時提升淡入淡出場景質量。值越大越慢。
模式: 
•        0. 關閉
•        1. 簡單: 淡入淡出分析,可是不重複引用。
•        2. 智能: 淡入淡出分析,重複引用。

me
默認: 'hex'
設置全像素運動預測方式。有5種選擇:
•        dia (diamond。菱形)  最簡單的搜索方式,從最佳預測點開始,在1個點的上、下、左、右四個方向判斷此點的運動軌跡,選擇最佳值,重複此過程直至找不到較好的軌跡。
•        hex (hexagon。六角形) 秉承簡單策略,除了它是在兩行共搜索6個方向,這也是它名稱的由來。比 dia 有效且速度基本至關,所以是用於普通編碼的好選擇。
•        umh (uneven multi-hex。非偶多六角形) 比 hex 慢,可是經過搜索複雜的多六角形區域從而避免錯過難以找到的運動軌跡。不像 hex 和 dia,參數 merange 直接控制 umh 的搜索半徑,容許你增長或減少搜索範圍。
•        esa (exhaustive。窮舉) 在最佳預測點 merange 範圍內的整個運動空間進行高度優化的智能搜索。它在數學上至關於在區域內搜索每一個運動向量的窮舉法。儘管比較快,仍是比 umh 慢,沒有太多好處,不適用於每天編碼。
•        tesa (transformed exhaustive。改進的窮舉) 這種算法試圖粗略估計對每一個運動向量進行 Hadamard 變換的效果;像 esa,更好一點也更慢一點。
參照: --merange

merange
默認: 16 
merange以像素爲單位控制最大運動搜索範圍。對於 hex 和 dia,在默認16下,它的範圍強制在 4-16。對於 umh 和 esa,能在16在的基礎上增長從而搜索更大的範圍,對於高清和高速影片頗有用。注意:對於 umh, esa 和 tesa,增長 merange 將明顯下降編碼速度。
參照: --me

mvrange
默認: -1 (auto) 
以像素爲單位設置全部運動向量最大(垂直)範圍。默認值依賴於 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)。
建議: Default

mvrange-thread
默認: -1 (auto) 
設置流(threads)之間的最小運動向量緩衝。不要動它。
建議: Default

subme
默認: 7 
設置亞像素估計複雜度。值越大越好。1-5僅僅控制亞像素精細程度。6開啓 RDO 用於模式決策,8開啓 RDO 用於運動向量和內部預測模式。開啓 RDO 的明顯慢於未開啓的。
使用小於2的值能夠更快,且更低質量的向前預測模式,這就至關於形成下降場景切換閥值,所以不推薦這樣作。
可選參數: 
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 (須要 --trellis=2, --aq-mode > 0)
建議: Default, 或更高,除非編碼速度很重要。

subq
--subme 的別名。

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 優化功能。
建議: Default

no-mixed-refs
默認: 未設置
混合參考將以 8x8區塊選擇參考對象,優於按宏區塊大小選擇參考對象。當使用多個參考幀時能夠提升圖像質量,會下降編碼速度。設置這個選項將關閉它。
建議: Default
參照: --ref

no-chroma-me
默認: 未設置
一般,在亮度和色度兩個位面進行運動預測。本選項關閉色度運動預測並能略微提升編碼速度。
建議: Default

no-8x8dct
默認: 未設置
8x8 DCT 開啓智能的自適應的在 I 幀中使用 8x8 離散餘弦變換。本選項關閉此特性。
建議: Default

trellis
默認: 1
經過分格量化(Trellis quantization)來提升效能。
0. 關閉
1. 開啓。僅用於最終宏區塊編碼,速度和效能的良好平衡。
2. 開啓。用於全部決策,下降編碼速度。
分格量化: http://en.wikipedia.org/wiki/Trellis_quantization
建議: Default
注意: 須要 --cabac

no-fast-pskip
默認: 未設置
關閉P 幀提早跳過檢測。以很大的速度損耗爲代價換來很是微弱的質量提升。
建議: Default

no-dct-decimate
默認: 未設置
DCT Decimation 將去除中被認爲不重要的 DCT 塊。這樣作能夠提升編碼效率, 並有些微的質量損失。設置本選項將關閉此功能。
建議: Default

nr
默認: 未設置
執行快速降噪。在量化前,基於此值評估影片噪點,並試圖經過去除微小細節的方法清除噪點。效果不如良好的外部降噪濾鏡,可是速度很是快。
建議: Default 或 (100 to 1000)

deadzone-inter/intra
默認: 未設置
設置inter/intra 模式下亮度量化死區值。取值應在 0 - 32 之間。死區值定義了細節精細程度等級。很是精細的細節解碼和編碼都很困難,去除這些細節再也不保存它們有助於節省碼流。Deadzone 與 Trellis 不兼容。
建議: Default 

cqm
默認: Flat
把所有自定義量化矩陣設爲內建預置。內建預置量化矩陣爲 flat 或 JVT。
建議: Default
參照: --cqmfile

cqmfile
默認: 未設置
從 JM 兼容文件讀取自定義量化矩陣。覆蓋任何其它--cqm* 選項。
建議: Default
參照: --cqm

cqm4* / cqm8*
默認: 未設置
•        --cqm4: 設置全部4x4量化矩陣。用逗號分隔的16個整數。
•        --cqm8: 設置全部8x8量化矩陣。用逗號分隔的64個整數。
•        --cqm4i, --cqm4p, --cqm8i, --cqm8p: 設置亮度和色度量化矩陣
•        --cqm4iy, --cqm4ic, --cqm4py, --cqm4pc: 設置單獨的量化矩陣
建議: Default


Video Usability Info
這些選項在輸出流中設置標誌位,標誌能被解碼器讀出且可能起做用。值得注意的是這些選項大多數狀況下是無心義的,並且一般會被軟解碼器忽略。

overscan
默認: undef 
如何處理過掃描。過掃描在這裏的意思就是播放設備僅能顯示整幅圖像的部分。
可選參數:
•        undef - 未定義
•        show - 顯示所有。理論上講若是設置了就應該被遵照。 
•        crop - 在支持過掃描的設備上讓圖像適應播放器。不必定遵照。 
建議: 在編碼前裁剪,若是設備支持的話,設置 show,其它狀況下忽略它。

videoformat
默認: undef 
代表視頻在編碼/數字化前是什麼制式。
可選參數:
•        component 
•        pal 
•        ntsc 
•        secam 
•        mac 
•        undef 
建議: 隨便, 或不定義

fullrange
默認: off 
代表亮度和色度是否使用全範圍。若是設爲 off,則使用有限範圍。
參考: http://en.wikipedia.org/wiki/YCbCr
建議: 若是你的源是從模擬信號數值化來的,設爲 off。其它,設爲 on。
背景:
BluRay/DVD/DV 等使用 MPEG 壓縮,記錄格式爲 YCbCr,遵循 ITU-R BT.601 規範,其數據範圍(動態範圍)爲 Y(亮度)16~235,C(色度)以 128 爲中心表明無色,範圍 16~240。
作處理和顯示的時候,YCbCr 要轉爲 RGB,其範圍爲 16~235。
可是計算機屏幕上,純白的點,其 RGB 值爲 (255,255,255),純黑的點,其 RGB 爲 (0,0,0)。因此 MPEG 所記錄的純白 (235,235,235) 在計算機屏幕上看起來就不是純白,純黑 (16,16,16) 在計算機屏幕上看起來也不會是純黑。
所以 DV 錄下來的東西,拿到計算機上看,會以爲顏色變淡,好像照上了一層白紗。同時由於數據範圍(動態範圍)縮小爲 16~235,而不是全範圍(Full Scale)0~255,因此會以爲對比不足(最亮和最暗的差距縮小),不如在電視上看漂亮。

colorprim
默認: undef 
設置把什麼源色彩色系轉換爲 RGB 色系。
可選參數: 
•        undef 
•        bt709 
•        bt470m 
•        bt470bg 
•        smpte170m 
•        smpte240m 
•        film 
參考:
http://en.wikipedia.org/wiki/RGB_color_spaces
http://en.wikipedia.org/wiki/YCrCb
建議: 默認, 除非知道源使用的是什麼。

transfer
默認: undef 
設置光電傳輸特性。(就是設置伽馬曲線用於校訂)
可選參數 
•        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/YCbCr
建議: 隨便,或 默認。

chromaloc
默認: 0
設置色度取樣位置。(在 ITU-T 規範附錄 E 中定義。參見 http://www.itu.int/rec/T-REC-H.264/en
值從0到5。
參考: http://git.videolan.org/?p=x264.git;a=blob;f=doc/vui.txt
建議: 
•        若是正確的從 MPEG1(好比 VCD)的 4:2:0 格式二次採樣轉碼,且不作任何色彩空間轉換,應該設爲1。
•        若是正確的從 MPEG2(好比 DVD)的 4:2:0 格式二次採樣轉碼,且不作任何色彩空間轉換,應該設爲0。
•        若是正確的從 MPEG4(好比藍光)的 4:2:0 格式二次採樣轉碼,且不作任何色彩空間轉換,應該設爲0。
•        其它,默認。

nal-hrd
默認: None 
標記 HRD 信息。用於藍光、廣播電視和一些其它專業領域。參數有:
•        none 沒有 HDR 信息。
•        vbr 指定 HRD 信息。
•        cbr 指定 HRD 信息且把視頻流按 bitrate 規則封裝。要求編碼時使用 bitrate 碼率控制模式。
建議: none, 除非須要指定此信息
參照: --vbv-bufsize, --vbv-maxrate, --aud

pic-struct
默認: Not Set 
在 Picture Timing SEI 中強制發送pic_struct。
當使用 --pulldown 或 --tff/--bff 時隱含採用此選項。
建議: Default


Input/Output

output
默認: 未設置
指定輸出文件名。由指定的文件名後綴決定視頻格式。若是後綴不可識別則採用默認的 raw 格式(一般 .264 後綴用這種格式存儲)。
特殊的文件名 NUL (Windows)或者 /dev/null (Unix)表示丟棄輸出內容。當使用 pass 1 時特別有用,你惟一關心的輸出來自 stats。

muxer
默認: auto
指定用什麼格式寫文件。
可用參數::
•        auto
•        raw
•        mkv
•        flv
•        mp4
‘auto’選項將根據提供的文件名選擇封裝器。
參照: --output
建議: Default

demuxer
默認: 自動檢測
設置 x264 用於分析輸入視頻的分離器和解碼器。
可用參數:
•        auto
•        raw
•        y4m
•        avs
•        lavf
•        ffms
若是輸入文件有 raw、y4m 或 avs 後綴,x264 使用相關的分離器讀取文件。標準輸入使用 raw 分離器。不然,x264 將依次嘗試使用 ffms, lavf 來打開文件,直至放棄。
‘lavf’和‘ffms’參數須要用各自的庫文件編譯 x264。若是使用二者之一,並且輸出不是 raw 的話,x264 將暫緩處理輸入文件中的時間碼。這將有效的使 x264 採用 VFR-aware。其它參數使用 --fps 指定的固定碼率或 --tcfile-in 指定的可變碼率。
參照: --input, --muxer
建議: Default

input-csp
默認: i420 
告訴 x264 視頻源的色彩空間。支持的色彩空間列表見 x264 --fullhelp。
注意:當指定爲 RGB 色彩空間時,視頻在壓縮前會按 bt601 矩陣轉換爲 YUV。
參照: --input-res, --fps

input-res
指定 raw 格式視頻源的分辨率。使用格式:--input-res 720x576
參照: --input-csp, --fps

index
默認: 未設置
一個僅當使用 ffms --demuxer 時起做用的選項。爲 ffms 指定一個用於爲輸入源創建索引數據的文件,之後編碼的時候能夠省去再次創建索引的時間。一般不須要,由於相對於編碼來講索引很是快。
參照: --demuxer, FFMS2 API 文檔: http://ffmpegsource.googlecode.com/svn/trunk/doc/ffms2-api.html
建議: Default, 除非你想節約一分鐘的索引時間。

sar
默認: 未設置
以 寬:高 格式指定編碼器使用的視頻源的採樣縱橫比(Sample Aspect Ratio (SAR))。綜合使用 SAR 和 幀尺寸能夠作出依賴顯示縱橫比(Display Aspect Ratio (DAR))的可變形(anamorphic)輸出,公式爲:DAR = SAR x width/height
建議:假如使用 resize 濾鏡和變形視頻源的話,應該指定。
參考: http://en.wikipedia.org/wiki/Asp ... age%29#Distinctions
譯者說明:「可變形」是種特殊應用,欲詳細瞭解能夠參考「細說DVD的畫面比例」這篇文章: http://www.tfcc.cn/dvd/2004-8-25_14-36-56_1259.html

fps
默認: autodetected 
以浮點數(29.970)、有理數(30000/1001)或整數(2997/100)值指定視頻的幀率。x264 在有效的視頻源頭部(y4m,avs,ffms,lavf)檢測幀率並採用,不然使用25。本選項隱含使用 force-cfr。
若是正在使用 raw YUV 視頻源而且基於 --bitrate 碼率控制,須要使用此選項或 --tcfile-in 指定正確的幀率。不然,x264 沒法達到設定的碼率目標。

seek
默認: 未設置
設定編碼的起始幀,容許從視頻源的任意位置開始編碼。
建議: Default

frames
默認: 未設置
設定編碼的最大幀數,容許在視頻源結束前的任意位置終止編碼。
建議: Default

level
默認: -1 (自動)
在輸出流中設定等級標誌(H.264 標準附錄A。 http://en.wikipedia.org/wiki/H.264#Levels)。容許的等級有:
1 1.1 1.2 1.3 2 2.1 2.2 3 3.1 3.2 4 4.1 4.2 5 5.1 (等級 1b 不被支持)
若是沒有設定等級,x264 將試圖自動判斷。自動判斷並不完美且在不使用 VBV 的狀況下可能低估等級。x264 將自動限制 DPB 尺寸(看 --ref)與你設定的等級相匹配(除非你手工指定 --ref)。注意:--vbv_maxrate 或 --vbv_bufsize 不會根據設定的等級自動設置,可是若是它們的參數超越設定的等級會告警。
選擇什麼等級?
Level 4.1 經常是桌面型硬件能支持的最高等級。藍光碟僅支持 Level 4.1,許多非手機類設備,像 Xbox 360,指定 Level 4.1 爲官方支持的最高等級。手機設備,像 iPhone/Android 則是徹底不一樣的處理方式。
詳細的等級限制圖表,參見: http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels
建議: Default,除非是爲一個特定設備編碼。

verbose
默認: 未設置
顯示每一個已編碼幀的統計信息。
建議: Default

no-progress
默認: 未設置 
編碼時關閉進度指示器。
建議: Default

quiet
默認: 未設置
開啓安靜模式,屏蔽 x264 發出的狀態信息。
建議: Default

log-level
默認: info
手工設定 x264cli 和 libx264 的日誌等級。
可用參數:
•        none
•        error
•        warning
•        info
•        debug
越往下,日誌信息越詳細。
建議: Default

psnr
默認: 未設置
開啓 PSNR 計算,會在編碼完成後給出報告,略微下降壓縮速度。
建議: Default

ssim
默認: 未設置
開啓 SSIM 計算,會在完成後給出報告,略微下降壓縮速度。
建議: Default

threads
默認: auto (基於幀的線程數:1.5 x 邏輯處理器數量,向下舍入取整;基於分片的線程數:1 x 邏輯處理器數量)
在多核處理器上經過使用開啓多線程並行編碼以加快速度。質量損失能夠忽略不計,除非使用很是多的線程(超過16個)。速度增加和線程的數量近似於線性,直至在視頻垂直方向每40px 多於1個線程爲止,超過臨界點後再增長線程得到的速度增加將大幅降低。
當前在 x264 內部對線程數量限制爲128,實際上你也不會設置這麼高。
建議: Default
參照: thread-input, sliced-threads

sliced-threads
默認: off
開啓基於分片的線程。比默認方式質量低、效率低,可是沒有編碼延遲。
基於分片的最大線程數量公式:MIN( (height+15)/16 / 4, 128 ) 
建議: Default (off),除非你正在作實時流排序或者低延遲很是重要。

thread-input
默認: Set if threads > 1
在單獨線程中解碼輸入視頻用於編碼進程。
建議: Default

sync-lookahead
默認: auto (bframes+1) 
設置用於線程預測的幀緩存大小。最大值是250。在第二遍佈更多遍編碼或基於分片線程時自動關閉。
設爲0將關閉線程預測,將減少延遲,可是以下降性能爲代價。
建議: Default

non-deterministic
默認: 未設置 
在 --threads>1 時能夠稍微提升編碼質量,以非肯定性輸出編碼爲代價。開啓多線程 mv 和 在分片類型決策時使用所有的向前預測緩存。
通常不用。
建議: Default 
參照: threads

asm
默認: auto 
不理會自動 CPU 檢測。用於調試或排除故障。
建議: Default

no-asm
默認: 未設置 
關閉全部 CPU 優化。用於調試或排除故障。
建議: Default

visualize
默認: 未設置 
開啓已編碼視頻宏區塊可視化。用於逐幀調試或分析。
須要編譯支持和 X11 窗口系統。
建議: Default

dump-yuv
默認: 未設置 
把重建的 YUV 幀轉儲到指定文件。一般用於調試。通常不用。
建議: Default

sps-id
默認: 未設置 
設置 SPS(sequence parameter set)和 PPS(picture parameter set) id。
通常不用。
建議: Default

aud
默認: 未設置 
設置訪問單元分隔符。
建議: Default,僅用於藍光碟。

force-cfr
默認: 未設置 
若是使用 ffms2 或 lavf 分離器,且輸出文件不是 raw 格式,則從輸入文件複製時間碼。此選項關閉這個功能,並強制 x264 本身產生。當使用此選項時估計你也會設置 --fps。
建議: Default 

tcfile-in
指定一個說明視頻源幀率的時間碼文件。能夠是 v1 或 v2 格式。
mkvmerge 文檔中的解釋: http://www.bunkus.org/videotools ... rnal_timecode_files
參照: tcfile-out, force-cfr, fps

tcfile-out
輸出一個基於輸入時間戳的時間碼文件(v2 格式)。用於當你正在編碼一個 VFR 視頻源且想轉儲時間碼的時候。關於文件格式,參見 tcfile-in。

timebase
默認: 未設置
容許自定義時間基準。
分子是‘秒’,分母是‘ticks’。意思是1個 tick 多少秒。
•        若是得數爲有理數,將相應的設置分子和分母。
•        若是得數爲整數,而且經過 tcfile-in 設置了時間碼文件,將使用得數作分子,並相應的生成分母。
•        若是得數爲整數,而且沒有設置時間碼文件,將得數做爲分母並從視頻源生成每幀‘ticks’數。
與 --force-cfr 不兼容。
建議: Default

dts-compress
默認: 未設置 
一個小把戲,僅適用於FLV和MP4容器,能夠在有缺陷的解碼器下工做,這些解碼器認爲全部的 DTS 都是正確的。使用此選項風險自擔,請看說明: http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=80d0bd4b57163389289714e681bdc53ceaaf0f7a
注:DTS 指的是解碼時間戳(Decode TimeStamp)。每一幀都分配一個 DTS,對應其在流媒體‘編碼順序’中的位置,不一樣於由顯示時間戳(Presentation TimeStamp)指定的‘顯示順序’。因爲使用 B 幀等壓縮技術的緣由,各幀在視頻流中的保存順序與其顯示順序是不一樣的,這就形成某些幀須要後續幀的數據。


Filtering
video-filter
x264 過濾系統會在視頻源被壓縮前處理它們。能夠順序使用多個過濾器。
過濾器的基本語法:
--video-filter <filter>
連續使用多個過濾器時用 / 分隔:
--video-filter <filter1>/<filter2>
你能夠按本身喜歡的方式鏈式使用多個過濾器。
可用的過濾器有:

crop
語法: crop:left,top,right,bottom 
從幀的邊緣移去像素。就是常說的剪裁嘍。
•        當視頻源是yv十二、i420、或 nv12 格式時,剪裁的像素必須是2的倍數。
•        當視頻源是 i422 格式時,在寬度方向剪裁的像素必須是2的倍數。

resize
語法: resize:[width,height][,sar][,fittobox][,csp][,method] 
調整幀尺寸 和/或 轉換幀的色彩空間。須要 x264 編譯時帶上 libswscale 庫。
如何調整幀尺寸有幾種可能的方式:
•        僅 分辨率:按照指定的分辨率調整幀尺寸,同時調整 SAR 從而避免圖像拉伸變形。
•        僅 SAR:設定 SAR,同時調整幀尺寸從而避免圖像拉伸變形。
•        分辨率 + SAR:按照指定的分辨率調整幀尺寸而且按指定值設定 SAR,可能產生拉伸變形。
•        Fittobox:基於指定約束模式調整幀尺寸,分辨率按1:1的 SAR 自適應。
•        width:調整幀尺寸來符合指定寬度約束。
•        height:調整幀尺寸來符合指定高度約束。
•        both:調整幀尺寸來符合指定矩形約束。
•        Fittobox + SAR:除額外指定 SAR 外與 Fittobox 相似,收縮視頻使可變形視頻符合指定的約束。
與調整尺寸無關的參數:
•        csp:同時將幀轉換爲指定的色彩空間。可用的色彩空間列表見 x264 --fullhelp
•        method (默認 bicubic):當調整幀尺寸時,使用指定的調整方法
fastbilinear, bilinear, bicubic, experimental, point, area, bicublin, gauss, sinc, lanczos, spline 
範例: 
resize:width=1280,height=720,method=spline

select_every
語法: select_every:step,offset1[,offset2,...] 
僅選擇部分輸入幀進行編碼,丟棄其它。每隔 step 幀,僅使用 offset 指定的幀。例如:
每2幀,丟棄第1幀,採用第2幀:
select_every:2,1
每3幀,採用第0,1幀,丟棄第2幀:
select_every:3,0,1

更多例子:http://avisynth.org/mediawiki/Select#SelectEveryhtml

=======================================以上內容爲轉載=================================git

原文地址:http://www.g0759.com/html/JingPinZhiZuo/92.htmlweb

 

注:若是是ffmpeg中使用libx264能夠直接使用的參數較少,只有如下內容算法

libx264 AVOptions:
-preset            <string> E.V.. Set the encoding preset (cf. x264 --fullhelp)
-tune              <string> E.V.. Tune the encoding params (cf. x264 --fullhelp)
-profile           <string> E.V.. Set profile restrictions (cf. x264 --fullhelp) 
-fastfirstpass     <int>   E.V.. Use fast settings when encoding first pass
-level             <string> E.V.. Specify level (as defined by Annex A)
-passlogfile       <string> E.V.. Filename for 2 pass stats
-wpredp            <string> E.V.. Weighted prediction for P-frames
-x264opts          <string> E.V.. x264 options
-crf               <float> E.V.. Select the quality for constant quality mode
-crf_max           <float> E.V.. In CRF mode, prevents VBV from lowering quality beyond this point.
-qp                <int>   E.V.. Constant quantization parameter rate control method
-aq-mode           <int>   E.V.. AQ method
   none                    E.V..
   variance                E.V.. Variance AQ (complexity mask)
   autovariance            E.V.. Auto-variance AQ (experimental)
-aq-strength       <float> E.V.. AQ strength. Reduces blocking and blurring in flat and textured areas.
-psy               <int>   E.V.. Use psychovisual optimizations.
-psy-rd            <string> E.V.. Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format.
-rc-lookahead      <int>   E.V.. Number of frames to look ahead for frametype and ratecontrol
-weightb           <int>   E.V.. Weighted prediction for B-frames.
-weightp           <int>   E.V.. Weighted prediction analysis method.
   none                    E.V..
   simple                  E.V..
   smart                   E.V..
-ssim              <int>   E.V.. Calculate and print SSIM stats.
-intra-refresh     <int>   E.V.. Use Periodic Intra Refresh instead of IDR frames.
-b-bias            <int>   E.V.. Influences how often B-frames are used
-b-pyramid         <int>   E.V.. Keep some B-frames as references.
   none                    E.V..
   strict                  E.V.. Strictly hierarchical pyramid
   normal                  E.V.. Non-strict (not Blu-ray compatible)
-mixed-refs        <int>   E.V.. One reference per partition, as opposed to one reference per macroblock
-8x8dct            <int>   E.V.. High profile 8x8 transform.
-fast-pskip        <int>   E.V..
-aud               <int>   E.V.. Use access unit delimiters.
-mbtree            <int>   E.V.. Use macroblock tree ratecontrol.
-deblock           <string> E.V.. Loop filter parameters, in <alpha:beta> form.
-cplxblur          <float> E.V.. Reduce fluctuations in QP (before curve compression)
-partitions        <string> E.V.. A comma-separated list of partitions to consider. Possible values: p8x8, p4x4, b8x8, i8x8, i4x4, none, all
-direct-pred       <int>   E.V.. Direct MV prediction mode
   none                    E.V..
   spatial                 E.V..
   temporal                E.V..
   auto                    E.V..
-slice-max-size    <int>   E.V.. Limit the size of each slice in bytes
-stats             <string> E.V.. Filename for 2 pass statsapi

 

可是可使用其中的-x264opts參數指定原有x264參數,格式如:-x264opts ref=2:subme=6:trellis=0:8x8dct=0(參數+等號+參數值,多個用冒號分隔)。緩存

 

 

轉自:http://www.front2end.cn/blog/Chinese-explanation-of-x264-parameters-%28X264-Settings%29.html服務器

原英文地址:http://mewiki.project357.com/wiki/X264_Settings網絡

相關文章
相關標籤/搜索