1. 程式人生 > >FFMPEG進階系列03-ffmpeg轉碼專題(中)x264引數詳解

FFMPEG進階系列03-ffmpeg轉碼專題(中)x264引數詳解

概述

x264編碼引數簡介

版本

x264.exe --fullhelp 列印

x264 core:152 r2851 ba24899
Syntax: x264 [options] -o outfile infile

Presets(預設)

用於簡化命令列而設計的系統。各預設模板所對應的引數設定,詳見幫助:x264.exe --fullhelp.

##1. 選項profile

  • 預設: 未設定
  • 該選項限制輸出視訊流的profile。如命令中指定profile,則會忽視其他對之影響的引數,也就是說,只要指定profile,就能保證輸出流的相容性。一旦使用該選項,就無法進行無損編碼 (–qp 0 or --crf 0). 若播放機只支援某種profile,編碼時需相應指定。大多數解碼器都支援High profile,所以無需如此設定。
  • 可選值: baseline, main, high, high10, high422, high444.
  • 建議:不設定。除非解碼環境只支援main或者baseline profile的解碼。
Force the limits of an H.264 profile
Overrides all settings.
  - baseline:
    --no-8x8dct --bframes 0 --no-cabac
    --cqm flat --weightp 0
    No interlaced.
    No lossless.
  - main:
    --no-8x8dct --cqm flat
    No lossless.
  - high:
    No lossless.
  - high10:
    No lossless.
    Support for bit depth 8-10.
  - high422:
    No lossless.
    Support for bit depth 8-10.
    Support for 4:2:0/4:2:2 chroma subsampling.
  - high444:
    Support for bit depth 8-10.
    Support for 4:2:0/4:2:2/4:4:4 chroma subsampling.

##preset

  • 預設: medium
  • 改變選項以在壓縮率與編碼速度間平衡。指定preset後,所產生的改變先於其它引數。該選項越慢越好,應選擇所能承受的最慢值。
  • 可選值: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo.
  • 建議:可接受的最慢的值
Use a preset to select encoding settings [medium]
  Overridden by user settings.
  - ultrafast:
    --no-8x8dct --aq-mode 0 --b-adapt 0
    --bframes 0 --no-cabac --no-deblock
    --no-mbtree --me dia --no-mixed-refs
    --partitions none --rc-lookahead 0 --ref 1
    --scenecut 0 --subme 0 --trellis 0
    --no-weightb --weightp 0
  - superfast:
    --no-mbtree --me dia --no-mixed-refs
    --partitions i8x8,i4x4 --rc-lookahead 0
    --ref 1 --subme 1 --trellis 0 --weightp 1
  - veryfast:
    --no-mixed-refs --rc-lookahead 10
    --ref 1 --subme 2 --trellis 0 --weightp 1
  - faster:
    --no-mixed-refs --rc-lookahead 20
    --ref 2 --subme 4 --weightp 1
  - fast:
    --rc-lookahead 30 --ref 2 --subme 6
    --weightp 1
  - medium:
    Default settings apply.
  - slow:
    --direct auto --rc-lookahead 50 --ref 5
    --subme 8 --trellis 2
  - slower:
    --b-adapt 2 --direct auto --me umh
    --partitions all --rc-lookahead 60
    --ref 8 --subme 9 --trellis 2
  - veryslow:
    --b-adapt 2 --bframes 8 --direct auto
    --me umh --merange 24 --partitions all
    --ref 16 --subme 10 --trellis 2
    --rc-lookahead 60
  - placebo:
    --bframes 16 --b-adapt 2 --direct auto
    --slow-firstpass --no-fast-pskip
    --me tesa --merange 24 --partitions all
    --rc-lookahead 60 --ref 16 --subme 11
    --trellis 2

tune

  • 預設: 未設定
  • tune選項根據輸入視訊的內容進行優化。指定tuning後所產生的改變晚於 --preset的改變,但早於其他引數。若視訊源的內容符合tuning之一,則可以相應選擇,否則就保留為未設定。
  • 可選值: film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency.
  • 建議:根據輸入選擇。如果沒有合適的就不要指定。
Tune the settings for a particular type of source or situation
Overridden by user settings.
  Multiple tunings are separated by commas.
  Only one psy tuning can be used at a time.
  - film (psy tuning):
    --deblock -1:-1 --psy-rd <unset>:0.15
  - animation (psy tuning):
    --bframes {+2} --deblock 1:1
    --psy-rd 0.4:<unset> --aq-strength 0.6
    --ref {Double if >1 else 1}
  - grain (psy tuning):
    --aq-strength 0.5 --no-dct-decimate
    --deadzone-inter 6 --deadzone-intra 6
    --deblock -2:-2 --ipratio 1.1
    --pbratio 1.1 --psy-rd <unset>:0.25
    --qcomp 0.8
  - stillimage (psy tuning):
    --aq-strength 1.2 --deblock -3:-3
    --psy-rd 2.0:0.7
  - psnr (psy tuning):
    --aq-mode 0 --no-psy
  - ssim (psy tuning):
    --aq-mode 2 --no-psy
  - fastdecode:
    --no-cabac --no-deblock --no-weightb
    --weightp 0
  - zerolatency:
    --bframes 0 --force-cfr --no-mbtree
    --sync-lookahead 0 --sliced-threads
    --rc-lookahead 0

slow-firstpass

  • 預設: 未開啟
  • 使用 --pass 1 將在命令列分析完成時應用以下設定: –ref 1 –no-8x8dct –partitions i4x4 (僅限於已事先開啟的條件下) –me dia–subme MIN( 2, subme ) –trellis 0 使用–slow-firstpass可禁用此設定。
  • 注:當選擇 --preset placebo 時,自動開啟–slow-firstpass。 參見 --pass.
  • 建議:如果設定preset=placebo則自動關閉此特性。如果想顯式關閉此特性,使用slow-firstpass。
Don't force these faster settings with --pass 1:
  --no-8x8dct --me dia --partitions none
  --ref 1 --subme {2 if >2 else unchanged}
  --trellis 0 --fast-pskip

Frame-type options(幀型別選項)

