x264學習(2)——x264命令行參數解釋

原文地址:http://blog.csdn.net/liuchen1206/article/details/44174741

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

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

輸入
使用單一位置參數指定視頻源。如:
x264.exe --output NUL C:\input.avs
x264 --output /dev/null ~/input.y4m
當輸入是原始 YUV 數據時,必須告訴 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
從幀的邊緣移去像素。就是常說的剪裁嘍。
•        當視頻源是yv12、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#SelectEvery

另請參閱
•        http://git.videolan.org/?p=x264.git;a=tree;f=doc;hb=HEAD
x264 源代碼樹中的文檔。幾乎是最高級別的技術特性解釋。一些文檔相當老,但是仍然很精確。
•        http://sites.google.com/site/linuxencoding/
Linux 編碼 - x264 編碼選項指南。非常實用的選項。大多數由 x264 的開發者Dark Shikari 編寫。
•        http://mulder.dummwiedeutsch.de/pub/x264
Lord Mulder 的 x264 Avidemux 指南。值得一看
•        http://sites.google.com/site/x264bluray/home
使用 x264 進行藍光編碼。很多範例,極有用



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