[參考] x264命令行參數解釋
轉自米飯網
本文主要翻譯:mewiki.project357.com/wiki/X264_Settings,同時參考doom9 論壇、
Silky Bible、以及其它互聯網資料加以註解。
解釋x264命令可選項的用途和使用方法。同執行 x264 --fullhelp 顯示順序。
詞彙翻譯:
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 進行藍光編碼。很多範例,極有用。
------------------------------------------------------------------------------
PS:大陸譯文轉繁體 當然還是大陸用語
部分參數解釋與感想可能因人而異 最好是自己實驗過後再評斷
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.177.17
AVEncode 近期熱門文章
PTT數位生活區 即時熱門文章