keyint

  • 預設: 250
  • 說明:設定x264輸出的IDR幀(即關鍵幀)之間的最大間隔。可以設定為"infinite"(無窮),則僅在場景切換時出現IDR幀。 IDR幀相當於視訊流中的"分界符":任何幀不可參考IDR幀另一側的資料。 另外,IDR幀本身也是I幀,不參考任何其它幀。這意味著,播放器可從最近的I幀開始解碼,而無需從頭開始。故而,IDR幀可以用作於視訊的定位點(seek point)。 此項功能是在視訊定位能力和編碼效率之間做權衡。因為I幀體積遠大於P/B幀(低速運動的場景中,可達到10倍多),所以,當在VBV設定很低時(如小於1秒的緩衝大小),極其不利於位元速率控制。若遇此情況,需研究intra-refresh。
  • 建議:預設值(fps的10倍)適用於絕大多數視訊。對於編碼藍光、廣播、線上流媒體或特殊情況下,可能需要將GOP長度設得很小(通常約1x fps)。
  • 參見:–min-keyint, --scenecut, --intra-refresh

min-keyint

  • 預設: auto (MIN(–keyint / 10, --fps))
  • 說明:設定IDR幀之間的最小間隔。 關於IDR幀的解釋,參見 --keyint keyint範圍太小將導致IDR幀出現在"錯誤"的位置(如閃爍的場景(a strobing scene))。該選項限制每個IDR幀後必須經過多少幀才能出現下一個IDR幀。 min-keyint 的最大允許值為 --keyint/2+1
  • 推薦值: 預設,或1倍幀率
  • 參見:–keyint, --scenecut

no-scenecut

  • 預設: 未開啟
  • 說明:完全禁止自動I幀選擇演算法(adaptive I-frame decision)。
  • 參見:–scenecut

scenecut

  • 預設: 40
  • 說明:設定I/IDR幀放置的閥值。(read: scene change detection). x264有一指標,用於衡量每一幀與前一幀的差異程度。若該值小於scenecut,則檢測到’場景切換’(‘scenecut’)條件,並放置一個I幀 (前提:該幀與上一個IDR幀的間隔小於min-keyint,否則就放置一個IDR幀)。提高scenecut值將增加檢測到的’場景切換’數量。關於 scenecut比較的具體方法,參見 this doom9 thread. 將scenecut設為0,相當於設定 --no-scenecut
  • 推薦值: 預設
  • 參見:–keyint, --min-keyint, --no-scenecut

intra-refresh

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

bframes

  • 預設: 3
  • 說明:設定x264採用的最大連續B幀數。 假如沒有B幀,x264資料流會是這樣:IPPPPP…PI。若 –bframes 2,則最多2個連續P幀可以被替換為B幀,比如: IBPBBPBPPPB…PI。 B幀類似於P幀,但它還可以利用後續時間的幀進行運動預測,因此能大大增加壓縮率。B幀的平均質量受pbratio控制。
  • 趣聞:
    • 出於對未來幀的需求,編碼器的延時性增加了。參見 --sync-lookahead
    • x264 偶爾區分兩種不同的B幀。大寫’B’代表能被其它幀參考的B幀(參見b-pyramid),而小寫’b’表示不能被參考的B幀。如果你見到’B’與’b’混在一起,通常就是上述的區別。當區別不重要時,則用’B’來泛指所有B幀。
    • 欲詳細瞭解x264如何判斷某幀該用P幀還是B幀,參見 this ffmpeg-devel mail。預設情況下(假設*–bframes 3*)幀型別像這樣(顯示順序): IBBBPBBBPBPI
    • B幀的另一優勢在於高效的快進能力,因為解碼器可跳過B幀直接解析P幀,速度由每次1幀提升為(bframs設定值+1)幀。以三個連續B幀的視訊為例,解碼器能以整個minigop為單位來定位,達到4倍速。
  • 參見:–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設定越高,減速效果越明顯。多次編碼模式下,此選項只需在1st pass使用,因為幀型別在該pass中決定。
  • 注意:多趟編碼時,只有第一趟編碼的此選項起效,因為第一趟編碼結束時,幀型別就已經被決定了。

b-bias

  • 預設: 0
  • 說明:控制B幀替代P幀的概率。越大(正數)則權重越偏向於B幀。越小(負數)則相反。此數值無量綱。範圍從-100到100。100/-100並不保證 所有/沒有 P幀被替換掉。(可用 --b-adapt 0 來實現)
  • 注意:除非你認為自己的位元速率控制策略優於x264,否則別改動此項。
  • 參見:–b-frames, --ipratio

b-pyramid

  • 預設: normal
  • 說明:允許B幀被其它幀參考。若關閉此設定,所有幀只能參考I幀或P幀。雖然I/P幀的質量高,更有參考價值,但B幀也可加以利用。被參考的B幀,其量化值將介於P幀與“一次性”的b幀之間。邏輯上講,要參考之前的B幀,則必須告知x264至少使用2個B幀。舉個例子,一個顯示順序為 P[1]b[1]b[2]B[3]b[4]b[5]P[2] 的小畫面組(minigop),其中的B幀還被其它b幀用作參考,而b幀不被任何幀參考,因為稱為“一次性”。當b-pyramid開啟時,中間的B[3]幀將在P幀之後,b幀之前被編碼,因為它是後續兩個b幀的參考。P[1]將是b[1]和b[2]的L0(過去)參考,而B[3]和P[2]則是b[1]和b[2]的L1(未來)參考。編碼與流的順序將是P[1]P[2]B[3]b[1]b[2]b[4]b[5]。 目前x264的b-pyramid僅支援單層的H.264層級,即以B幀為參考的b幀不能進一步被參考。 對於藍光的編碼,必須用“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的視訊流支援不完全,所以至今依然預設為關閉。若想使用,應先測試保證所有用到的解碼器能完整支援,或等待解碼器完善該項支援。

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幀能利用的P幀數要少1、2幀,取決於是否開啟B幀參考)。可被參考的最小ref是1,只參照自己前面的那幀。
  • 注意:H.264規範中,對各個level都限制了DPB尺寸。如遵守Level 4.1 規範,則對於720p和1080p視訊,最大的ref是9和4。關於level和4.1的資訊,參見level。
  • 參見:–b-pyramid, --no-mixed-refs, --level

deblock

  • 預設: 0:0
  • 說明:控制迴圈濾鏡(loop filter,即inloop deblocker),是H.264標準的一部分。對於編碼時間vs質量提升,效率提升明顯。 關於迴圈濾鏡引數的效果,this doom9 thread 解釋的很好。(見一樓主貼,及akupenguin的回覆) 參見:–no-deblock

no-deblock

  • 預設: 未開啟
  • 說明:完全禁用迴圈濾鏡,不推薦使用。
  • 參見:–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)為先。x264的交錯編碼方式採用MBAFF,效率低於逐行編碼。因此,僅在需要隔行顯示(或無法將視訊預先去交錯)時,才使用。開啟後,同時會開啟pic-struct

bff

  • 說明:啟用交錯(隔行)編碼,並指定偶數場(top field)為先。詳見–tff

constrained-intra

  • 預設: 未開啟
  • 說明:啟用受限的幀內預測,在編碼SVC標準視訊的底層(base layer)子視訊時必須開啟。由於EveryoneTM 忽略SVC,你也可以忽略這個開關。

pulldown

  • 預設: none
  • 說明:以某個預設模式將輸入流(隔行,恆定幀率)標記為軟交錯(soft telecine)。軟交錯詳解見 HandBrake wiki。可用預設有:none, 22, 32, 64, double, triple, euro 使用除none以外任一預設,都會連帶開啟–pic-struct

fake-interlaced

  • 預設: 未開啟
  • 說明:將視訊流標記為交錯(隔行),哪怕並非為交錯式編碼。可用於編碼藍光相容的25p和30p視訊。

21. frame-packing

  • 預設: 未設定
  • 說明:編碼3D視訊時,此引數在碼流中插入一個標誌,告知解碼器此3D視訊是如何合併的。可選值及其意義參見x264 --fullhelp

Ratecontrol(位元速率控制)

qp

  • 預設: 未設定
  • 說明:三種位元速率控制方式的第一種。設定x264以恆定量化值(Constant Quantizer) 方式編碼視訊。該數字指定P幀的量化值。I幀和B幀的量化值相應由–ipratio和–pbratio決定。CQ模式的目標在於一定的量化值,因此最 終檔案大小不可知(雖然有方法可以較為準確的估計)。設定為0則輸出的視訊為無損。對於相同的視覺質量,qp所產生的檔案體積要大於–crf。qp模式 會禁用自適應量化(adaptive quantization),因為“恆定量化值”的定義已經說明了,不會自適應改變數化值。 此選項與–bitrate和–crf相互衝突。關於各種位元速率控制系統,詳見this writeup一般最好用–crf。不過qp模式不需要lookahead,所以速度更快。
  • 參見:–bitrate, --crf, --ipratio, --pbratio

bitrate

  • 預設: 未設定
  • 說明:三種位元速率控制方式的第二種。以目標位元率來編碼視訊。目標位元率模式意味著最終檔案大小可知,但最終質量不可知。x264會嘗試令視訊的平均位元速率接近目標位元速率。所用引數的位元率單位是千位元/秒(kilobits/sec) (8bits = 1byte and so on) 注意:1 kilobit 是1000,不是1024 bits 此項設定常與–pass一同使用,進行二次編碼。 此選項與–qp和–crf相互衝突。關於各種位元速率控制系統,詳見this writeup
  • 參見:–qp, --crf, --ratetol, --pass, --stats

crf

  • 預設: 23.0
  • 說明:最後一種位元速率控制方法:恆定質量(恆定位元速率因子Constant Ratefactor)。 qp目標在於一定的量化值,bitrate目標在於一定的檔案體積,crf的目標則在於一定的“質量”。基本上就是讓crf n產生的視訊的感官質量等同於qp n,但體積更小。crf值的單位叫做“位元速率因子”。 為此目的,CRF降低“不是很重要”的幀的質量。在這裡,“不太重要”表示複雜或高速運動的場景,這些場景中,質量要麼代價更高(更高位元速率),要麼不易被察覺。這些幀的量化值將會增大。從這些幀中省下來的位元速率被用於更高效的場景。 CRF編碼時間短於2pass bitrate模式,因為省去了2pass模式中的1st pass過程。另外,CRF編碼模式的位元率無法估計。由你自己決定哪種位元速率控制方式更適用你的情況。 此選項與–qp和–bitrate相互衝突。關於各種位元速率控制系統,詳見this writeup
  • 參見:–qp, --crf, --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, --sync-lookahead

vbv-maxrate

  • 預設: 0
  • 說明:設定重新填滿VBV緩衝的最大速率。 VBV會降低質量,僅用於回放專用的視訊編碼
  • 參見:–vbv-bufsize, --vbv-init, VBV Encoding Suggestions

vbv-bufsize

  • 預設: 0
  • 說明:設定VBV緩衝的大小,單位是千位元(kilobits)。 VBV會降低質量,僅用於回放專用的視訊編碼。
  • 參見:–vbv-maxrate, --vbv-init, VBV Encoding Suggestions

vbv-init

  • 預設: 0.9
  • 說明:設定VBV緩衝達到多滿(百分比),才開始回放。 如果小於1,則初始填充(initial fill)為:vbv-init * vbv-bufsize. 若大於1,則作為初始填充的單位kbits.
  • 參見:–vbv-maxrate, --vbv-bufsize, VBV Encoding Suggestions

crf-max

  • 預設: 未設定
  • 說明:與–qpmax類似,不同的是,qpmax設定最大量化值,crf-max設定最大位元速率因子。該選項僅在使用CRF並開啟VBV時有效。該選項保證 x264在降低位元速率因子(即"質量")時,不會低於某個給定值,哪怕這麼做會妨礙VBV限制。此選項最適用於自定義流媒體伺服器。詳見initial commit message.
  • 參見:–crf, --vbv-maxrate, --vbv-bufsize

qpmin

  • 預設: 0
  • 說明:設定x264所使用的最小量化值。量化值越低,輸出視訊越接近輸入視訊。低到一定程度時,輸出將看上去跟輸入相同,雖然並不是完全相同。通常沒有理由允許x264再花費比這更多的位元速率編碼巨集塊了。 若開啟了自適應量化(adaptive quantization,預設開啟),則不建議提高qpmin,因為這樣一來會降低畫面內平坦背景部分的質量。
  • 參見:–qpmax, --ipratio

qpmax

  • 預設: 51(注:新版x264已提升為69)
  • 說明:與qpmin相反,它設定了x264可用的最大量化值。預設值51是H.264規範中最高的可用值,代表極低質量。該預設值等於是禁用了qpmax。如需限定x264輸出視訊的最低質量,可以考慮降低該值(一般別低於30-40),但通常不推薦改動。 參見:–qpmin, --pbratio, --crf-max

qpstep

  • 預設: 4
  • 說明:相鄰兩幀之間量化值之差的最大值。

ratetol

  • 預設: 1.0
  • 說明:此引數有兩個目的:
    1. 在1-pass bitrate模式下,該設定控制x264可以偏離給定目標位元速率的百分比。可以設定為“inf”(無窮)來完全禁止溢位檢測。最低可設定為0.01。設定 地越高,x264越能對片尾複雜場景做出反應。此引數的單位是百分比(1.0 = 1% 位元率偏移). 大多數電影(比如任意動作電影)都在結尾高潮處最複雜。1pass編碼不知道這點,所以那裡的所需位元速率通常都低估了。ratetol設為inf可彌補此點,讓編碼功能更接近–crf,但檔案體積也會超出限定。

    2. 啟用VBV(比如指定了–vbv-*選項)時,此選項也影響VBV的厲害程度。提高該值會允許更大的VBV波動,也增加了破壞VBV設定的風險。對於此目的,該值的單位任意。

ipratio

  • 預設: 1.40
  • 說明:修改I幀與P幀平均量化值的比例。值越高,I幀的質量越高。開啟mbtree(預設開啟)時,此項失效,mbtree自動計算最優量化值。
  • 參見:–pbratio

pbratio

  • 預設: 1.30
  • 說明:修改P幀與B幀平均量化值的比例。值越高,B幀的質量越低。開啟mbtree(預設開啟)時無效,因為mbtree自動計算最優值。
  • 參見:–ipratio

chroma-qp-offset

  • 預設: 0
  • 說明:編碼時,在色度平面(chroma planes)量化值基礎上,增加一個偏移量,可以是負數。 當使用psy選項(psy-rd或psy-trellis)時,x264會自動降低此值(一般在此值基礎上減去2),以補償psy優化時預設過於偏重亮度(luma)質量而忽視色度(chroma)質量的問題。
  • 注意:x264 僅在量化值小於等於29時,對亮度和色度平面使用相同的量化值。超過之後,色度量化值的增加將會慢於亮度,直至最終達到亮度q51、色度q39。這是H.264標準的要求。

aq-mode

  • 預設: 1
  • 說明:自適應量化模式(Adaptive Quantization Mode) 若關閉AQ,x264傾向於對低細節度的平滑區域使用過低位元速率,AQ可以更好把位元速率分配到各個巨集塊中. 該選項改變AQ重新安排位元速率的幅度:
    • 0: 禁止AQ
    • 1: 允許AQ在整個視訊中和幀內重新分配位元速率
    • 2: 自方差AQ(實驗階段),嘗試逐幀調整強度
  • 參見:–aq-strength

aq-strength

  • 預設: 1.0
  • 說明:自適應量化強度(Adaptive Quantization Strength) 設定AQ偏向於低細節度(“平滑”)巨集塊的強度。不允許為負值。建議選值不超過0.0~2.0範圍。
  • 參見:–aq-mode

pass

  • 預設: 未設定
  • 說明:此設定對於2pass編碼很重要,控制x264如何處理–stats檔案。有三個選項:
    • 1: 生成新的stats檔案,用於1st pass
    • 2: 讀取stats檔案,用於最終pass
    • 3: 讀取stats檔案,並更新之 stats檔案包含輸入視訊每一幀的資訊,作為x264的輸入用於提高輸出品質。大致如此:跑一次1st pass生成stats檔案,然後2nd pass就能生成優化過的視訊。改進的原因主要在於更優的位元速率控制。
  • 參見:–stats, --bitrate, --slow-firstpass, X264_statsfile

stats

  • 預設: 'x264_2pass.log’
  • 說明:設定x264讀寫–pass X264_statsfile的目錄地址。
  • 參見:–pass

no-mbtree

  • 預設: 未開啟
  • 說明:禁用macroblock tree位元速率控制。使用macroblock tree位元速率控制會記錄時間方向上的各幀變化並相應權衡,因此在總體上改進了壓縮。其概念與AQ同出一轍(AQ降低高複雜度區域的質量,將位元速率用於低複雜度的區域),但卻是從時間方向上施行控制,因此與qcomp十分相似,而qcomp本身也影響mb-tree的強度。 對於多次編碼模式,需要在現有stats檔案基礎上,增加一個大體積stats檔案。
  • 推薦值: 預設
  • 參見:–rc-lookahead

qcomp

  • 預設: 0.60
  • 說明:量化曲線(quantizer curve)壓縮因子。0.0 => 恆定位元率,1.0 => 恆定量化值。 qcomp在“高成本”的高運動幀與“低成本”的低運動幀之間權衡分配位元速率。極端設定qcomp=0.0趨於真正的恆定位元率,通常會造成高運動場景十分難看,而將寶貴的位元速率用於讓低運動場景看著很完美。另一極端設定qcomp=1.0則能達到近似恆定量化引數(QP),並完全關閉x264的aq-mode和時間方向的RDO(mb-tree),於是位元速率被浪費在高複雜度的場景上,而高複雜度的場景無法用作未來遠處的幀的參考,因為幀與幀之間的變化太大。 與mbtree一起使用時,也會影響mbtree與aq-strength的強度,而這兩項傾向於將更多位元速率用於低複雜度的場景和巨集塊(macroblock)。(qcomp越大,則aq與mbtree越弱)。qcomp預設值為0.6,不要改動。
  • 推薦值: 預設
  • 參見:–cplxblur, --qblur

cplxblur

預設: 20 根據給定的半徑對量化曲線進行高斯模糊(gaussian blur)。分配給各幀的量化值在時間方向上與相鄰幾幀相模糊,以限制量化值波動。 當mb-tree開啟時,cplxblur無效。 參見:–qcomp, --qblur, --no-mbtree

qblur

  • 預設: 0.5
  • 說明:量化曲線壓縮後,根據給定的半徑對量化曲線進行高斯模糊。該選項不怎麼重要。
  • 參見:–qcomp, --cplxblur

zones

  • 預設: 未設定
  • 說明:對視訊不同段(zone)進行引數調整。大多數x264選項都可以針對各段進行調整。
    • 單個段包含<起始幀>,<結束幀>,<各選項>
    • 多段之間用“/”來分隔
  • 選項: 以下兩項很特殊,每段zone設定一次,若需設定則必須列在所有引數之前:
    • 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=<字串>
    • crf=<浮點>
  • 限制
    • 區段內的參考幀數量不可大於原始設定中的–ref
    • Scenecut不可開啟或關閉;只有在原始啟用(>0)時,才能改變其數值
    • 若使用–me esa/tesa,Merange不能超過原始設定值
    • Subme若在原始設定為0,則不能改變其值
    • 若–me原始設定為dia, hex,或umh,則不能修改為esa或tesa
  • 例子: 0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000
  • 推薦值: 預設

qpfile

手動忽略標準位元速率控制。選擇一個檔案,強制指定某些幀的量化值和幀型別。格式為“幀號 幀型別 量化值”。例子:

0 I 18 < IDR(關鍵)I幀  
1 P 18 < P幀  
2 B 18 < 被參考的B幀  
3 i 18 < 非IDR(非關鍵)I幀  
4 b 18 < 不被參考的B幀  
5 K 18 < 關鍵幀*  
  • 無需指定所有幀
  • 量化值設為-1允許x264自動選擇最優量化值。適用於只想指定幀型別的情況
  • 手動指定大量幀的型別和量化值,同時又讓x264決定其中間的幀,這麼做會降低x264的效能
  • “關鍵幀”是一種通用的關鍵幀/搜尋點(seekpoint)型別。若等同於–open-gop是none,則等同於IDR I幀,否則就等同於標記為恢復點(Recovery Point)SEI的非IDR I幀

Analysis(分析)

partitions

  • 預設: 'p8x8,b8x8,i8x8,i4x4’
  • 說明:H.264視訊在壓縮時被分割為16x16的巨集塊。這些塊可以被分為更小的塊,本選項就控制此分割。 開啟此選項,即開啟了單個分塊(individual partitions)。分塊對不同幀型別(如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’
  • 說明:設定’直接’運動向量的預測模式。兩種模式可選:spatialtemporal。也可選擇none來關閉直接運動向量,或選auto允許x264在兩個引數間切換。若設為auto,x264會在編碼結束時輸出相應的使用資訊。“auto”在2pass編碼模式下作用最佳,但也能在單次編碼中使用。在1st-pass的auto模式下,x264會不斷記錄兩種方法效果的滑動平均值,並以此為依據決定下一次使用哪個方法。注意,只應在1st pass啟用auto時,才在2nd pass啟用auto。若非如此,2nd pass會預設採用temporal。 直接預測指揮x264在猜測B幀某些部分的運動時,使用何種方法。既可藉助該幀的其它部分(spatial),也可與下一個P幀作比較(temporal)。最好將此項設為自動,好讓x264自己決定哪種方法更好。不要以為設none能加快速度,恰恰相反,既浪費位元速率又讓畫面難看,強烈不推薦。如果你要在spatial和temporal之間做選擇,spatial通常更優。
  • 推薦值: 'auto’

no-weightb

  • 預設: 未開啟
  • 說明:有時,x264會根據前後幀來決定一B幀的運動補償。當對B幀進行權重,每一幀所擁有的影響力與其對正在編碼的幀的距離相關,而非具有相同的影響。所以weight-b有助於壓縮淡入淡出。開啟此選項將關閉該功能。
  • 推薦值: 預設

weightp

  • 預設: 2
  • 說明:開啟顯式權重預測,提升P幀壓縮率,同時改善淡入淡出場景的質量,模式越高,編碼速度越慢。
  • 注:若編碼Adobe Flash,需設定為1,否則解碼後會產生artifacts。Flash 10.1修復了這個問題。 模式:
    • 0. 禁用
    • 1. 簡單:僅分析淡入淡出,不做參考複製(reference duplication)
    • 2. 智慧:淡入淡出+參考複製(reference duplication)

me

  • 預設: 'hex’
  • 說明:全畫素(full-pixel)運動估計方法。5種選擇:
    • dia(diamond菱形搜尋) 是最簡單的搜尋方式,從最優預測值出發,往上、左、下、右一個畫素處檢測運動向量,挑選最好值,然後重複該步驟,直至找不到更優的運動向量。
    • hex(hexagon六角形搜尋) 的策略類似,但它對周圍六個點進行range-2搜尋,因此稱為六角形搜尋。此方法效率大大高於dia,且速度相當,因此通常編碼常用此項。
    • umh(uneven multi-hex不對稱多六角形搜尋)比hex慢很多,但能搜尋複雜的多六角形,以避免錯過很難找到的運動向量。與hex和dia相似,merange引數直接控制umh的搜尋半徑,使用者可自行增減搜尋的空間尺寸。
    • esa(exhaustive全面搜尋) 在最優預測值附近merange範圍內的整個空間內,以高度優化的智慧方式搜尋運動向量。相當於數學上的窮舉法,搜尋區域內的每一個運動向量,但是更快些。然而,此方法遠遠慢於UMH,且好處不多,對於普通編碼沒有太大用處。
    • tesa (transformed exhaustive變換全面搜尋)演算法嘗試對各個運動向量近似哈達瑪變換比較法。與exhaustive類似,但效果略好,速度略慢。
  • 參見:–merange

merange

  • 預設: 16
  • 說明:merange控制運動搜尋最大範圍的畫素數。hex和dia的範圍在4-16,預設16;umh和esa可以大於預設值16,在更廣的空間內進行運動搜尋,對於高清視訊和高速運動視訊較為有用。注:umh, esa, tesa模式下增加會大幅降低編碼速度。 merange開得太高(比如>64)也不太可能找到更多有用的運動向量,有時反而會導致壓縮率略微降低:在少見情形下,某些運動向量只因當前有用而被選中,但由於這些向量的delta過大而影響了對之後運動向量的預測,得不償失。 儘管這種影響非常小,幾乎可以忽略不計,但一般都不應使用這麼變態的設定。見此貼
  • 參見:–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)

  • 推薦值: 預設

mvrange-thread

  • 預設: -1 (auto)
  • 說明:設定執行緒之間的最小運動向量緩衝。不要改動。
  • 推薦值: 預設

subme

  • 預設: 7
  • 說明:子畫素(subpixel)估測複雜度,越大越好。數值1-5單純控制子畫素細化強度。數值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) 11. Full RD [1][2]
  • 推薦值: 預設或更高,除非很在乎速度

subq

也叫–subme

no-chroma-me

  • 預設: 未開啟
  • 說明:通常,運動預測同時作用於亮度和色度平面,此選項禁用色度運動預測,以換取少量的速度提升。
  • 推薦值: 預設

psy-rd

  • 預設: 1.0:0.0
  • 說明:第一個值是Psy-RDO的強度(需要subme>=6),第二個數是Psy-Trellis的強度(需要trellis>=1)。注:Trellis還在試驗階段,至少不該用於動畫。 psy-rd的解釋,詳見this

no-psy

  • 預設: 未開啟
  • 說明:禁用所有會降低PSNR或SSIM的視覺優化。同時禁用了內部psy優化,此功能無法通過x264命令列控制。
  • 推薦值: 預設

no-mixed-refs

  • 預設: 未開啟
  • 說明:Mixed refs基於8x8區塊選擇參考,而非基於巨集塊,對於多ref模式能提升質量,但速度減慢。設定此項,會禁用該功能。
  • 推薦值: 預設
  • 參見:–ref

no-8x8dct

  • 預設: 未設定
  • 說明:自適應8x8 DCT啟用I幀內的智慧自適應8x8 transforms,此選項禁用該功能。
  • 推薦值: 預設

trellis

  • 預設: 1
  • 說明:進行格子(Trellis)量化,以提升效率。 0. 禁用 1. 僅用於最終編碼的巨集塊 2. 用於所有模式決策 用於巨集塊能較好地平衡速度和效率,用於所有模式(2)時會進一步降低速度,有時還會令細節模糊。
  • 推薦值: 預設
  • **注:**需要–cabac

no-fast-pskip

  • 預設: 未開啟
  • 說明:禁用早期P幀跳過檢測。低位元速率情況下,能提升一定的質量,但速度代價很大。高位元速率情況下,對速度和質量都影響不大。
  • 推薦值: 預設

no-dct-decimate

  • 預設: 未開啟
  • 說明:為節省空間,x264會將某些塊清零,因為其認為這些塊即使清零也不會被觀看者察覺到。這樣通常能以忽略不計的質量損失換來編碼效率的提升。但在極罕見的情況下會出錯導致可見的痕跡(artifact)。此情況可以通過令x264不丟棄DCT塊而減輕。 開啟此選項,則禁用該功能。
  • 推薦值: 預設

nr

  • 預設: 未設定
  • 說明:進行快速降噪。根據此值估計影片的噪聲,並嘗試通過丟棄微小細節來去噪,然後再進行量化。效果也許不如外部降噪濾鏡,但速度很快。
  • 推薦值: 預設或(如需降噪:100至1000)

deadzone-inter/intra

  • 預設: 未設定
  • 說明:設定inter/intra亮度量化deadzone的大小。Deadzones應介於0~32。deadzone值設定了x264對於何種精細程 度的細節,會選擇丟棄而不保留。太精細的細節很難察覺,且編碼代價大,丟棄這類細節能防止在低迴報畫面上浪費位元速率。Deadzone與Trellis互不相容
  • 推薦值: 預設

cqm

  • 預設: Flat (未設定)
  • 說明:將所有自定義量化矩陣設為內建預設值。預設值包括flat和JVT
  • 推薦值: 預設
  • 參見:–cqmfile

cqmfile

預設: 未設定

  • 說明:根據指定的JM-compatible的檔案,設定所有自定義量化矩陣。自動忽略其它*–cqm**選項。
  • 推薦值: 預設
  • 參見:–cqm

cqm4* / cqm8*

  • 預設: 未設定
    • –cqm4: 設定所有4x4量化矩陣。接受用逗號分隔的16個整數
    • –cqm8: 設定所有8x8量化矩陣。接受用逗號分隔的64個整數
    • –cqm4i, –cqm4p, –cqm8i, –cqm8p: 設定相同的亮度和色度量化矩陣
    • –cqm4iy, –cqm4ic, –cqm4py, –cqm4pc: 對亮度和色度使用不同的量化矩陣,cqm8選項也可用此開關。
  • 推薦值: 預設

Video Usability Info(視訊使用資訊)

這些選項在輸出流中設定標誌,可以被解碼工具讀取並做相應處理。值得注意的是,大多數選項在大多數情境下都是無意義 的,所以通常都被解碼軟體所忽略。

overscan

  • 預設: undef
  • 說明:如何處理過掃描。此處過掃描指的是顯示裝置只顯示畫面的一部分。 可選值:
    • undef - 未定義
    • show - 指示顯示全畫面,理論上設定後會必須遵守。
    • crop - 指示可在回放裝置上使用過掃描,未必會被遵守。
  • 推薦: 編碼前先切掉那部分,然後如果裝置支援,就用show,若不支援,就忽略。

videoformat

  • 預設: undef
  • 說明:指示視訊在編碼/數字化之前是什麼型別。 可選值:
    • component
    • pal
    • ntsc
    • secam
    • mac
    • undef
  • 推薦: 視訊源的型別,或 未定義

range

  • 預設: auto
  • 說明:指示亮度與色度level使用全範圍還是有限的level。若設為TV,則使用有限的範圍。若設為auto,則使用與輸入相同的範圍。
  • 注意:若range與input-range的值不同,則編碼時將進行範圍轉換。 簡單解釋,參見this
  • 推薦: 預設
  • 參見:–input-range

colorprim

  • 預設: undef
  • 說明:選擇在轉換為RGB時使用哪種基色。 可選值:
    • undef
    • bt709
    • bt470m
    • bt470bg
    • smpte170m
    • smpte240m
    • film 參見: RGBYCrCb
  • 推薦值: 預設,除非你知道源用的是哪種

transfer

  • 預設: undef
  • 說明:設定所使用的光電傳輸特性。(設定用於修正的gamma曲線) 可選值:
    • undef
    • bt709
    • bt470m
    • bt470bg
    • linear
    • log100
    • log316
    • smpte170m
    • smpte240m

colormatrix

  • 預設: undef
  • 說明:設定從RGB基色計算得到亮度和色度所用的矩陣係數。 可選值:
    • undef
    • bt709
    • fcc
    • bt470bg
    • smpte170m
    • smpte240m
    • GBR
    • YCgCo 參見: YCbCr
  • 推薦值: 源所使用的值,或預設

chromaloc

  • 預設: 0
  • 說明:設定色度取樣位置。(定義於ITU-T規範的Annex E). 範圍0 ~5 參見 x264’s 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資訊,且將碼流(bitstream)包裝於bitrate所設定的位元速率,需要bitrate位元速率控制模式。
  • 推薦值: none,除非需要

  • 參見:–vbv-bufsize, --vbv-maxrate, --aud

filler

  • 預設: None
  • 說明:允許在不使用nal-hrd的情況下產生高度恆定位元速率(hard-CBR)的流。

pic-struct

  • 預設: 未開啟
  • 說明:強制在Picture Timing SEI傳送pic_struct 使用–pulldown或–tff/–bff時自動開啟。
  • 推薦值: 預設

crop-rect

  • 預設: 未設定
  • 說明:在碼流層指定一個切除(crop)矩形。若不想x264在編碼時做crop,但希望解碼器在回放時進行切除,可使用此項。單位為畫素。

Input/Output(輸入輸出)

output

  • 預設: 未設定
  • 說明:指定輸出檔名。根據副檔名決定輸出視訊的格式。若副檔名無法識別,則預設輸出raw視訊流(通常以.264副檔名儲存) 特殊位置NUL (Windows) 或/dev/null (Unix) 表明丟棄輸出。特別常用於pass 1,因為此時只在乎輸出的stats

muxer

  • 預設: auto
  • 說明:指定寫檔案的格式。 可選值:
    • auto
    • raw
    • mkv
    • flv
    • mp4

'auto’會自動根據輸出檔案的檔名來挑選。

  • 參見:–output
  • 推薦值: 預設

demuxer

  • 預設: Automatically detected(自動檢測)

  • 說明:設定x264分析輸入視訊所使用的demuxer和解碼器。 可選值:

    • auto
    • raw
    • y4m
    • avs
    • lavf
    • ffms

    若輸入副檔名為raw, y4m或avs,x264會使用相應demuxer來讀取檔案。標準輸入使用raw demuxer。其它副檔名,x264會依次嘗試使用ffms,lavf來讀取,無法讀取則失敗。 'lavf’和’ffms’選項要求x264在編譯時包含了相應的庫。兩者之一被使用時,且輸出非raw,則x264會提取使用輸入檔案的時間碼。這使x264能有效得知VFR。其它選項可通過–fps來設定恆定幀率,或用–tcfile-in來設定可變幀率。

  • 參見:–input, --muxer

  • 推薦值: 預設

input-csp

  • 預設: i420
  • 說明:告知x264輸入raw視訊所使用的色彩空間。支援的色彩空間列於x264 --fullhelp
  • 參見:–input-res, --fps

output-csp

  • 預設: i420
  • 說明:告知x264輸出視訊所使用的色彩空間。支援的色彩空間列於x264 --fullhelp 可選值:
    • i420
    • i422
    • i444
    • rgb
  • 參見:–input-csp

input-range

  • 預設: auto
  • 說明:指定視訊源的色度與亮度level範圍。設為TV則使用有限範圍,設為PC則使用全範圍。
  • 注意:若range與input-range的值不同,則編碼時將進行範圍轉換。
  • **推薦值:**預設,除非你知道片源的level是TV還是PC。
  • 參見:–range

input-res

  • 說明:指定raw視訊的輸入解析度。用法 --input-res 720x576
  • 參見:–input-csp, --fps

index

  • 預設: 未設定
  • 說明:僅在使用ffms --demuxer時有效的可選項。指定ffms讀取輸入視訊所對應的索引檔案,對之後的編碼可用,免去重複索引。通常不需要,索引相對於編碼過程來說,並不慢。
  • 推薦值: 預設,除非你非要節省一分鐘的索引時間。

sar

  • 預設: 未設定
  • 說明:指 定編碼所使用的輸入視訊的取樣高寬比(Sample Aspect Ratio (SAR)),格式為"寬:高"。 與幀尺寸一起,通過決定顯示高寬比(Display Aspect Ratio (DAR)),可用於編碼可變高寬比的輸出。公式:DAR = SAR x 寬/高 詳見here
  • 推薦值: 使用resize濾鏡和編碼可變輸入時,需要使用。

fps

  • 預設: autodetected(自動檢測)
  • 說明:指定視訊幀率,可以是浮點數(29.970),或是分數(30000/1001),或整數(2997/100) 。x264能從輸入流的頭資訊裡檢測到幀率(僅限於y4m, avs, ffms, lavf),若沒有,在使用25。使用此項會自動開啟–force-cfr。 當使用raw YUV輸入,且使用–bitrate模式,則必須用此選項或–tcfile-in指定幀率。否則x264不會達到目標位元速率。

seek

  • 預設: 未設定
  • 說明:指定編碼的起始幀,允許從原始檔的某一時間點開始編碼。
  • 推薦值: 預設

frames

  • 預設: 未設定
  • 說明:指定最大編碼幀數,允許編碼能在原始檔結束前停止。
  • 推薦值: 預設

level

  • 預設: -1 (auto)
  • 說明:設定輸出碼流的level標誌。(定義於H.264標準的Annex A ) 允許的level有: 1 1b 1.1 1.2 1.3 2 2.1 2.2 3 3.1 3.2 4 4.1 4.2 5 5.1 若不在命令列中指定–level,x264會嘗試自動檢測level。檢測不完美,且在不使用VBV時可能會低估了level。x264也會自動限制DPB size (見–ref)以相容所選擇的level(除非手動指定了–ref)。注:指定level並不會自動設定–vbv_maxrate或–vbv_bufsize,但當超出level限制時,會發出警告。 我該選哪個Level? Level 4.1通常是桌面消費級硬體所支援的最高level。藍光碟只支援level 4.1,許多非移動裝置如Xbox 360表示level 4.1是官方支援的最高level。諸如iPhone/Android之類的移動裝置則完全不同。 維基百科有張圖表 詳細列舉了各level的限制。
  • 推薦值: 預設,除非定位於特定裝置。

bluray-compat

  • 預設: 未開啟

  • 說明:修改x264的引數以更好地相容所有藍光播放器。只有當視訊需要在硬體藍光播放機上播放時,才需啟用本設定。 此設定對引數做出以下修改:

    • 將–weightp上限設為1(若不大於1,則不更改;若大於1,則降為1)
    • 將–min-keyint設為1
    • 禁用–intra-refresh
    • 其它…

    此設定還開啟了一些x264的內部變更,以便生成的視訊更利於硬體播放器的播放。例如:

    • 修改GOP/mini-GOP的大小和參考列表
    • 增加slice header的verbose內容
  • **推薦值:**若用於藍光硬體播放機,則開啟本設定。

avcintra-compat

  • 預設: 未開啟
  • 說明:強制x264以支援High 10 Intra的profile(AVC Intra 50, AVC Intra 100, AVC Intra 200)進行編碼。僅在需使用相關裝置播放時開啟本設定。

stitchable

  • 預設: 未開啟
  • 說明:不以視訊內容來優化header,以保證能被附加(append)到分段的編碼視訊尾部。並保證當視訊的各段採用完全相同的引數編碼時,各段的header完全一致。

verbose

  • 預設: 未開啟
  • 說明:顯示每一編碼幀的統計資訊。
  • 推薦值: 預設

no-progress

  • 預設: 未開啟
  • 說明:關閉編碼過程中的進度顯示。
  • 推薦值: 預設

quiet

  • 預設: 未開啟
  • 說明:開啟安靜模式,靜默x264的狀態訊息。
  • 推薦值: 預設

log-level

  • 預設: info
  • 說明:手動指定x264cli和libx264的訊息記錄層級 可選值:
    • none
    • error
    • warning
    • info
    • debug
  • 推薦值: 預設

psnr

  • 預設: 未開啟
  • 說明:在編碼結束時,報告PSNR 值,略微減慢速度。
  • 推薦值: 預設

ssim

  • 預設: 未開啟
  • 說明:在編碼結束時,報告SSIM 值,略微減慢速度。
  • 推薦值: 預設

threads

  • 預設: auto (基於幀編碼的執行緒:1.5 * 邏輯處理器數,捨棄小數點;基於切片(slice-based)編碼的執行緒:1 * 邏輯處理器數)
  • 說明:開啟並行編碼,利用多核系統的一個以上的執行緒來增加速度。多執行緒造成的質量損失可忽略不計,除非使用非常高的執行緒數(如大於16)。速度提升略低於線性,直至執行緒數> 一執行緒/垂直40畫素,再往上速度提升大幅縮減。 x264目前內部限制最高執行緒數為128,現實中不會使用到這麼高。
  • 推薦值: 預設
  • **參見:**thread-input, sliced-threads, opencl

sliced-threads

  • 預設: off
  • 說明:開啟基於基於切片(slice-based)的執行緒,該方法在壓縮和效率上皆略輸於預設方法,但沒有編碼延時。 最大切片執行緒數:MIN( (高+15)/16 / 4, 128 )
  • 推薦值: 預設(off),除非需要編碼實時流媒體,或是低延時很重要時。

thread-input

  • 預設: threads > 1時,設為開啟
  • 說明:使用與編碼不同的執行緒來解碼輸入視訊。
  • 推薦值: 預設

sync-lookahead

  • 預設: auto (bframes+1)
  • 說明:設定threaded lookahead所用的緩衝幀數。最大值為250。在2nd或後續pass,或是使用切片執行緒時,本選項自動關閉。 設定為0將禁用threaded lookahead,可降低延時,但效能下降。
  • 推薦值: 預設

non-deterministic

  • 預設: 未開啟
  • 說明:當–threads > 1時,能略微提升質量,但輸出不確定(non-deterministic)。會開啟多執行緒mv,並在當slicetype為threaded時,使用整個lookahead緩衝來做slicetype決定,而非只用可用的最小量。 通常不用。
  • 推薦值: 預設

opencl

  • 預設: 未開啟
  • 說明:當開啟時,將look ahead執行緒大多分派給支援OpenCL的GPU裝置。低解析度intra成本預測,低解析度運動搜尋(包括subpel)和雙向成本預測都在GPU上完成。對於不開啟多執行緒lookahead(threaded lookahead)的preset(superfast, ultrafast),則根本不會使用到OpenCL。
  • 小心:開啟時,輸出質量一般略遜於CPU模式的質量。驅動程式有bug時,編碼速度有可能低於純CPU x264,甚至可能導致系統崩潰。

opencl-clbin

  • 預設: 未開啟
  • 說明:在執行前,x264必須編譯其針對你的裝置的OpenCL核心,為避免在每次執行時都編譯一次,x264會將編譯完成的核心二進位制碼緩存於名為x264_lookahead.clbin的檔案。 指定編譯完的OpenCL核心快取的路徑以更改此路徑。

opencl-device

  • 預設: 未開啟
  • 說明:x264將使用第一個支援OpenCL的GPU裝置。大多現代的獨立GPU或AMD的整合GPU都能用,Intel的整合GPU(IvyBridge及更早產品)不支援所需的特性。 當你的系統存在多餘一個支援OpenCL的裝置時,允許通過裝置序號來指定執行lookahead的裝置。

asm

  • 預設: auto
  • 說明:忽略自動CPU檢測。適用於debug和糾錯。
  • 推薦值: 預設<