“X264設定”的版本间的差异

来自NMM Doc
跳到导航 跳到搜索
→‎b-adapt
 
(未显示3个用户的220个中间版本)
第1行: 第1行:
{{TOCright}}
{{TOCright}}
 本頁說明所有x264參數之目的和用法。參數的排列相同於在<code>x264 --fullhelp</code>出現的順序。
 本頁說明所有x264參數之目的和用法。參數的排列相同於在<code>x264 --fullhelp</code>出現的順序。
參閱:[[X264統計資料輸出]]、[[X264統計資料檔案]]和[[X264編碼建議]]。


=x264設定=
=x264設定=
==說明==
==說明==
x264帶有一些內置的文件。要閱讀此說明,執行<code>x264 --help</code>、<code>x264 --longhelp</code>或<code>x264 --fullhelp</code>。越後面的選項 提供 詳細的資訊。
x264帶有一些內置的文件。要閱讀此說明,執行<code>x264 --help</code>、<code>x264 --longhelp</code>或<code>x264 --fullhelp</code>。越後面的選項 提供 詳細的資訊 。每条选项的具体命令行帮助界面正在开发中


==輸入==
==輸入==
 以一個位置 數指定輸入的視訊。例如:
 以一個位置 數指定輸入的視訊。例如:
  x264.exe -o NUL C:\input.avs
  x264.exe {{x|output}} NUL '''C:\input.avs'''
  x264 -o /dev/null ~/input.y4m
  x264 {{x|output}} /dev/null '''~/input.y4m'''
 當輸入 視訊 是raw YUV 格式時,還必須告訴x264視訊的解析度。你可能也要使用{{x|fps}}來指定幀率:
 當輸入視訊 是原始YUV 格式時,還必須告訴x264視訊的解析度。你可能也要使用{{x|fps}}來指定幀率:
  x264.exe -o NUL --fps 25 --input-res 1280x720 D:\input.yuv 
  x264.exe {{x|output}} NUL {{x|fps}} 25 '''{{x|input-res}} 1280x720''' D:\input.yuv 
  x264 -o /dev/null --fps 30000/1001 --input-res 640x480 ~/input.yuv
  x264 {{x|output}} /dev/null {{x|fps}} 30000/1001 '''{{x|input-res}} 640x480''' ~/input.yuv


==預設 值系統==
详细的命令行使用方法参见[[X264使用介绍]]
 為了減少使用者花費時間和精力在命令列上而設計的一套系統。這些設定切換了 哪些 選項可以從<code>x264 --fullhelp</code>的說明 得知。
 
==預設==
 為了減少使用者花費時間和精力在命令列上而設計的一套系統。這些設定切換了 什麼 選項可以從<code>x264 --fullhelp</code>的說明 得知。


===profile===
===profile===
'''預設值:無'''
'''預設值:無'''


 限制輸出資料流的profile。如果指定了profile, 所有其他設定。所以如果指定了profile,將保證得到一個相容的資料流。如果設了此選項,將無法使用無 編碼({{x|qp}}<code> 0</code>或{{x|crf}}<code> 0</code>)。
 限制輸出資料流的profile。如果指定了profile, 它會 所有其他 設定。所以如果指定了profile,將 保證得到一個相容的資料流。如果設了此選項,將 無法使用無 失真(lossless) 編碼({{x|qp}}<code> 0</code>或{{x|crf}}<code> 0</code>)。


 如果播放 設備 僅支援某個profile, 應該設此選項。大多數解碼器都支援High profile,所以沒有設定的必要。
 如果播放 裝置 僅支援某個profile, 應該設此選項。大多數解碼器都支援High profile,所以沒有設定的必要。


 可用的值:<code>baseline, main, high</code>
 可用的值:<code>baseline, main, high, high10, high422, high444</code>


===preset===
===preset===
'''預設值:medium'''
'''預設值:medium'''


 更 選項,以權衡壓縮效率和編碼速度。如果指定了preset,更 的選項將在所有其他參數 套用 套用。
  更選項,以權衡壓縮效率和編碼速度。如果指定了preset, 更的選項將 套用 所有其他 參數 前套用。


 通常應該將此選項設為 所能 受的最慢 的值
 通常應該將此選項設為所能 受的最慢 一個


 可用的值:<code>ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo</code>
 可用的值:<code>ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo</code>
第38行: 第42行:
'''預設值:無'''
'''預設值:無'''


 調整選項,以進一步 化為視訊的內容。如果指定了tune,更 的選項將在{{x|preset}}之後,但所有其他參數之前 套用。
 調整選項,以進一步 最佳 化為視訊的內容。如果指定了tune, 更的選項將 在{{x|preset}}之後,但所有其他 參數之前套用。


 如果視訊內容符合其中一個可用的值則可以使用此選項,否則 就別 使用。
 如果視訊 內容符合其中一個可用的 調整 則可以使用此選項,否則 不要 使用。


 可用的值:<code>film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency</code>
 可用的值:<code>film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency</code>
第47行: 第51行:
'''預設值:無'''
'''預設值:無'''


  隨著預設值系統在r1177版本的出現, 使用{{x|pass}}<code> 1</code>會在解析命令列的最後套用以下設定:
 使用{{x|pass}}<code> 1</code>會在解析命令列的最後套用以下設定:
* {{x|ref}}<code> 1</code>
* {{x|ref}}<code> 1</code>
* {{x|no-8x8dct}}
* {{x|no-8x8dct}}
第55行: 第59行:
* {{x|trellis}}<code> 0</code>
* {{x|trellis}}<code> 0</code>


 可以 {{x|slow-firstpass}}來停用此 特性 。注意 使用{{x|preset}}<code> placebo</code>也會啟用slow-firstpass。
 可以 使用{{x|slow-firstpass}}來停用此 功能
 
注意 使用{{x|preset}}<code> placebo</code>也會啟用slow-firstpass。


'''參閱:'''{{x|pass}}
'''參閱:'''{{x|pass}}
第63行: 第69行:
'''預設值:250'''
'''預設值:250'''


 設定x264輸出的流之最大IDR幀(亦稱為關鍵幀)間隔。可以指定"<code>infinite</code>" 讓x264永遠不要插入非場景變更的IDR幀。
 設定x264輸出的 資料 流之最大IDR幀(亦稱為關鍵幀)間隔。可以指定<code>infinite</code>讓x264永遠不要插入非場景變更的IDR幀。


IDR幀是資料流的“分隔符號”,所有幀都 不能 從IDR幀的另一邊參 資料。因此,IDR幀也是I幀,所以它們不從任何其他幀參 資料。這意味著它們可以用作視訊的搜尋點(seek points)。
IDR幀是資料流的“分隔符號”,所有幀都 無法 從IDR幀的另一邊參 資料。因此,IDR幀也是I幀,所以它們不從任何其他幀參 資料。這意味著它們可以用作視訊的搜尋點(seek points)。


 注意,I幀通常明顯大於P/B幀(在低動態場景通常為10倍大或更多),所以當它們與極低的VBV設定合併使用時會打亂 率控制。在這些情況下,研究{{x|intra-refresh}}。
 注意,I幀通常明顯大於P/B幀(在低動態場景通常為10倍大或更多),所以當它們與極低的VBV設定合併使用時會打亂 位元 率控制。在這些情況下,研究{{x|intra-refresh}}。


 預設值對於大多數視訊沒啥問題。在為藍光、廣播、即時資料流或某些其他特殊情況編碼時,可能需要更小的GOP長度(通常等於幀率)。
 預設值對於大多數視訊沒啥問題。在為藍光、廣播、即時資料流或某些其他特殊情況編碼時,可能需要更小的GOP長度(通常等於幀率)。
第74行: 第80行:


===min-keyint===
===min-keyint===
'''預設值:自動 (MIN({{x|keyint}} / 10, {{x|fps}}))'''
'''預設值:自動 (MIN({{x|keyint}} / 10, {{x|fps}}) '''


 設定IDR幀之間的最小長度。
 設定IDR幀之間的最小長度。


IDR幀的說明可以參閱{{x|keyint}}。過小的keyint 範圍 會導致“不正確的”IDR幀位置(例如閃屏場景)。此選項限制在每個IDR幀之後,要有多少幀才可以再有另一個IDR幀的最小長度。
IDR幀的說明可以參閱{{x|keyint}}。過小的keyint 距離 會導致“不正確的”IDR幀位置(例如閃屏場景)。此選項限制在每個IDR幀之後,要有多少幀才可以再有另一個IDR幀的最小長度。


min-keyint的最大允許值 {{x|keyint}}/2+1。
min-keyint的最大允許值 {{x|keyint}}/2+1。


'''建議:'''預設值,或者等於幀率
'''建議:'''預設值,或者等於幀率
第96行: 第102行:
'''預設值:40'''
'''預設值:40'''


 設 定I/IDR幀 位置 的閾值(場景變更偵測)。
 設 定配置I/IDR幀的閾值(場景變更偵測)。


x264為每一幀計算一個度量值,來估計 與前一幀的不同程度。如果該值低於scenecut,則算偵測到一個“場景變更”。如果此時與最近一個IDR幀的距離低於{{x|min-keyint}}則放置一個I幀,否則放置一個IDR幀。越大的scenecut值會增加偵測到場景變更的數目。場景變更是如何比較的詳細資訊可以參閱[http://forum.doom9.org/showthread.php?t=121116 http://forum.doom9.org/showthread.php?t=121116]。
x264為每一幀計算一個度量值,來估計與前一幀的不同程度。如果該值低於scenecut,則算偵測到一個“場景變更”。如果此時與最近一個IDR幀的距離低於{{x|min-keyint}} 則放置一個I幀,否則放置一個IDR幀。越大的scenecut值會增加偵測到場景變更的數目。場景變更是如何比較的詳細資訊可以參閱[http://forum.doom9.org/showthread.php?t=121116 http://forum.doom9.org/showthread.php?t=121116]。


 將scenecut設為0 等同 於設定{{x|no-scenecut}}。
 將scenecut設為0 相當 於設定{{x|no-scenecut}}。


'''建議:'''預設值
'''建議:'''預設值
第109行: 第115行:
'''預設值:無'''
'''預設值:無'''


 停用IDR幀,作為替代x264會為每隔{{x|keyint}} 幀的每個巨集區塊(macroblock)使用內部編碼(intra coding)。區塊是以一個水平捲動的行刷新,稱為刷新波(refresh wave)。這有利於低延遲的資料流,使它有可能比標準的IDR幀達到更加固定的幀大小。它也增強了視訊資料流對封包遺失的恢復能力。此選項會降低壓縮效率,因此必要時才使用。
 停用IDR幀,作為替代x264會為每隔{{x|keyint}} 幀的每個巨集區塊(macroblock)使用內部編碼(intra coding)。區塊是以一個水平捲動的行刷新,稱為刷新波(refresh wave)。這有利於低延遲的資料流,使它有可能比標準的IDR幀達到更加固定的幀大小。它也增強了視訊資料流對封包遺失的恢復能力。此選項會降低壓縮效率,因此必要時才使用。


 有趣的事:
 有趣的事:
* 第一幀仍然是IDR幀。
* 第一幀仍然是IDR幀。
* 內部區塊(Intra-blocks)僅處於P幀 ,刷新波在一或多個B幀後的第一個P幀更廣泛。
* 內部區塊(Intra-blocks)僅處於P幀 ,刷新波在一或多個B幀後的第一個P幀更廣泛。
* 壓縮效率的損失主要來自於在刷新波上左側(新)的巨集區塊 不能 右側(舊)的資料。
* 壓縮效率的損失主要來自於在刷新波上左側(新)的巨集區塊 無法 右側(舊)的資料。


===bframes===
===bframes===
第123行: 第129行:
 沒有B幀時,一個典型的x264資料流有著像這樣的幀類型:IPPPPP...PI。當設了<code>--bframes 2</code>時,最多兩個連續的P幀可以被B幀取代,就像:IBPBBPBPPPB...PI。
 沒有B幀時,一個典型的x264資料流有著像這樣的幀類型:IPPPPP...PI。當設了<code>--bframes 2</code>時,最多兩個連續的P幀可以被B幀取代,就像:IBPBBPBPPPB...PI。


B幀類似於P幀, 只是B 幀還能從它之後的幀做動態預測(motion prediction)。就壓縮比來說效率會大幅提高。它們的平均品質是由{{x|pbratio}}所控制。
B幀類似於P幀, 除了B 幀還能從它之後的幀做動態預測(motion prediction)。就壓縮比來說效率會大幅提高。它們的平均品質是由{{x|pbratio}}所控制。


 有趣的事:
 有趣的事:
* x264還區分兩種不同種類的B幀。"B"是代表一個被其他幀作為參 幀的B幀(參閱{{x|b-pyramid}}),而"b"則代表一個不被其他幀作為參 幀的B幀。如果看到一段混合的"B"和"b",原因通常與上述有關。當差別並不重要時,通常就以"B"代表所有B幀。
* x264還區分兩種不同種類的B幀。"B"是代表一個被其他幀作為參 幀的B幀(參閱{{x|b-pyramid}}),而"b"則代表一個不被其他幀作為參 幀的B幀。如果看到一段混合的"B"和"b",原因通常與上述有關。當差別並不重要時,通常就以"B"代表所有B幀。
* x264是如何為每個候選幀選定為P幀或B幀的詳細資訊可以參閱[http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064 http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064]。在此情況下,幀類型 將如下所示 (假設<code>--bframes 3</code>):IBBBPBBBPBPI。
* x264是如何為每個候選幀選定為P幀或B幀的詳細資訊可以參閱[http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064 http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064]。在此情況下,幀類型 看起來會像這樣 (假設<code>--bframes 3</code>):IBBBPBBBPBPI。


'''參閱:'''{{x|b-bias}}, {{x|b-pyramid}}, {{x|ref}}, {{x|pbratio}}, {{x|partitions}}, {{x|weightb}}
'''參閱:'''{{x|b-bias}}, {{x|b-pyramid}}, {{x|ref}}, {{x|pbratio}}, {{x|partitions}}, {{x|weightb}}
第134行: 第140行:
'''預設值:1'''
'''預設值:1'''


 設定彈性B幀 置決策演算法。此設定控制x264如何決定要放置P幀或B幀。
 設定彈性B幀 置決策演算法。此設定控制x264如何決定要放置P幀或B幀。


: <code>0</code>:停用,總是 選取B 幀。這與舊的<code>no-b-adapt</code>設定相同作用。
: <code>0</code>:停用,總是 挑選B 幀。這與舊的<code>no-b-adapt</code>設定相同作用。


: <code>1</code>:“快速”演算法,較快,越大的{{x|bframes}}值會稍微提高速度。當使用此模式時,基本上建議搭配{{x|bframes}}<code> 16</code>使用。
: <code>1</code>:“快速”演算法,較快,越大的{{x|bframes}}值會稍微提高速度。當使用此模式時,基本上建議搭配{{x|bframes}}<code> 16</code>使用。
第147行: 第153行:
'''預設值:0'''
'''預設值:0'''


 控 制B 被用來代替P 幀的可能性。大於0的值增加偏向B幀的加權,而小於0的值則相反。範圍是從-100到100。100並不保證全 為B 幀(要全 為B 幀該使用{{x|b-adapt}}<code> 0</code>),而-100也不保證全 為P 幀。
 控 制使用B 而不使用P 幀的可能性。大於0的值增加偏向B幀的加權,而小於0的值則相反 。此值是一個任意計量 。範圍是從-100到100。100並不保證全 是B 幀(要全 是B 幀該使用{{x|b-adapt}}<code> 0</code>),而-100也不保證全 是P 幀。


 僅在你認為能比x264做出更好的 率控制決策時才使用此選項。
 僅在你認為能比x264做出更好的 位元 率控制決策時才使用此選項。


'''參閱:'''{{x|bframes}}, {{x|ipratio}}
'''參閱:'''{{x|bframes}}, {{x|ipratio}}
第156行: 第162行:
'''預設值:normal'''
'''預設值:normal'''


 允許B幀作為其他幀的參 幀。沒有此設定時,幀只能參 考I/P幀。雖然I/P幀因其較高的品質作為參 幀更有價值,但B幀也是很有用的。作為參 幀的B幀 得到一個介於P幀和普通B幀之間的量化值。b-pyramid需要至少兩個以上的{{x|bframes}}才會運作。
 允許B幀作為其他幀的參 幀。沒有此設定時,幀只能參 照I/P幀。雖然I/P幀因其較高的品質作為參 幀更有價值,但B幀也是很有用的。作為參 幀的B幀 得到一個介於P幀和普通B幀之間的量化值。b-pyramid需要至少兩個以上的{{x|bframes}}才會運作。


 如果是在為藍光編碼,須使用<code>none</code>或<code>strict</code>。
 如果是在為藍光編碼,須使用<code>none</code>或<code>strict</code>。


: <code>none</code>:不允許B幀作為參 幀。
: <code>none</code>:不允許B幀作為參 幀。
: <code>strict</code>: 每個minigop 允許一個B幀作為參 幀,這是藍光標準強制執行的限制。
: <code>strict</code>: 每minigop 允許一個B幀作為參 幀,這是藍光標準強制執行的限制。
: <code>normal</code>: 每個minigop 允許多個B幀作為參 幀。
: <code>normal</code>: 每minigop 允許多個B幀作為參 幀。


'''參閱:'''{{x|bframes}}, {{x|refs}}, {{x|no-mixed-refs}}
'''參閱:'''{{x|bframes}}, {{x|ref}}, {{x|no-mixed-refs}}


===open-gop===
===open-gop===
'''預設值 :none'''
'''預設值 :無'''


open-gop是一個提高效率的編碼技術。 有三種模式:
open-gop是一個提高效率的編碼技術。某些解碼器不完全支援open-gop資料流,這就是為什麼 並未預設為啟用。 應該測試所有可能用來撥放 此資料流 的解碼器 ,或者(假如可能的話)等到open-gop支援已全面普及
: <code>none</code>:停用open-gop。
: <code>normal</code>:啟用open-gop。
: <code>bluray</code>:啟用open-gop。一個效率較低的open-gop版本,因為<code>normal</code>模式無法用於藍光編碼。
 
某些解碼器不完全支援open-gop資料流,這就是為什麼 此選項 並未預設為啟用。 如果想啟用open-gop, 應該 測試所有可能用來撥放的解碼器。


open-gop的說明可以參閱[http://forum.doom9.org/showthread.php?p=1300124#post1300124 http://forum.doom9.org/showthread.php?p=1300124#post1300124]。
open-gop的說明可以參閱[http://forum.doom9.org/showthread.php?p=1300124#post1300124 http://forum.doom9.org/showthread.php?p=1300124#post1300124]。
第186行: 第187行:
'''預設值:3'''
'''預設值:3'''


 控制解碼圖片緩衝(DPB:'''D'''ecoded '''P'''icture '''B'''uffer)的大小。範圍是從0到16。總之,此值是每個P幀可以使用 多少 幀作為參 幀的數目(B幀可以使用的數目要少一或兩個,取決於它們是否作為參 幀)。可以 作為 考幀 的最小ref數是1。
 控制解碼圖片緩衝(DPB:'''D'''ecoded '''P'''icture '''B'''uffer)的大小。範圍是從0到16。總之,此值是每個P幀可以使用 前多少幀作為參 幀的數目(B幀可以使用的數目要少一或兩個,取決於它們是否作為參 幀)。可以 的最小ref數是1。


 還要注意的是,H.264規格限制了每個level的DPB大小。如果遵守[http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels Level 4.1]規格,720p和1080p視訊的最大ref數分別 為9 和4。
 還要注意的是,H.264規格限制了每個level的DPB大小。如果遵守[http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels Level 4.1]規格,720p和1080p視訊的最大ref數分別 是9 和4。


'''參閱:'''{{x|b-pyramid}}, {{x|no-mixed-refs}}, {{x|level}}
'''參閱:'''{{x|b-pyramid}}, {{x|no-mixed-refs}}, {{x|level}}
第195行: 第196行:
'''預設值:無'''
'''預設值:無'''


 完全停 用loop 濾鏡。不建議。
 完全停 用循環 濾鏡 (loop filter) 。不建議。


'''參閱:'''{{x|deblock}}
'''參閱:'''{{x|deblock}}
第202行: 第203行:
'''預設值:0:0'''
'''預設值:0:0'''


 控 制loop 濾鏡(亦稱 為inloop deblocker),這是H.264標準的一部分。就性價比來說非常有效率。
 控 制循環 濾鏡(亦稱 為持續循環去區塊(inloop deblocker) ),這是H.264標準的一部分。就性價比來說非常有效率。


 可以在[http://forum.doom9.org/showthread.php?t=109747 http://forum.doom9.org/showthread.php?t=109747]找到loop濾鏡的參數是如何運作的說明(參閱第一個帖子和akupenguin的回覆)。
 可以在[http://forum.doom9.org/showthread.php?t=109747 http://forum.doom9.org/showthread.php?t=109747]找到loop濾鏡的參數是如何運作的說明(參閱第一個帖子和akupenguin的回覆)。
第209行: 第210行:


===slices===
===slices===
'''預設值 :0'''
'''預設值 :無'''


 設定每 幀的切片數,而且強制為矩形切片(會被{{x|slice-max-size}}或{{x|slice-max-mbs}}覆 )。
 設定每幀的切片數,而且強制為矩形切片(會被{{x|slice-max-size}}或{{x|slice-max-mbs}}覆 )。


 如果是在為藍光編碼,將值設為4。不 然,別 使用此選項,除非你知道真的有必要。
 如果是在為藍光編碼,將值設為4。 否則, 使用此選項,除非你知道真的有必要。


'''參閱:'''{{x|slice-max-size}}, {{x|slice-max-mbs}}
'''參閱:'''{{x|slice-max-size}}, {{x|slice-max-mbs}}


===slice-max-size===
===slice-max-size===
'''預設值 :0'''
'''預設值 :無'''


 設定最大的切片大小(單位 位元組),包括估計的NAL額外負荷(overhead)。(目前與{{x|interlaced}}不相容)
 設定最大的切片大小(單位 位元組),包括估計的NAL額外負荷(overhead)。(目前與{{x|interlaced}}不相容)


'''參閱:'''{{x|slices}}
'''參閱:'''{{x|slices}}


===slice-max-mbs===
===slice-max-mbs===
'''預設值 :0'''
'''預設值 :無'''


 設定最大的切片大小(單位 巨集區塊)。(目前與{{x|interlaced}}不相容)
 設定最大的切片大小(單位 巨集區塊)。(目前與{{x|interlaced}}不相容)


'''參閱:'''{{x|slices}}
'''參閱:'''{{x|slices}}


===tff===
===tff===
 啟用交錯式編碼並指定頂場優先(top field first)。x264的交錯式編碼使用MBAFF,本身效率比漸進式編碼差。出於此原因,僅在打算於交錯式顯示器上播放 視訊時,才應該編碼為交錯式(或者視訊在送給x264之前無法進行去交錯)。此選項會自動啟用{{x|pic-struct}}。
'''預設值:無'''
 
 啟用交錯式編碼並指定頂場優先(top field first)。x264的交錯式編碼使用MBAFF,本身效率比漸進式編碼差。出於此原因,僅在打算於交錯式顯示器上播放視訊時,才應該編碼為交錯式(或者視訊在送給x264之前無法進行去交錯)。此選項會自動啟用{{x|pic-struct}}。


===bff===
===bff===
'''預設值:無'''
 啟用交錯式編碼並指定底場優先(bottom field first)。詳細資訊可以參閱{{x|tff}}。
 啟用交錯式編碼並指定底場優先(bottom field first)。詳細資訊可以參閱{{x|tff}}。


第240行: 第245行:
'''預設值:無'''
'''預設值:無'''


 啟用限制的內部預測(constrained intra prediction),這是SVC編碼的基礎層(base layer)所需要的。 由於每個人都 忽略SVC,你同樣可以忽略此選項。
 啟用限制的內部預測(constrained intra prediction),這是SVC編碼的基礎層(base layer)所需要的。 既然Everyone<sup>TM</sup> 忽略SVC,你同樣可以忽略此選項。


===pulldown===
===pulldown===
第247行: 第252行:
 使用其中一個預設模式將漸進式、固定幀率的輸入資料流標誌上軟膠捲過帶(soft telecine)。軟膠捲過帶在[http://trac.handbrake.fr/wiki/Telecine http://trac.handbrake.fr/wiki/Telecine]有更詳細的解釋。
 使用其中一個預設模式將漸進式、固定幀率的輸入資料流標誌上軟膠捲過帶(soft telecine)。軟膠捲過帶在[http://trac.handbrake.fr/wiki/Telecine http://trac.handbrake.fr/wiki/Telecine]有更詳細的解釋。


 可用的 :<code>none, 22, 32, 64, double, triple, euro</code>
 可用的 預設 :<code>none, 22, 32, 64, double, triple, euro</code>


 指定除了<code>none</code>以外的任 模式 會自動啟用{{x|pic-struct}}。
 指定除了<code>none</code>以外的任一模式會自動啟用{{x|pic-struct}}。


===fake-interlaced===
===fake-interlaced===
第256行: 第261行:
 將資料流標記為交錯式,即使它並未以交錯式來編碼。用於編碼25p和30p為符合藍光標準的視訊。
 將資料流標記為交錯式,即使它並未以交錯式來編碼。用於編碼25p和30p為符合藍光標準的視訊。


== 率控制==
===frame-packing===
'''預設值:無'''
 
如果在編碼3D視訊,此參數設定一個位元資料流(bitstream)旗標,用來告訴解碼器此3D視訊是如何封裝的。相關的值和它們的意義可以從<code>x264 --fullhelp</code>的說明裡得知。
 
==位元 率控制==
===qp===
===qp===
'''預設值:無'''
'''預設值:無'''


 三種 率控制方法之一。設定x264以固定量化值('''C'''onstant '''Q'''uantizer)模式來編碼視訊。這裡給的值是指定P幀的量化值。I幀和B幀的量化值則是 衍生自{{x|ipratio}}和{{x|pbratio}}。
 三種 位元 率控制方法之一。設定x264以固定量化值('''C'''onstant '''Q'''uantizer)模式來編碼視訊。這裡給的值是指定P幀的量化值。I幀和B幀的量化值則是 {{x|ipratio}}和{{x|pbratio}} 中取得。CQ模式把某個量化值作為目標,這意味著最終檔案大小是未知的(雖然可以透過一些方法來準確地估計)。將值設為0會產生無失真輸出。對於相同視覺品質,qp會比{{x|crf}}產生更大的檔案。qp模式也會停用彈性量化,因為按照定義“固定量化值”意味著沒有彈性量化


CQ模式把某個量化值作為目標,這意味著最終檔案大小是未知的(雖然可以透過一些方法來準確地估計)。將值設為0會產生無失真(lossless)輸出。對於相同視覺品質,qp會比{{x|crf}} 產生更大 檔案。qp模式也會停用彈性量化,因為按照定義“固定量化值”意味著沒有彈性量化
此選項與{{x|bitrate}}和{{x|crf}} 互斥。各種位元率控制系統 詳細資訊可以參閱[http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD]


 此 選項與{{x|bitrate}}和{{x|crf}}互斥。各種 率控制系統的詳細資訊可以參閱[http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD]。
  雖然qp不需要lookahead來執行因 此速 度較快,但 通常應該改用{{x|crf}}。
 
通常應該改用{{x|crf}} ,儘管qp不需要lookahead來執行因此速度會較快


'''參閱:'''{{x|bitrate}}, {{x|crf}}, {{x|ipratio}}, {{x|pbratio}}
'''參閱:'''{{x|bitrate}}, {{x|crf}}, {{x|ipratio}}, {{x|pbratio}}
第273行: 第281行:
'''預設值:無'''
'''預設值:無'''


 三種 率控制方法之二。以目標位元 (target bitrate) 模式來編碼視訊。目標位元 率模式意味著最終檔案大小是已知的,但最終品質則未知。x264會嘗試把給定的位元 率作為整體平均值來編碼視訊。 參數的單位是千位元/秒(8位元=1位元組)。注意,1千位元(kilobit)是1000位元,而不是1024位元。
 三種 位元 率控制方法之二。以目標位元率模式來編碼視訊。目標位元率模式意味著最終檔案大小是已知的,但最終品質則未知。x264會嘗試把給定的位元率作為整體平均值來編碼視訊。參數的單位是千位元/秒(8位元=1位元組)。注意,1千位元(kilobit)是1000位元,而不是1024位元。


 此設定通常與{{x|pass}}在兩階段(two-pass)編碼一起使用。
 此設定通常與{{x|pass}}在兩階段(two-pass)編碼一起使用。


 此選項與{{x|qp}}和{{x|crf}}互斥。各種 率控制系統的詳細資訊可以參閱[http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD]。
 此選項與{{x|qp}}和{{x|crf}}互斥。各種 位元 率控制系統的詳細資訊可以參閱[http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD]。


'''參閱:'''{{x|qp}}, {{x|crf}}, {{x|ratetol}}, {{x|pass}}, {{x|stats}}
'''參閱:'''{{x|qp}}, {{x|crf}}, {{x|ratetol}}, {{x|pass}}, {{x|stats}}
第284行: 第292行:
'''預設值:23.0'''
'''預設值:23.0'''


 最後一種 率控制方法:固定 率係數('''C'''onstant '''R'''ate'''f'''actor)。當qp是把某個量化值作為目標,而bitrate是把某個檔案大小作為目標時,crf是把某個“品質”作為目標。構想是讓crf n提供的視覺品質與qp n相同,只是檔案更小一點。crf值的度量單位是“ 率係數(ratefactor)”。
 最後一種 位元 率控制方法:固定 位元 率係數('''C'''onstant '''R'''ate'''f'''actor)。當qp是把某個量化值作為目標,而bitrate是把某個檔案大小作為目標時,crf 是把某個“品質”作為目標。構想是讓crf n提供的視覺品質與qp n相同,只是檔案更小一點。crf值的度量單位是“ 位元 率係數(ratefactor)”。


CRF是藉由降低“較不重要”的幀之品質來達到此目的。在此情況下,“較不重要”是指在複雜或高動態場景的幀,其品質不是很耗費位元數就是不易察覺,所以會提高它們的量化值。從這些幀 所節省下來的位元數被重新分配到可以更有效利用的幀。
CRF是藉由降低“較不重要”的幀之品質來達到此目的。在此情況下,“較不重要”是指在複雜或高動態場景的幀,其品質不是很耗費位元數就是不易察覺,所以會提高它們的量化值。從這些幀 所節省下來的位元數被重新分配到可以更有效利用的幀。


CRF花費的時間比兩階段編碼少,因為兩階段編碼中的“第一階段”被略過了。另一方面,要預測CRF編碼的最終位元 率是不可能的。根據情況哪種 率控制模式更好是由你來決定。
CRF花費的時間 比兩階段編碼少,因為兩階段編碼中的“第一階段”被略過了。另一方面,要預測CRF編碼的最終位元率是不可能的。根據情況哪種 位元 率控制模式更好是由你來決定。


 此選項與{{x|qp}}和{{x|bitrate}}互斥。各種 率控制系統的詳細資訊可以參閱[http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD]。
 此選項與{{x|qp}}和{{x|bitrate}}互斥。各種 位元 率控制系統的詳細資訊可以參閱[http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD]。


'''參閱:'''{{x|qp}}, {{x|bitrate}}
'''參閱:'''{{x|qp}}, {{x|bitrate}}
第297行: 第305行:
'''預設值:40'''
'''預設值:40'''


 設定mb-tree 率控制和vbv-lookahead使用的幀數。最大允許值 為250
 設定mb-tree 位元 率控制和vbv-lookahead使用的幀數。最大允許值 是250


 對於mb-tree部分,增加幀數帶來更好的效果但 速度 也更慢。mb-tree使用的最大緩衝值 為MIN(rc-lookahead, {{x|keyint}})。
 對於mb-tree部分,增加幀數帶來更好的效果但也 更慢。mb-tree使用的最大緩衝值 是MIN(rc-lookahead, {{x|keyint}})。


 對於vbv-lookahead部分,當使用vbv時增加幀數帶來更好的穩定性和準確度。vbv-lookahead使用的最大值
 對於vbv-lookahead部分,當使用vbv時 增加幀數帶來更好的穩定性和準確度。vbv-lookahead使用的最大值
  MIN(rc-lookahead, MAX({{x|keyint}}, MAX({{x|vbv-maxrate}}, {{x|bitrate}}) / {{x|vbv-bufsize}} * {{x|fps}}))
  MIN(rc-lookahead, MAX({{x|keyint}}, MAX({{x|vbv-maxrate}}, {{x|bitrate}}) / {{x|vbv-bufsize}} * {{x|fps}}))


'''參閱:'''{{x|no-mbtree}}, {{x|vbv-bufsize}}, {{x|vbv-maxrate}}
'''參閱:'''{{x|no-mbtree}}, {{x|vbv-bufsize}}, {{x|vbv-maxrate}}, {{x|sync-lookahead}}


===vbv-maxrate===
===vbv-maxrate===
'''預設值:0'''
'''預設值:0'''


 設定重新填滿VBV緩衝的最大 率。
 設定重新填滿VBV緩衝的最大 位元 率。


VBV會降低品質,所以必要時才使用。
VBV會降低品質,所以必要時才使用。


'''參閱:'''{{x|vbv-bufsize}}, {{x|vbv-init}}, [[X264_Encoding_Suggestions#VBV_Encoding|VBV Encoding Suggestions]]
'''參閱:'''{{x|vbv-bufsize}}, {{x|vbv-init}}, [[X264編碼建議#VBV編碼|VBV 編碼建議]]


===vbv-bufsize===
===vbv-bufsize===
'''預設值:0'''
'''預設值:0'''


 設定VBV緩衝的大小(單位 千位元)。
 設定VBV緩衝的大小(單位 千位元)。


VBV會降低品質,所以必要時才使用。
VBV會降低品質,所以必要時才使用。


'''參閱:'''{{x|vbv-maxsize}}, {{x|vbv-init}}, [[X264_Encoding_Suggestions#VBV_Encoding|VBV Encoding Suggestions]]
'''參閱:'''{{x|vbv-maxrate}}, {{x|vbv-init}}, [[X264編碼建議#VBV編碼|VBV 編碼建議]]


===vbv-init===
===vbv-init===
'''預設值:0.9'''
'''預設值:0.9'''


 設 定VBV 緩衝必須填滿多少 才會開始播放
 設 定在視訊開始播放前VBV 緩衝必須填滿多少。


 如果值小於1,初始的填滿量 :vbv-init * vbv-bufsize。否則該值即 初始的填滿量(單位 千位元)。
 如果值小於1,初始的填滿量 :vbv-init * vbv-bufsize。否則該值即 初始的填滿量(單位 千位元)。


'''參閱:'''{{x|vbv-maxsize}}, {{x|vbv-bufsize}}, [[X264_Encoding_Suggestions#VBV_Encoding|VBV Encoding Suggestions]]
'''參閱:'''{{x|vbv-maxrate}}, {{x|vbv-bufsize}}, [[X264編碼建議#VBV編碼|VBV 編碼建議]]


===crf-max===
===crf-max===
'''預設值:無'''
'''預設值:無'''


 一個類似{{x|qp-max}}的設定, 只是 指定的是最大 率係數而非最大量化值。當使用{{x|crf}}且啟用VBV時此選項才會運作。它阻止x264降低 率係數(亦稱為“品質”)到低於給定的值,即使這樣做會違反VBV的條件約束。此設定主要適用於自訂資料流伺服器。詳細資訊可以參閱[http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52 http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52]。
 一個類似{{x|qpmax}}的設定, 除了 指定的是最大 位元 率係數而非最大量化值。當使用{{x|crf}}且啟用VBV時 此選項才會運作。它阻止x264降低 位元 率係數(亦稱為“品質”)到低於給定的值,即使這樣做會違反VBV的條件約束。此設定主要適用於自訂資料流伺服器。詳細資訊可以參閱[http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52 http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52]。


'''參閱:'''{{x|crf}}, {{x|vbv-maxrate}}, {{x|vbv-bufsize}}
'''參閱:'''{{x|crf}}, {{x|vbv-maxrate}}, {{x|vbv-bufsize}}


===qpmin===
===qpmin===
'''預設值 :10'''
'''預設值 :0'''


 定義x264可以使用的最小量化值。量化值越小,輸出 品質 越接近輸入視訊。到了一定的值,x264的輸出看起來會跟輸入一樣,即使它並不完全相同。通常沒有理由允許x264花費比這更多的位元數在任何特定的巨集區塊上。
 定義x264可以使用的最小量化值。量化值越小,輸出 視訊就 越接近輸入視訊。到了一定的值,x264的輸出 視訊 看起來會跟輸入 視訊 一樣,即使它並不完全相同。通常沒有理由允許x264花費比這更多的位元數在任何特定的巨集區塊上。


 當彈性量化啟用時(預設啟用)不 鼓勵 提高qpmin,因為這會降低幀裡面平 背景區域的品質。
 當彈性量化啟用時(預設啟用) 建議 提高qpmin,因為這會降低幀裡面平 背景區域的品質。


'''參閱:'''{{x|qpmax}}, {{x|ipratio}}
'''參閱:'''{{x|qpmax}}, {{x|ipratio}}
'''关于qpmin的预设值:'''在x264 r1795版本之前,该选项预设值为10。


===qpmax===
===qpmax===
'''預設值 :51'''
'''預設值 :69'''


 定義x264可以使用的最大量化值。預設 值51 是H.264規格可供使用的最大量化值,而且品質極低。此預設值有效地停用了qpmax。如果想要限制x264可以輸出的最低品質,可以將此值設小一點(通 常30~40),但通常並不建議調整此值。
 定義x264可以使用的最大量化值。預設 值69 是H.264規格可供使用的最大量化值,而且品質極低。此預設值有效地停用了qpmax。如果想要限制x264可以輸出的最低品質,可以將此值設小一點(通 常在30~40 範圍是你會想嘗試的值 ),但通常並不建議調整此值。


'''參閱:'''{{x|qpmin}}, {{x|pbratio}}, {{x|crf-max}}
'''參閱:'''{{x|qpmin}}, {{x|pbratio}}, {{x|crf-max}}
第359行: 第369行:
'''預設值:4'''
'''預設值:4'''


 設定兩幀之間量化值的最大變 幅度。
 設定兩幀之間量化值的最大變 幅度。


===ratetol===
===ratetol===
第365行: 第375行:


 此參數有兩個目的:
 此參數有兩個目的:
* 在一階段位元 率編碼時,此設定控制x264可以偏離目標平均位元 率的百分比。可以指定"<code>inf</code>" 來完全停用溢出偵測(overflow detection)。可以設定的最小值 為0.01。值設得越大,x264可以對接近電影結尾的複雜場景作出越好的反應。此目的的度量單位 百分比(例如,1.0等於允許1%的位元 率偏差)。
* 在一階段位元率編碼時,此設定控制x264可以偏離目標平均位元率的百分比。可以指定<code>inf</code>來完全停用溢出偵測(overflow detection)。可以設定的最小值 是0.01。值設得越大,x264可以對接近電影結尾的複雜場景作出越好的反應。此目的的度量單位 百分比(例如,1.0等於允許1%的位元率偏差)。
:: 很多電影(例如動作片)在電影結尾時是最複雜的。因為一階段編碼並不知道這一點,結尾所需的位元數通常被低估。將ratetol設 為inf 可以減輕此情況,藉由允許編碼以更像{{x|crf}}的模式運行,但檔案大小 會暴增。
:: 很多電影(例如動作片)在電影結尾時是最複雜的。因為一階段編碼並不知道這一點,結尾所需的位元數通常被低估。將ratetol設 為<code>inf</code> 可以減輕此情況,藉由允許編碼以更像{{x|crf}}的模式運行,但檔案大小會暴增。
* 當VBV啟用時(即指定了--vbv-開頭的選項),此設定也會影響VBV的強度。
* 當VBV啟用時(即指定了--vbv-開頭的選項),此設定也會影響VBV的強度。 值設得越大,允許VBV在冒著可能違反VBV設定的風險下有越大的波動。此目的的度量單位是任意的。
* When VBV is activated (ie, you're specified --vbv-* options), this setting also affects VBV aggressiveness. Setting this higher allows VBV to fluctuate more at the risk of possibly violating the VBV settings. For this purpose, the unit of measure is arbitrary.
 
===ipratio===
'''預設值:1.40'''
 
修改I幀量化值相比P幀量化值的目標平均增量。越大的值會提高I幀的品質。
 
'''參閱:'''{{x|pbratio}}
 
===pbratio===
'''預設值:1.30'''
 
修改B幀量化值相比P幀量化值的目標平均減量。越大的值會降低B幀的品質。當mbtree啟用時(預設啟用),此設定無作用,mbtree會自動計算最佳值。
 
'''參閱:'''{{x|ipratio}}
 
===chroma-qp-offset===
'''預設值:0'''
 
在編碼時增加色度(chroma)平面量化值的偏移。偏移可以為負數。
 
當使用psy的選項啟用時(psy-rd、psy-trellis),x264會自動將此值再減去2,以補償因這些最佳化而過度地偏好亮度(luma)細節。
 
注意:x264僅在同一量化值編碼亮度平面和色度平面,直到量化值29。在此之後,色度逐步以比亮度低的量被量化,直到亮度在q51和色度在q39為止。此行為是由H.264標準所要求。
 
===aq-mode===
'''預設值:1'''
 
彈性量化模式。沒有AQ時,x264很容易分配不足的位元數到細節較少的部分。AQ是用來更好地分配視訊裡所有巨集區塊之間的可用位元數。此設定變更AQ會重新分配位元數到什麼範圍裡:
: <code>0</code>:完全不使用AQ。
: <code>1</code>:允許AQ重新分配位元數到整個視訊和幀內。
: <code>2</code>:自動變化(Auto-variance)AQ,會嘗試對每幀調整強度。(實驗性的)
 
'''參閱:'''{{x|aq-strength}}
 
===aq-strength===
'''預設值:1.0'''
 
彈性量化強度。設定AQ偏向低細節(平滑)的巨集區塊之強度。不允許為負數。0.0~2.0以外的值不建議。
 
'''參閱:'''{{x|aq-mode}}
 
===pass===
'''預設值:無'''
 
此為兩階段編碼的一個重要設定。它控制x264如何處理{{x|stats}}檔案。有三種設定:
: <code>1</code>:建立一個新的統計資料檔案。在第一階段使用此選項。
: <code>2</code>:讀取統計資料檔案。在最終階段使用此選項。
: <code>3</code>:讀取統計資料檔案並更新。
 
統計資料檔案包含每個輸入幀的資訊,可以輸入到x264以改善輸出品質。構想是執行第一階段來產生統計資料檔案,然後第二階段將建立一個最佳化的視訊編碼。改善的地方主要是從更好的位元率控制中獲益。
 
'''參閱:'''{{x|stats}}, {{x|bitrate}}, {{x|slow-firstpass}}, [[X264統計資料檔案]]
 
===stats===
'''預設值:"x264_2pass.log"'''
 
設定x264讀取和寫入統計資料檔案的位置。
 
'''參閱:'''{{x|pass}}, [[X264統計資料檔案]]
 
===no-mbtree===
'''預設值:無'''
 
停用巨集區塊樹(macroblock tree)位元率控制。使用巨集區塊樹位元率控制會改善整體壓縮率,藉由追蹤跨幀的時間傳播(temporal propagation)並相應地加權。除了已經存在的統計資料檔案之外,多重階段編碼還需要一個新的統計資料檔案。
 
'''建議:'''預設值
 
'''參閱:'''{{x|rc-lookahead}}
 
===qcomp===
'''預設值:0.60'''
 
量化值曲線壓縮係數。0.0是固定位元率,1.0則是固定量化值。
 
當mbtree啟用時,它會影響mbtree的強度(qcomp越大,mbtree越弱)。
 
'''建議:'''預設值
 
'''參閱:'''{{x|cplxblur}}, {{x|qblur}}
 
===cplxblur===
'''預設值:20.0'''
 
以給定的半徑範圍套用高斯模糊(gaussian blur)於量化值曲線。這意味著分配給每個幀的量化值會被它的鄰近幀模糊掉,以限制量化值的波動。
 
'''參閱:'''{{x|qcomp}}, {{x|qblur}}
 
===qblur===
'''預設值:0.5'''
 
在曲線壓縮之後,以給定的半徑範圍套用高斯模糊於量化值曲線。不怎麼重要的設定。
 
'''參閱:'''{{x|qcomp}}, {{x|cplxblur}}
 
===zones===
'''預設值:無'''
 
調整視訊的特定片段之設定。可以修改每區段的大多數x264選項。
* 一個單一區段的形式為<起始幀>,<結束幀>,<選項>。
* 多個區段彼此以"/"分隔。
 
'''選項:'''
 
這兩個是特殊選項。每區段只能設定其中一個,而且如果有設定其中一個,它必須為該區段列出的第一個選項:
* b=<浮點數> 套用位元率乘數在此區段。在額外調整高動態和低動態場景時很有用。
* q=<整數> 套用固定量化值在此區段。在套用於一段範圍的幀時很有用。
 
其他可用的選項如下:
* ref=<整數>
* b-bias=<整數>
* scenecut=<整數>
* no-deblock
* deblock=<整數>:<整數>
* deadzone-intra=<整數>
* deadzone-inter=<整數>
* direct=<字串>
* merange=<整數>
* nr=<整數>
* subme=<整數>
* trellis=<整數>
* (no-)chroma-me
* (no-)dct-decimate
* (no-)fast-pskip
* (no-)mixed-refs
* psy-rd=<浮點數>:<浮點數>
* me=<字串>
* no-8x8dct
* b-pyramid=<字串>
* crf=<浮點數>
 
限制:
* 一個區段的參照幀數無法超過{{x|ref}}所指定的大小。
* 無法開啟或關閉scenecut;如果{{x|scenecut}}最初為開啟(>0),則只能改變scenecut的大小。
* 如果使用{{x|me}}<code> esa</code>/<code>tesa</code>,merange無法超過最初所指定的大小。
* 如果{{x|subme}}最初指定為0,則無法變更subme。
* 如果{{x|me}}最初指定為dia、hex或umh,則無法將me設為esa為tesa。
 
'''範例:'''0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000
 
'''建議:'''預設值
 
===qpfile===
'''預設值:無'''
 
手動覆寫標準的位元率控制。指定一個檔案,為指定的幀賦予量化值和幀類型。格式為“幀號 幀類型 量化值”。例如:
0 I 18 < IDR (key) I-frame
1 P 18 < P-frame
2 B 18 < Referenced B-frame
3 i 18 < Non-IDR (non-key) I-frame
4 b 18 < Non-referenced B-frame
5 K 18 < Keyframe*
* 不需要指定每個幀。
* 使用-1作為量化值允許x264自行選擇最佳的量化值,在只需設定幀類型時很有用。
* 在指定了大量的幀類型和量化值時仍然讓x264間歇地自行選擇,會降低x264的效能。
* "Keyframe"是一個泛用關鍵幀/搜尋點類型,如果{{x|open-gop}}未啟用則等同於一個IDR I幀,否則等同於一個加上Recovery Point SEI旗標的非IDR I幀。
 
==分析==
===partitions===
'''預設值:p8x8,b8x8,i8x8,i4x4'''
 
H.264視訊在壓縮過程中劃分為16x16的巨集區塊。這些區塊可以進一步劃分為更小的分割,這就是此選項要控制的部分。
 
此選項可以啟用個別分割。分割依不同幀類型(I、P、B)啟用。
 
可用的分割:<code>p8x8, p4x4, b8x8, i8x8, i4x4, none, all</code>
* I:i8x8、i4x4。
* P:p8x8(亦會啟用p16x8/p8x16)、p4x4(亦會啟用p8x4/p4x8)。
* B:b8x8(亦會啟用b16x8/b8x16)。
 
p4x4通常不怎麼有用,而且性價比極低。
 
'''參閱:'''{{x|no-8x8dct}}
 
===direct===
'''預設值:spatial'''
 
設定"direct"動態向量(motion vectors)的預測模式。有兩種模式可用:<code>spatial</code>和<code>temporal</code>。可以指定<code>none</code>來停用direct動態向量,或指定<code>auto</code>來允許x264在兩者之間切換為適合的模式。如果設為<code>auto</code>,x264會在編碼結束時輸出使用情況的資訊。<code>auto</code>最適合用於兩階段編碼,但也可用於一階段編碼。在第一階段<code>auto</code>模式,x264持續記錄每個方法執行到目前為止的好壞,並從該記錄挑選下一個預測模式。注意,僅在第一階段有指定<code>auto</code>時,才應該在第二階段指定<code>auto</code>;如果第一階段不是指定<code>auto</code>,第二階段將會預設為<code>temporal</code>。<code>none</code>模式會浪費位元數,因此強烈不建議。
 
'''建議:'''auto
 
===no-weightb===
'''預設值:無'''
 
H.264允許“加權”B幀的參照,它允許變更每個參照影響預測圖片的程度。此選項停用該功能。
 
'''建議:'''預設值
 
===weightp===
'''預設值:2'''
 
使x264能夠使用明確加權預測(explicit weighted prediction)來改善P幀的壓縮率。亦改善淡入/淡出的品質。模式越高越慢。
 
注意:在為Adobe Flash編碼時,將值設為1,否則它的解碼器會產生不自然痕跡(artifacts)。Flash 10.1修正了此bug。
 
模式:
: <code>0</code>:停用。
: <code>1</code>:簡易:分析淡入/淡出,但不分析重複參照幀。
: <code>2</code>:智慧:分析淡入/淡出和重複參照幀。
 
===me===
'''預設值:hex'''
 
設定全像素(full-pixel)動態估算(motion estimation)的方法。有五個選項:
: <code>dia</code>(diamond):最簡單的搜尋方法,起始於最佳預測器(predictor),檢查上、左、下、右方一個像素的動態向量,挑選其中最好的一個,並重複此過程直到它不再找到任何更好的動態向量為止。
: <code>hex</code>(hexagon):由類似策略組成,除了它使用周圍6點範圍為2的搜尋,因此叫做六邊形。它比<code>dia</code>更有效率且幾乎沒有變慢,因此作為一般用途的編碼是個不錯的選擇。
: <code>umh</code>(uneven multi-hex):比hex更慢,但搜尋複雜的多六邊形圖樣以避免遺漏難以找到的動態向量。不像hex和dia,merange參數直接控制umh的搜尋半徑,允許增加或減少廣域搜尋的大小。
: <code>esa</code>(exhaustive):一種在merange內整個動態搜尋空間的高度最佳化智慧搜尋。雖然速度較快,但數學上相當於搜尋該區域每個單一動態向量的暴力(bruteforce)方法。不過,它仍然比UMH還要慢,而且沒有帶來很大的好處,所以對於日常的編碼不是特別有用。
: <code>tesa</code>(transformed exhaustive):一種嘗試接近在每個動態向量執行Hadamard轉換法比較的效果之演算法,就像exhaustive,但效果好一點而速度慢一點。
 
'''參閱:'''{{x|merange}}
 
===merange===
'''預設值:16'''
 
merange控制動態搜尋的最大範圍(單位是像素)。對於hex和dia,範圍限制在4~16。對於umh和esa,它可以增加到超過預設值16來允許範圍更廣的動態搜尋,對於HD視訊和高動態鏡頭很有用。注意,對於umh、esa和tesa,增加merange會大幅減慢編碼速度。
 
極大的merange(>64)不大可能找到任何新的動態向量是有用的,所以在某些情況下它可能非常輕微地降低壓縮率。
 
'''參閱:'''{{x|me}}
 
===mvrange===
'''預設值:-1 (自動)'''
 
設定動態向量的最大(垂直)範圍(單位是像素)。預設值依level不同:
* Level 1/1b:64。
* Level 1.1~2.0:128。
* Level 2.1~3.0:256。
* Level 3.1+:512。
 
注意:如果想要手動覆寫mvrange,在設定時從上述值減去0.25(例如<code>--mvrange 127.75</code>)。
 
'''建議:'''預設值
 
===mvrange-thread===
'''預設值:-1 (自動)'''
 
設定執行緒之間的最小動態向量緩衝。不要碰它。
 
'''建議:'''預設值
 
===subme===
'''預設值:7'''
 
設定子像素(subpixel)估算複雜度。值越高越好。層級1~5只是控制子像素細分(refinement)強度。層級6為模式決策啟用RDO,而層級8為動態向量和內部預測模式啟用RDO。RDO層級明顯慢於先前的層級。
 
使用小於2的值不但會啟用較快且品質較低的lookahead模式,而且導致較差的{{x|scenecut}}決策,因此不建議。
 
可用的值:
: <code>0</code>:Fullpel only
: <code>1</code>:QPel SAD 1 iteration
: <code>2</code>:QPel SATD 2 iterations
: <code>3</code>:HPel on MB then QPel
: <code>4</code>:Always QPel
: <code>5</code>:Multi QPel + bi-directional motion estimation
: <code>6</code>:RD on I/P frames
: <code>7</code>:RD on all frames
: <code>8</code>:RD refinement on I/P frames
: <code>9</code>:RD refinement on all frames
: <code>10</code>:QP-RD (requires {{x|trellis}}=2, {{x|aq-mode}}>0)
: <code>11</code>:Full RD: disable all early terminations
 
'''建議:'''預設值,或者更高,除非速度非常重要
 
===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 http://forum.doom9.org/showthread.php?t=138293]。
 
===no-psy===
'''預設值:無'''
 
停用所有會降低PSNR或SSIM的視覺最佳化。這也會停用一些無法透過x264的命令列引數設定的內部psy最佳化。
 
'''建議:'''預設值
 
===no-mixed-refs===
'''預設值:無'''
 
混合參照會以每個8x8分割為基礎來選取參照,而不是以每個巨集區塊為基礎。當使用多個參照幀時這會改善品質,雖然要損失一些速度。設定此選項會停用該功能。
 
'''建議:'''預設值
 
'''參閱:'''{{x|ref}}
 
===no-chroma-me===
'''預設值:無'''
 
通常,亮度和色度兩個平面都會做動態估算。此選項停用色度動態估算來提高些微速度。
 
'''建議:'''預設值
 
===no-8x8dct===
'''預設值:無'''
 
彈性8x8離散餘弦轉換(DCT)使x264能夠彈性使用I幀的8x8轉換。此選項停用該功能。
 
'''建議:'''預設值
 
===trellis===
'''預設值:1'''
 
執行[http://en.wikipedia.org/wiki/Trellis_quantization Trellis quantization]來提高效率。
: <code>0</code>:停用。
: <code>1</code>:只在一個巨集區塊的最終編碼上啟用。
: <code>2</code>:在所有模式決策上啟用。
 
在巨集區塊時提供了速度和效率之間的良好平衡。在所有決策時則更加降低速度。
 
'''建議:'''預設值
 
'''注意:'''需要{{x|no-cabac|cabac}}
 
===no-fast-pskip===
'''預設值:無'''
 
停用P幀的早期略過偵測(early skip detection)。在低位元率時,適中地提高品質但要損失很多速度。在高位元率時,對速度和品質的影響都微不足道。
 
'''建議:'''預設值
 
===no-dct-decimate===
'''預設值:無'''
 
DCT Decimation會捨棄它認為“不必要的”DCT區塊。這會改善編碼效率,而降低的品質通常微不足道。設定此選項會停用該功能。
 
'''建議:'''預設值
 
===nr===
'''預設值:0'''
 
執行快速的雜訊削減(noise reduction)。根據此值估算影片的雜訊,並藉由在量化之前捨棄小細節來嘗試移除雜訊。這可能比不上優良的外部雜訊削減濾鏡的品質,但它執行得非常快。
 
'''建議:'''預設值,或者100~1000
 
===deadzone-inter/intra===
'''預設值:21/11'''
 
設定inter/intra亮度量化反應區(deadzone)的大小。反應區的範圍應該在0~32。此值設定x264會任意捨棄而不嘗試保留細微細節的層級。非常細微的細節既難以看見又耗費位元數,捨棄這些細節可以不用浪費位元數在視訊的此類低收益畫面上。反應區與{{x|trellis}}[http://forum.doom9.org/showthread.php?p=1031142#post1031142 不相容]。
 
'''建議:'''預設值
 
===cqm===
'''預設值:flat'''
 
設定所有自訂量化矩陣(custom quantization matrices)為內建的預設之一。內建預設有<code>flat</code>和<code>JVT</code>。
 
'''建議:'''預設值
 
'''參閱:'''{{x|cqmfile}}
 
===cqmfile===
'''預設值:無'''
 
從一個指定的JM相容檔案來設定自訂量化矩陣。覆寫所有其他--cqm開頭的選項。
 
'''建議:'''預設值
 
'''參閱:'''{{x|cqm}}
 
===cqm4* / cqm8*===
'''預設值:無'''
 
: <code>--cqm4</code>:設定所有4x4量化矩陣。需要16個以逗號分隔的整數清單。
: <code>--cqm8</code>:設定所有8x8量化矩陣。需要64個以逗號分隔的整數清單。
: <code>--cqm4i</code>、<code>--cqm4p</code>、<code>--cqm8i</code>、<code>--cqm8p</code>:設定亮度和色度量化矩陣。
: <code>--cqm4iy</code>、<code>--cqm4ic</code>、<code>--cqm4py</code>、<code>--cqm4pc</code>:設定個別量化矩陣。
 
'''建議:'''預設值
 
==視訊可用性資訊==
這些選項在輸出資料流裡設定一個旗標,旗標可以被解碼器讀取並採取可能的動作。值得一提的是大多數選項在大多數情況下毫無意義,而且通常被解碼器忽略。
 
===overscan===
'''預設值:undef'''
 
如何處理溢出掃描(overscan)。溢出掃描的意思是裝置只顯示影像的一部分。
 
可用的值:
: <code>undef</code>:未定義。
: <code>show</code>:指示要顯示整個影像。理論上如果設了<code>show</code>則解碼器必須遵守。
: <code>crop</code>:指示此影像適合在有溢出掃描功能的裝置上播放。解碼器不一定遵守。
 
'''建議:'''在編碼之前裁剪(Crop)視訊,然後如果裝置支援就使用<code>show</code>,否則不用理會此選項
 
===videoformat===
'''預設值:undef'''
 
指示此視訊在編碼/數位化之前是什麼格式。
 
可用的值:<code>component, pal, ntsc, secam, mac, undef</code>
 
'''建議:'''來源視訊的格式,或者未定義
 
===range===
'''預設值:auto'''
 
指示亮度和色度層級的輸出範圍是有限範圍或全範圍。如果設為<code>TV</code>,則會使用有限範圍。如果設為<code>auto</code>,則會使用與輸入視訊相同的範圍。
 
注意:如果range和{{x|input-range}}不同,則會進行範圍轉換。
 
詳細資訊可以參閱[http://en.wikipedia.org/wiki/YCbCr http://en.wikipedia.org/wiki/YCbCr]。
 
'''建議:'''預設值
 
'''參閱:'''{{x|input-range}}
 
===colorprim===
'''預設值:undef'''
 
設定以什麼色彩原色轉換成RGB。
 
可用的值:<code>undef, bt709, bt470m, bt470bg, smpte170m, smpte240m, film</code>
 
詳細資訊可以參閱[http://en.wikipedia.org/wiki/RGB_color_space http://en.wikipedia.org/wiki/RGB_color_space]和[http://en.wikipedia.org/wiki/YCbCr http://en.wikipedia.org/wiki/YCbCr]。
 
'''建議:'''預設值,除非你知道來源使用什麼色彩原色
 
===transfer===
'''預設值:undef'''
 
設定要使用的光電子(opto-electronic)傳輸特性(設定用於修正的色差補正(gamma) 曲線)。
 
可用的值:<code>undef, bt709, bt470m, bt470bg, linear, log100, log316, smpte170m, smpte240m</code>
 
詳細資訊可以參閱[http://en.wikipedia.org/wiki/Gamma_correction http://en.wikipedia.org/wiki/Gamma_correction]。
 
'''建議:'''預設值,除非你知道來源使用什麼傳輸特性
 
===colormatrix===
'''預設值:undef'''
 
設定用於從RGB原色中取得亮度和色度的矩陣係數。
 
可用的值:<code>undef, bt709, fcc, bt470bg, smpte170m, smpte240m, GBR, YCgCo</code>
 
詳細資訊可以參閱[http://en.wikipedia.org/wiki/YCbCr http://en.wikipedia.org/wiki/YCbCr]。
 
'''建議:'''來源使用的矩陣,或者預設值
 
===chromaloc===
'''預設值:0'''
 
設定色度採樣位置(如[http://www.itu.int/rec/T-REC-H.264/en ITU-T規格]的附錄E所定義)
 
可用的值:<code>0~5</code>
 
參閱[http://git.videolan.org/?p=x264.git;a=blob;f=doc/vui.txt x264的vui.txt]。
 
'''建議:'''
* 如果是從正確次採樣4:2:0的MPEG1轉碼,而且沒有做任何色彩空間轉換,則應該將此選項設為1。
* 如果是從正確次採樣4:2:0的MPEG2轉碼,而且沒有做任何色彩空間轉換,則應該將此選項設為0。
* 如果是從正確次採樣4:2:0的MPEG4轉碼,而且沒有做任何色彩空間轉換,則應該將此選項設為0。
* 否則,維持預設值。
 
===nal-hrd===
'''預設值:none'''
 
標誌HRD資訊。這是藍光資料流、電視廣播和幾個其他專業範圍所需要的。
 
可用的值:
: <code>none</code>:不指定HRD資訊。
: <code>vbr</code>:指定HRD資訊。
: <code>cbr</code>:指定HRD資訊並以{{x|bitrate}}指定的位元率來封裝位元資料流。需要{{x|bitrate}}模式的位元率控制。
 
'''建議:'''預設值,除非需要標誌此資訊
 
'''參閱:'''{{x|vbv-bufsize}}, {{x|vbv-maxrate}}, {{x|aud}}
 
===pic-struct===
'''預設值:無'''
 
強制在Picture Timing SEI裡傳送pic_struct。
 
當使用{{x|pulldown}}或{{x|tff}}/{{x|bff}}時會自動啟用。
 
'''建議:'''預設值
 
===crop-rect===
'''預設值:無'''
 
指定一個位元資料流層級的裁剪矩形。如果想要解碼器在播放時裁剪,但因為某些原因不想要裁剪視訊再讓x264編碼,則可以使用此選項。指定的值是在播放時應該被裁剪的像素。
 
==輸入/輸出==
===output===
'''預設值:無'''
 
指定輸出檔名。指定的副檔名決定視訊的輸出格式。如果副檔名無法辨識,則預設輸出格式是raw視訊資料流(通常儲存為.264副檔名)。
 
特殊位置<code>NUL</code>(Windows)或<code>/dev/null</code>(Unix)指定輸出視訊應該被捨棄。這在使用{{x|pass}}<code> 1</code>時特別有用,因為你在乎的輸出資料只有{{x|stats}}。
 
===muxer===
'''預設值:auto'''
 
指定要輸出什麼格式。
 
可用的值:<code>auto, raw, mkv, flv, mp4</code>
 
<code>auto</code>選項會根據提供的輸出檔名挑選一個多工器(muxer)。
 
'''建議:'''預設值
 
'''參閱:'''{{x|output}}
 
===demuxer===
'''預設值:auto'''
 
設定x264要使用什麼解多工器(demuxer)和解碼器來剖析輸入視訊。
 
可用的值:<code>auto, raw, y4m, avs, lavf, ffms</code>
 
如果輸入檔案有raw、y4m或avs副檔名,則x264會使用相關的解多工器來讀取檔案。標準輸入會使用raw解多工器。否則,x264會嘗試以ffms來開啟檔案,然後再嘗試以lavf來開啟檔案,最後開啟失敗。
 
"lavf"和"ffms"選項需要x264以分別的程式庫編譯。如果使用到兩者之一,x264會從輸入檔案帶入時間碼(timecodes),條件是不能輸出為raw。這有效地使x264感知VFR。其他選項可以指定{{x|fps}}為固定幀率,或者指定{{x|tcfile-in}}為變動幀率。
 
'''建議:'''預設值
 
'''參閱:'''{{x|input}}, {{x|muxer}}
 
===input-csp===
'''預設值:無'''
 
告訴x264 raw視訊輸入是什麼色彩空間。支援的色彩空間可以從<code>x264 --fullhelp</code>的說明裡得知。
 
'''參閱:'''{{x|input-res}}, {{x|fps}}
 
===output-csp===
'''預設值:i420'''
 
告訴x264要輸出什麼色彩空間。
 
可用的值:<code>i420, i422, i444, rgb</code>
 
'''參閱:'''{{x|input-csp}}
 
===input-depth===
'''預設值:無'''
 
指定raw視訊輸入的位元深度。
 
===input-range===
'''預設值:auto'''
 
指定來源的亮度和色度層級範圍。可以設定<code>TV</code>為有限範圍或<code>PC</code>為全範圍。
 
注意:如果{{x|range}}和input-range不同,則會進行範圍轉換。
 
'''建議:'''預設值,除非你知道來源是TV或PC層級
 
'''參閱:'''{{x|range}}
 
===input-res===
'''預設值:無'''
 
指定raw視訊輸入的解析度。語法是<code>--input-res 720x576</code>。
 
'''參閱:'''{{x|input-csp}}, {{x|fps}}
 
===index===
'''預設值:無'''
 
一個只在使用ffms {{x|demuxer}}時才會生效的選擇性設定。為ffms指定一個檔案來寫入輸入視訊的索引資料,之後的編碼可以參照此檔案來免去重新建立索引的必要。通常不需要特別指定,索引進程與視訊編碼相比並不慢。
 
'''建議:'''預設值,除非想要節省建立索引的幾分鐘時間
 
'''參閱:'''{{x|demuxer}}, [http://ffmpegsource.googlecode.com/svn/trunk/doc/ffms2-api.html FFMS2 API文件]
 
===sar===
'''預設值:無'''
 
指定輸入視訊的採樣長寬比(SAR:'''S'''ample '''A'''spect '''R'''atio)。語法是<code>--sar 40:33</code>。
 
此設定與幀尺寸結合可以用來編碼anamorphic的輸出視訊,藉由以下公式來決定顯示長寬比(DAR:'''D'''isplay '''A'''spect '''R'''atio):DAR = SAR x width/height
 
詳細資訊可以參閱[http://en.wikipedia.org/wiki/Aspect_ratio_%28image%29#Distinctions http://en.wikipedia.org/wiki/Aspect_ratio_%28image%29#Distinctions]
 
'''建議:'''如果有使用調整大小(resize)濾鏡且編碼anamorphic的輸入視訊,則可能需要設定此選項
 
===fps===
'''預設值:自動'''
 
指定視訊幀率為浮點數(29.97)、比率(30000/1001)或整數(30)。當使用y4m、avs、ffms或lavf解多工器時,x264會使用從輸入資料流標頭(header)偵測到的幀率,否則使用25作為幀率。設定此選項會自動啟用{{x|force-cfr}}。
 
如果使用raw YUV輸入且{{x|bitrate}}為主的位元率控制,則需要使用此參數或{{x|tcfile-in}}來指定正確的幀率。否則x264不會達到你指定的目標位元率。
 
===seek===
'''預設值:無'''
 
指定要編碼的初始幀,允許編碼從源的任一時間點開始。
 
'''建議:'''預設值
 
===frames===
'''預設值:無'''
 
指定要編碼的最大幀數,允許編碼在源的任一時間點結束。
 
'''建議:'''預設值
 
===level===
'''預設值:自動'''
 
在輸出的位元資料流裡設定level旗標(如H.264標準的[http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels Annex A]所定義)。可允許的level為:<code>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 5.2</code>。
 
如果在命令列中沒有指定<code>--level</code>,則x264會嘗試自動偵測level。此偵測並不完美,而且如果沒有使用VBV則可能會低估level。x264也會自動限制DPB大小來保持與所選level的相容性(除非也手動指定{{x|ref}})。注意:指定level並不會自動設定{{x|vbv-maxrate}}或{{x|vbv-bufsize}},不過如果超過level特定的屬性則x264會發出警告。
 
'''我該挑選什麼Level?'''
 
Level 4.1通常被認為是桌上型消費性硬體可以支援的最高level。藍光只支援level 4.1,而且許多非行動裝置像Xbox 360指定level 4.1為官方支援的最高level。行動裝置像iPhone/Android則完全是另一回事。
 
'''建議:'''預設值,除非針對特定裝置
 
===bluray-compat===
'''預設值:無'''
 
修改x264的選項以保證與藍光播放機有更好的相容性。僅在視訊會於藍光硬體播放機上播放時才需要此選項。
 
此設定變更一些選項:
* 限制{{x|weightp}}不超過1
* 設定{{x|min-keyint}}為1
* 停用{{x|intra-refresh}}
* 等等…
 
它也啟用了x264內部的一些特殊處理。例如:
* GOP/mini-GOP tweaks to size and reference lists.
* More verbose slice headers
 
'''建議:'''預設值,除非針對藍光硬體播放機做編碼
 
===verbose===
'''預設值:無'''
 
顯示每個已編碼幀的統計資料。
 
'''建議:'''預設值
 
===no-progress===
'''預設值:無'''
 
停用編碼時的進度指示器。
 
'''建議:'''預設值
 
===quiet===
'''預設值:無'''
 
啟用安靜模式,使x264不顯示狀態訊息。
 
'''建議:'''預設值
 
===log-level===
'''預設值:info'''
 
手動指定x264cli和libx264的記錄等級。
 
可用的值:<code>none, error, warning, info, debug</code>
 
'''建議:'''預設值
 
===psnr===
'''預設值:無'''
 
啟用[http://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio PSNR]計算,在編碼完成時報告。此計算會降低一些速度。
 
'''建議:'''預設值
 
===ssim===
'''預設值:無'''
 
啟用[http://en.wikipedia.org/wiki/Structural_similarity SSIM]計算,在編碼完成時報告。此計算會降低一些速度。
 
'''建議:'''預設值

2013年1月7日 (一) 16:23的最新版本

本頁說明所有x264參數之目的和用法。參數的排列相同於在x264 --fullhelp出現的順序。

參閱:X264統計資料輸出X264統計資料檔案X264編碼建議

x264設定

說明

x264帶有一些內置的文件。要閱讀此說明,執行x264 --helpx264 --longhelpx264 --fullhelp。越後面的選項會提供越詳細的資訊。每条选项的具体命令行帮助界面正在开发中。

輸入

以一個位置引數指定輸入的視訊。例如:

x264.exe --output NUL C:\input.avs
x264 --output /dev/null ~/input.y4m

當輸入視訊是原始YUV格式時,還必須告訴x264視訊的解析度。你可能也要使用--fps來指定幀率:

x264.exe --output NUL --fps 25 --input-res 1280x720 D:\input.yuv 
x264 --output /dev/null --fps 30000/1001 --input-res 640x480 ~/input.yuv

详细的命令行使用方法参见X264使用介绍

預設

為了減少使用者花費時間和精力在命令列上而設計的一套系統。這些設定切換了什麼選項可以從x264 --fullhelp的說明裡得知。

profile

預設值:無

限制輸出資料流的profile。如果指定了profile,它會覆寫所有其他的設定。所以如果指定了profile,將會保證得到一個相容的資料流。如果設了此選項,將會無法使用無失真(lossless)編碼(--qp 0--crf 0)。

如果播放裝置僅支援某個profile,則應該設此選項。大多數解碼器都支援High profile,所以沒有設定的必要。

可用的值:baseline, main, high, high10, high422, high444

preset

預設值:medium

變更選項,以權衡壓縮效率和編碼速度。如果指定了preset,變更的選項將會在套用所有其他的參數之前套用。

通常應該將此選項設為所能忍受的最慢一個。

可用的值:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo

tune

預設值:無

調整選項,以進一步最佳化為視訊的內容。如果指定了tune,變更的選項將會在--preset之後,但所有其他的參數之前套用。

如果視訊的內容符合其中一個可用的調整值,則可以使用此選項,否則不要使用。

可用的值:film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency

slow-firstpass

預設值:無

使用--pass 1會在解析命令列的最後套用以下設定:

可以使用--slow-firstpass來停用此功能。

注意:使用--preset placebo也會啟用slow-firstpass。

參閱:--pass

幀類型選項

keyint

預設值:250

設定x264輸出的資料流之最大IDR幀(亦稱為關鍵幀)間隔。可以指定infinite讓x264永遠不要插入非場景變更的IDR幀。

IDR幀是資料流的“分隔符號”,所有幀都無法從IDR幀的另一邊參照資料。因此,IDR幀也是I幀,所以它們不從任何其他幀參照資料。這意味著它們可以用作視訊的搜尋點(seek points)。

注意,I幀通常明顯大於P/B幀(在低動態場景通常為10倍大或更多),所以當它們與極低的VBV設定合併使用時會打亂位元率控制。在這些情況下,研究--intra-refresh

預設值對於大多數視訊沒啥問題。在為藍光、廣播、即時資料流或某些其他特殊情況編碼時,可能需要更小的GOP長度(通常等於幀率)。

參閱:--min-keyint, --scenecut, --intra-refresh

min-keyint

預設值:自動 (MIN(--keyint / 10, --fps))

設定IDR幀之間的最小長度。

IDR幀的說明可以參閱--keyint。過小的keyint距離會導致“不正確的”IDR幀位置(例如閃屏場景)。此選項限制在每個IDR幀之後,要有多少幀才可以再有另一個IDR幀的最小長度。

min-keyint的最大允許值是--keyint/2+1。

建議:預設值,或者等於幀率

參閱:--keyint, --scenecut

no-scenecut

預設值:無

完全停用彈性I幀決策(adaptive I-frame decision)。

參閱:--scenecut

scenecut

預設值:40

設定配置I/IDR幀的閾值(場景變更偵測)。

x264為每一幀計算一個度量值,來估計與前一幀的不同程度。如果該值低於scenecut,則算偵測到一個“場景變更”。如果此時與最近一個IDR幀的距離低於--min-keyint,則放置一個I幀,否則放置一個IDR幀。越大的scenecut值會增加偵測到場景變更的數目。場景變更是如何比較的詳細資訊可以參閱http://forum.doom9.org/showthread.php?t=121116

將scenecut設為0相當於設定--no-scenecut

建議:預設值

參閱:--keyint, --min-keyint, --no-scenecut

intra-refresh

預設值:無

停用IDR幀,作為替代x264會為每隔--keyint個幀的每個巨集區塊(macroblock)使用內部編碼(intra coding)。區塊是以一個水平捲動的行刷新,稱為刷新波(refresh wave)。這有利於低延遲的資料流,使它有可能比標準的IDR幀達到更加固定的幀大小。它也增強了視訊資料流對封包遺失的恢復能力。此選項會降低壓縮效率,因此必要時才使用。

有趣的事:

  • 第一幀仍然是IDR幀。
  • 內部區塊(Intra-blocks)僅處於P幀裡,刷新波在一或多個B幀後的第一個P幀更廣泛。
  • 壓縮效率的損失主要來自於在刷新波上左側(新)的巨集區塊無法參照右側(舊)的資料。

bframes

預設值:3

設定x264可以使用的最大並行B幀數。

沒有B幀時,一個典型的x264資料流有著像這樣的幀類型:IPPPPP...PI。當設了--bframes 2時,最多兩個連續的P幀可以被B幀取代,就像:IBPBBPBPPPB...PI。

B幀類似於P幀,除了B幀還能從它之後的幀做動態預測(motion prediction)。就壓縮比來說效率會大幅提高。它們的平均品質是由--pbratio所控制。

有趣的事:

  • x264還區分兩種不同種類的B幀。"B"是代表一個被其他幀作為參照幀的B幀(參閱--b-pyramid),而"b"則代表一個不被其他幀作為參照幀的B幀。如果看到一段混合的"B"和"b",原因通常與上述有關。當差別並不重要時,通常就以"B"代表所有B幀。
  • x264是如何為每個候選幀選定為P幀或B幀的詳細資訊可以參閱http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064。在此情況下,幀類型看起來會像這樣(假設--bframes 3):IBBBPBBBPBPI。

參閱:--b-bias, --b-pyramid, --ref, --pbratio, --partitions, --weightb

b-adapt

預設值:1

設定彈性B幀配置決策演算法。此設定控制x264如何決定要放置P幀或B幀。

0:停用,總是挑選B幀。這與舊的no-b-adapt設定相同作用。
1:“快速”演算法,較快,越大的--bframes值會稍微提高速度。當使用此模式時,基本上建議搭配--bframes 16使用。
2:“最佳”演算法,較慢,越大的--bframes值會大幅降低速度。

注意:對於多重階段(multi-pass)編碼,僅在第一階段(first pass)才需要此選項,因為幀類型在此時已經決定完了。

b-bias

預設值:0

控制使用B幀而不使用P幀的可能性。大於0的值增加偏向B幀的加權,而小於0的值則相反。此值是一個任意計量。範圍是從-100到100。100並不保證全是B幀(要全是B幀該使用--b-adapt 0),而-100也不保證全是P幀。

僅在你認為能比x264做出更好的位元率控制決策時才使用此選項。

參閱:--bframes, --ipratio

b-pyramid

預設值:normal

允許B幀作為其他幀的參照幀。沒有此設定時,幀只能參照I/P幀。雖然I/P幀因其較高的品質作為參照幀更有價值,但B幀也是很有用的。作為參照幀的B幀會得到一個介於P幀和普通B幀之間的量化值。b-pyramid需要至少兩個以上的--bframes才會運作。

如果是在為藍光編碼,須使用nonestrict

none:不允許B幀作為參照幀。
strict:每minigop允許一個B幀作為參照幀,這是藍光標準強制執行的限制。
normal:每minigop允許多個B幀作為參照幀。

參閱:--bframes, --ref, --no-mixed-refs

open-gop

預設值:無

open-gop是一個提高效率的編碼技術。某些解碼器不完全支援open-gop資料流,這就是為什麼它並未預設為啟用。你應該測試所有可能用來撥放此資料流的解碼器,或者(假如可能的話)等到open-gop支援已全面普及。

open-gop的說明可以參閱http://forum.doom9.org/showthread.php?p=1300124#post1300124

no-cabac

預設值:無

停用彈性內容的二進位算數編碼(CABAC:Context Adaptive Binary Arithmetic Coder)資料流壓縮,切換回效率較低的彈性內容的可變長度編碼(CAVLC:Context Adaptive Variable Length Coder)系統。大幅降低壓縮效率(通常10~20%)和解碼的硬體需求。

ref

預設值:3

控制解碼圖片緩衝(DPB:Decoded Picture Buffer)的大小。範圍是從0到16。總之,此值是每個P幀可以使用先前多少幀作為參照幀的數目(B幀可以使用的數目要少一或兩個,取決於它們是否作為參照幀)。可以被參照的最小ref數是1。

還要注意的是,H.264規格限制了每個level的DPB大小。如果遵守Level 4.1規格,720p和1080p視訊的最大ref數分別是9和4。

參閱:--b-pyramid, --no-mixed-refs, --level

no-deblock

預設值:無

完全停用循環濾鏡(loop filter)。不建議。

參閱:--deblock

deblock

預設值:0:0

控制循環濾鏡(亦稱為持續循環去區塊(inloop deblocker)),這是H.264標準的一部分。就性價比來說非常有效率。

可以在http://forum.doom9.org/showthread.php?t=109747找到loop濾鏡的參數是如何運作的說明(參閱第一個帖子和akupenguin的回覆)。

參閱:--no-deblock

slices

預設值:無

設定每幀的切片數,而且強制為矩形切片(會被--slice-max-size--slice-max-mbs覆寫)。

如果是在為藍光編碼,將值設為4。否則,不要使用此選項,除非你知道真的有必要。

參閱:--slice-max-size, --slice-max-mbs

slice-max-size

預設值:無

設定最大的切片大小(單位是位元組),包括估計的NAL額外負荷(overhead)。(目前與--interlaced不相容)

參閱:--slices

slice-max-mbs

預設值:無

設定最大的切片大小(單位是巨集區塊)。(目前與--interlaced不相容)

參閱:--slices

tff

預設值:無

啟用交錯式編碼並指定頂場優先(top field first)。x264的交錯式編碼使用MBAFF,本身效率比漸進式編碼差。出於此原因,僅在打算於交錯式顯示器上播放視訊時,才應該編碼為交錯式(或者視訊在送給x264之前無法進行去交錯)。此選項會自動啟用--pic-struct

bff

預設值:無

啟用交錯式編碼並指定底場優先(bottom field first)。詳細資訊可以參閱--tff

constrained-intra

預設值:無

啟用限制的內部預測(constrained intra prediction),這是SVC編碼的基礎層(base layer)所需要的。既然EveryoneTM忽略SVC,你同樣可以忽略此選項。

pulldown

預設值:none

使用其中一個預設模式將漸進式、固定幀率的輸入資料流標誌上軟膠捲過帶(soft telecine)。軟膠捲過帶在http://trac.handbrake.fr/wiki/Telecine有更詳細的解釋。

可用的預設:none, 22, 32, 64, double, triple, euro

指定除了none以外的任一模式會自動啟用--pic-struct

fake-interlaced

預設值:無

將資料流標記為交錯式,即使它並未以交錯式來編碼。用於編碼25p和30p為符合藍光標準的視訊。

frame-packing

預設值:無

如果在編碼3D視訊,此參數設定一個位元資料流(bitstream)旗標,用來告訴解碼器此3D視訊是如何封裝的。相關的值和它們的意義可以從x264 --fullhelp的說明裡得知。

位元率控制

qp

預設值:無

三種位元率控制方法之一。設定x264以固定量化值(Constant Quantizer)模式來編碼視訊。這裡給的值是指定P幀的量化值。I幀和B幀的量化值則是從--ipratio--pbratio中取得。CQ模式把某個量化值作為目標,這意味著最終檔案大小是未知的(雖然可以透過一些方法來準確地估計)。將值設為0會產生無失真輸出。對於相同視覺品質,qp會比--crf產生更大的檔案。qp模式也會停用彈性量化,因為按照定義“固定量化值”意味著沒有彈性量化。

此選項與--bitrate--crf互斥。各種位元率控制系統的詳細資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD

雖然qp不需要lookahead來執行因此速度較快,但通常應該改用--crf

參閱:--bitrate, --crf, --ipratio, --pbratio

bitrate

預設值:無

三種位元率控制方法之二。以目標位元率模式來編碼視訊。目標位元率模式意味著最終檔案大小是已知的,但最終品質則未知。x264會嘗試把給定的位元率作為整體平均值來編碼視訊。參數的單位是千位元/秒(8位元=1位元組)。注意,1千位元(kilobit)是1000位元,而不是1024位元。

此設定通常與--pass在兩階段(two-pass)編碼一起使用。

此選項與--qp--crf互斥。各種位元率控制系統的詳細資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD

參閱:--qp, --crf, --ratetol, --pass, --stats

crf

預設值:23.0

最後一種位元率控制方法:固定位元率係數(Constant Ratefactor)。當qp是把某個量化值作為目標,而bitrate是把某個檔案大小作為目標時,crf則是把某個“品質”作為目標。構想是讓crf n提供的視覺品質與qp n相同,只是檔案更小一點。crf值的度量單位是“位元率係數(ratefactor)”。

CRF是藉由降低“較不重要”的幀之品質來達到此目的。在此情況下,“較不重要”是指在複雜或高動態場景的幀,其品質不是很耗費位元數就是不易察覺,所以會提高它們的量化值。從這些幀裡所節省下來的位元數被重新分配到可以更有效利用的幀。

CRF花費的時間會比兩階段編碼少,因為兩階段編碼中的“第一階段”被略過了。另一方面,要預測CRF編碼的最終位元率是不可能的。根據情況哪種位元率控制模式更好是由你來決定。

此選項與--qp--bitrate互斥。各種位元率控制系統的詳細資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD

參閱:--qp, --bitrate

rc-lookahead

預設值:40

設定mb-tree位元率控制和vbv-lookahead使用的幀數。最大允許值是250。

對於mb-tree部分,增加幀數帶來更好的效果但也會更慢。mb-tree使用的最大緩衝值是MIN(rc-lookahead, --keyint)。

對於vbv-lookahead部分,當使用vbv時,增加幀數帶來更好的穩定性和準確度。vbv-lookahead使用的最大值是:

MIN(rc-lookahead, MAX(--keyint, MAX(--vbv-maxrate, --bitrate) / --vbv-bufsize * --fps))

參閱:--no-mbtree, --vbv-bufsize, --vbv-maxrate, --sync-lookahead

vbv-maxrate

預設值:0

設定重新填滿VBV緩衝的最大位元率。

VBV會降低品質,所以必要時才使用。

參閱:--vbv-bufsize, --vbv-init, VBV編碼建議

vbv-bufsize

預設值:0

設定VBV緩衝的大小(單位是千位元)。

VBV會降低品質,所以必要時才使用。

參閱:--vbv-maxrate, --vbv-init, VBV編碼建議

vbv-init

預設值:0.9

設定在視訊開始播放前VBV緩衝必須填滿多少。

如果值小於1,初始的填滿量是:vbv-init * vbv-bufsize。否則該值即是初始的填滿量(單位是千位元)。

參閱:--vbv-maxrate, --vbv-bufsize, VBV編碼建議

crf-max

預設值:無

一個類似--qpmax的設定,除了指定的是最大位元率係數而非最大量化值。當使用--crf且啟用VBV時,此選項才會運作。它阻止x264降低位元率係數(亦稱為“品質”)到低於給定的值,即使這樣做會違反VBV的條件約束。此設定主要適用於自訂資料流伺服器。詳細資訊可以參閱http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52

參閱:--crf, --vbv-maxrate, --vbv-bufsize

qpmin

預設值:0

定義x264可以使用的最小量化值。量化值越小,輸出視訊就越接近輸入視訊。到了一定的值,x264的輸出視訊看起來會跟輸入視訊一樣,即使它並不完全相同。通常沒有理由允許x264花費比這更多的位元數在任何特定的巨集區塊上。

當彈性量化啟用時(預設啟用),不建議提高qpmin,因為這會降低幀裡面平滑背景區域的品質。

參閱:--qpmax, --ipratio

关于qpmin的预设值:在x264 r1795版本之前,该选项预设值为10。

qpmax

預設值:69

定義x264可以使用的最大量化值。預設值69是H.264規格可供使用的最大量化值,而且品質極低。此預設值有效地停用了qpmax。如果想要限制x264可以輸出的最低品質,可以將此值設小一點(通常在30~40範圍是你會想嘗試的值),但通常並不建議調整此值。

參閱:--qpmin, --pbratio, --crf-max

qpstep

預設值:4

設定兩幀之間量化值的最大變更幅度。

ratetol

預設值:1.0

此參數有兩個目的:

  • 在一階段位元率編碼時,此設定控制x264可以偏離目標平均位元率的百分比。可以指定inf來完全停用溢出偵測(overflow detection)。可以設定的最小值是0.01。值設得越大,x264可以對接近電影結尾的複雜場景作出越好的反應。此目的的度量單位是百分比(例如,1.0等於允許1%的位元率偏差)。
很多電影(例如動作片)在電影結尾時是最複雜的。因為一階段編碼並不知道這一點,結尾所需的位元數通常被低估。將ratetol設為inf可以減輕此情況,藉由允許編碼以更像--crf的模式運行,但檔案大小會暴增。
  • 當VBV啟用時(即指定了--vbv-開頭的選項),此設定也會影響VBV的強度。值設得越大,允許VBV在冒著可能違反VBV設定的風險下有越大的波動。此目的的度量單位是任意的。

ipratio

預設值:1.40

修改I幀量化值相比P幀量化值的目標平均增量。越大的值會提高I幀的品質。

參閱:--pbratio

pbratio

預設值:1.30

修改B幀量化值相比P幀量化值的目標平均減量。越大的值會降低B幀的品質。當mbtree啟用時(預設啟用),此設定無作用,mbtree會自動計算最佳值。

參閱:--ipratio

chroma-qp-offset

預設值:0

在編碼時增加色度(chroma)平面量化值的偏移。偏移可以為負數。

當使用psy的選項啟用時(psy-rd、psy-trellis),x264會自動將此值再減去2,以補償因這些最佳化而過度地偏好亮度(luma)細節。

注意:x264僅在同一量化值編碼亮度平面和色度平面,直到量化值29。在此之後,色度逐步以比亮度低的量被量化,直到亮度在q51和色度在q39為止。此行為是由H.264標準所要求。

aq-mode

預設值:1

彈性量化模式。沒有AQ時,x264很容易分配不足的位元數到細節較少的部分。AQ是用來更好地分配視訊裡所有巨集區塊之間的可用位元數。此設定變更AQ會重新分配位元數到什麼範圍裡:

0:完全不使用AQ。
1:允許AQ重新分配位元數到整個視訊和幀內。
2:自動變化(Auto-variance)AQ,會嘗試對每幀調整強度。(實驗性的)

參閱:--aq-strength

aq-strength

預設值:1.0

彈性量化強度。設定AQ偏向低細節(平滑)的巨集區塊之強度。不允許為負數。0.0~2.0以外的值不建議。

參閱:--aq-mode

pass

預設值:無

此為兩階段編碼的一個重要設定。它控制x264如何處理--stats檔案。有三種設定:

1:建立一個新的統計資料檔案。在第一階段使用此選項。
2:讀取統計資料檔案。在最終階段使用此選項。
3:讀取統計資料檔案並更新。

統計資料檔案包含每個輸入幀的資訊,可以輸入到x264以改善輸出品質。構想是執行第一階段來產生統計資料檔案,然後第二階段將建立一個最佳化的視訊編碼。改善的地方主要是從更好的位元率控制中獲益。

參閱:--stats, --bitrate, --slow-firstpass, X264統計資料檔案

stats

預設值:"x264_2pass.log"

設定x264讀取和寫入統計資料檔案的位置。

參閱:--pass, X264統計資料檔案

no-mbtree

預設值:無

停用巨集區塊樹(macroblock tree)位元率控制。使用巨集區塊樹位元率控制會改善整體壓縮率,藉由追蹤跨幀的時間傳播(temporal propagation)並相應地加權。除了已經存在的統計資料檔案之外,多重階段編碼還需要一個新的統計資料檔案。

建議:預設值

參閱:--rc-lookahead

qcomp

預設值:0.60

量化值曲線壓縮係數。0.0是固定位元率,1.0則是固定量化值。

當mbtree啟用時,它會影響mbtree的強度(qcomp越大,mbtree越弱)。

建議:預設值

參閱:--cplxblur, --qblur

cplxblur

預設值:20.0

以給定的半徑範圍套用高斯模糊(gaussian blur)於量化值曲線。這意味著分配給每個幀的量化值會被它的鄰近幀模糊掉,以限制量化值的波動。

參閱:--qcomp, --qblur

qblur

預設值:0.5

在曲線壓縮之後,以給定的半徑範圍套用高斯模糊於量化值曲線。不怎麼重要的設定。

參閱:--qcomp, --cplxblur

zones

預設值:無

調整視訊的特定片段之設定。可以修改每區段的大多數x264選項。

  • 一個單一區段的形式為<起始幀>,<結束幀>,<選項>。
  • 多個區段彼此以"/"分隔。

選項:

這兩個是特殊選項。每區段只能設定其中一個,而且如果有設定其中一個,它必須為該區段列出的第一個選項:

  • b=<浮點數> 套用位元率乘數在此區段。在額外調整高動態和低動態場景時很有用。
  • q=<整數> 套用固定量化值在此區段。在套用於一段範圍的幀時很有用。

其他可用的選項如下:

  • ref=<整數>
  • b-bias=<整數>
  • scenecut=<整數>
  • no-deblock
  • deblock=<整數>:<整數>
  • deadzone-intra=<整數>
  • deadzone-inter=<整數>
  • direct=<字串>
  • merange=<整數>
  • nr=<整數>
  • subme=<整數>
  • trellis=<整數>
  • (no-)chroma-me
  • (no-)dct-decimate
  • (no-)fast-pskip
  • (no-)mixed-refs
  • psy-rd=<浮點數>:<浮點數>
  • me=<字串>
  • no-8x8dct
  • b-pyramid=<字串>
  • crf=<浮點數>

限制:

  • 一個區段的參照幀數無法超過--ref所指定的大小。
  • 無法開啟或關閉scenecut;如果--scenecut最初為開啟(>0),則只能改變scenecut的大小。
  • 如果使用--me esa/tesa,merange無法超過最初所指定的大小。
  • 如果--subme最初指定為0,則無法變更subme。
  • 如果--me最初指定為dia、hex或umh,則無法將me設為esa為tesa。

範例:0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000

建議:預設值

qpfile

預設值:無

手動覆寫標準的位元率控制。指定一個檔案,為指定的幀賦予量化值和幀類型。格式為“幀號 幀類型 量化值”。例如:

0 I 18 < IDR (key) I-frame
1 P 18 < P-frame
2 B 18 < Referenced B-frame
3 i 18 < Non-IDR (non-key) I-frame
4 b 18 < Non-referenced B-frame
5 K 18 < Keyframe*
  • 不需要指定每個幀。
  • 使用-1作為量化值允許x264自行選擇最佳的量化值,在只需設定幀類型時很有用。
  • 在指定了大量的幀類型和量化值時仍然讓x264間歇地自行選擇,會降低x264的效能。
  • "Keyframe"是一個泛用關鍵幀/搜尋點類型,如果--open-gop未啟用則等同於一個IDR I幀,否則等同於一個加上Recovery Point SEI旗標的非IDR I幀。

分析

partitions

預設值:p8x8,b8x8,i8x8,i4x4

H.264視訊在壓縮過程中劃分為16x16的巨集區塊。這些區塊可以進一步劃分為更小的分割,這就是此選項要控制的部分。

此選項可以啟用個別分割。分割依不同幀類型(I、P、B)啟用。

可用的分割:p8x8, p4x4, b8x8, i8x8, i4x4, none, all

  • I:i8x8、i4x4。
  • P:p8x8(亦會啟用p16x8/p8x16)、p4x4(亦會啟用p8x4/p4x8)。
  • B:b8x8(亦會啟用b16x8/b8x16)。

p4x4通常不怎麼有用,而且性價比極低。

參閱:--no-8x8dct

direct

預設值:spatial

設定"direct"動態向量(motion vectors)的預測模式。有兩種模式可用:spatialtemporal。可以指定none來停用direct動態向量,或指定auto來允許x264在兩者之間切換為適合的模式。如果設為auto,x264會在編碼結束時輸出使用情況的資訊。auto最適合用於兩階段編碼,但也可用於一階段編碼。在第一階段auto模式,x264持續記錄每個方法執行到目前為止的好壞,並從該記錄挑選下一個預測模式。注意,僅在第一階段有指定auto時,才應該在第二階段指定auto;如果第一階段不是指定auto,第二階段將會預設為temporalnone模式會浪費位元數,因此強烈不建議。

建議:auto

no-weightb

預設值:無

H.264允許“加權”B幀的參照,它允許變更每個參照影響預測圖片的程度。此選項停用該功能。

建議:預設值

weightp

預設值:2

使x264能夠使用明確加權預測(explicit weighted prediction)來改善P幀的壓縮率。亦改善淡入/淡出的品質。模式越高越慢。

注意:在為Adobe Flash編碼時,將值設為1,否則它的解碼器會產生不自然痕跡(artifacts)。Flash 10.1修正了此bug。

模式:

0:停用。
1:簡易:分析淡入/淡出,但不分析重複參照幀。
2:智慧:分析淡入/淡出和重複參照幀。

me

預設值:hex

設定全像素(full-pixel)動態估算(motion estimation)的方法。有五個選項:

dia(diamond):最簡單的搜尋方法,起始於最佳預測器(predictor),檢查上、左、下、右方一個像素的動態向量,挑選其中最好的一個,並重複此過程直到它不再找到任何更好的動態向量為止。
hex(hexagon):由類似策略組成,除了它使用周圍6點範圍為2的搜尋,因此叫做六邊形。它比dia更有效率且幾乎沒有變慢,因此作為一般用途的編碼是個不錯的選擇。
umh(uneven multi-hex):比hex更慢,但搜尋複雜的多六邊形圖樣以避免遺漏難以找到的動態向量。不像hex和dia,merange參數直接控制umh的搜尋半徑,允許增加或減少廣域搜尋的大小。
esa(exhaustive):一種在merange內整個動態搜尋空間的高度最佳化智慧搜尋。雖然速度較快,但數學上相當於搜尋該區域每個單一動態向量的暴力(bruteforce)方法。不過,它仍然比UMH還要慢,而且沒有帶來很大的好處,所以對於日常的編碼不是特別有用。
tesa(transformed exhaustive):一種嘗試接近在每個動態向量執行Hadamard轉換法比較的效果之演算法,就像exhaustive,但效果好一點而速度慢一點。

參閱:--merange

merange

預設值:16

merange控制動態搜尋的最大範圍(單位是像素)。對於hex和dia,範圍限制在4~16。對於umh和esa,它可以增加到超過預設值16來允許範圍更廣的動態搜尋,對於HD視訊和高動態鏡頭很有用。注意,對於umh、esa和tesa,增加merange會大幅減慢編碼速度。

極大的merange(>64)不大可能找到任何新的動態向量是有用的,所以在某些情況下它可能非常輕微地降低壓縮率。

參閱:--me

mvrange

預設值:-1 (自動)

設定動態向量的最大(垂直)範圍(單位是像素)。預設值依level不同:

  • Level 1/1b:64。
  • Level 1.1~2.0:128。
  • Level 2.1~3.0:256。
  • Level 3.1+:512。

注意:如果想要手動覆寫mvrange,在設定時從上述值減去0.25(例如--mvrange 127.75)。

建議:預設值

mvrange-thread

預設值:-1 (自動)

設定執行緒之間的最小動態向量緩衝。不要碰它。

建議:預設值

subme

預設值:7

設定子像素(subpixel)估算複雜度。值越高越好。層級1~5只是控制子像素細分(refinement)強度。層級6為模式決策啟用RDO,而層級8為動態向量和內部預測模式啟用RDO。RDO層級明顯慢於先前的層級。

使用小於2的值不但會啟用較快且品質較低的lookahead模式,而且導致較差的--scenecut決策,因此不建議。

可用的值:

0:Fullpel only
1:QPel SAD 1 iteration
2:QPel SATD 2 iterations
3:HPel on MB then QPel
4:Always QPel
5:Multi QPel + bi-directional motion estimation
6:RD on I/P frames
7:RD on all frames
8:RD refinement on I/P frames
9:RD refinement on all frames
10:QP-RD (requires --trellis=2, --aq-mode>0)
11:Full RD: disable all early terminations

建議:預設值,或者更高,除非速度非常重要

psy-rd

預設值:1.0:0.0

第一個數是Psy-RDO的強度(需要subme>=6)。第二個數是Psy-Trellis的強度(需要trellis>=1)。注意,Trellis仍然被視為“實驗性的”,而且幾乎可以肯定至少卡通不適合使用。

psy-rd的解釋可以參閱http://forum.doom9.org/showthread.php?t=138293

no-psy

預設值:無

停用所有會降低PSNR或SSIM的視覺最佳化。這也會停用一些無法透過x264的命令列引數設定的內部psy最佳化。

建議:預設值

no-mixed-refs

預設值:無

混合參照會以每個8x8分割為基礎來選取參照,而不是以每個巨集區塊為基礎。當使用多個參照幀時這會改善品質,雖然要損失一些速度。設定此選項會停用該功能。

建議:預設值

參閱:--ref

no-chroma-me

預設值:無

通常,亮度和色度兩個平面都會做動態估算。此選項停用色度動態估算來提高些微速度。

建議:預設值

no-8x8dct

預設值:無

彈性8x8離散餘弦轉換(DCT)使x264能夠彈性使用I幀的8x8轉換。此選項停用該功能。

建議:預設值

trellis

預設值:1

執行Trellis quantization來提高效率。

0:停用。
1:只在一個巨集區塊的最終編碼上啟用。
2:在所有模式決策上啟用。

在巨集區塊時提供了速度和效率之間的良好平衡。在所有決策時則更加降低速度。

建議:預設值

注意:需要--cabac

no-fast-pskip

預設值:無

停用P幀的早期略過偵測(early skip detection)。在低位元率時,適中地提高品質但要損失很多速度。在高位元率時,對速度和品質的影響都微不足道。

建議:預設值

no-dct-decimate

預設值:無

DCT Decimation會捨棄它認為“不必要的”DCT區塊。這會改善編碼效率,而降低的品質通常微不足道。設定此選項會停用該功能。

建議:預設值

nr

預設值:0

執行快速的雜訊削減(noise reduction)。根據此值估算影片的雜訊,並藉由在量化之前捨棄小細節來嘗試移除雜訊。這可能比不上優良的外部雜訊削減濾鏡的品質,但它執行得非常快。

建議:預設值,或者100~1000

deadzone-inter/intra

預設值:21/11

設定inter/intra亮度量化反應區(deadzone)的大小。反應區的範圍應該在0~32。此值設定x264會任意捨棄而不嘗試保留細微細節的層級。非常細微的細節既難以看見又耗費位元數,捨棄這些細節可以不用浪費位元數在視訊的此類低收益畫面上。反應區與--trellis不相容

建議:預設值

cqm

預設值:flat

設定所有自訂量化矩陣(custom quantization matrices)為內建的預設之一。內建預設有flatJVT

建議:預設值

參閱:--cqmfile

cqmfile

預設值:無

從一個指定的JM相容檔案來設定自訂量化矩陣。覆寫所有其他--cqm開頭的選項。

建議:預設值

參閱:--cqm

cqm4* / cqm8*

預設值:無

--cqm4:設定所有4x4量化矩陣。需要16個以逗號分隔的整數清單。
--cqm8:設定所有8x8量化矩陣。需要64個以逗號分隔的整數清單。
--cqm4i--cqm4p--cqm8i--cqm8p:設定亮度和色度量化矩陣。
--cqm4iy--cqm4ic--cqm4py--cqm4pc:設定個別量化矩陣。

建議:預設值

視訊可用性資訊

這些選項在輸出資料流裡設定一個旗標,旗標可以被解碼器讀取並採取可能的動作。值得一提的是大多數選項在大多數情況下毫無意義,而且通常被解碼器忽略。

overscan

預設值:undef

如何處理溢出掃描(overscan)。溢出掃描的意思是裝置只顯示影像的一部分。

可用的值:

undef:未定義。
show:指示要顯示整個影像。理論上如果設了show則解碼器必須遵守。
crop:指示此影像適合在有溢出掃描功能的裝置上播放。解碼器不一定遵守。

建議:在編碼之前裁剪(Crop)視訊,然後如果裝置支援就使用show,否則不用理會此選項

videoformat

預設值:undef

指示此視訊在編碼/數位化之前是什麼格式。

可用的值:component, pal, ntsc, secam, mac, undef

建議:來源視訊的格式,或者未定義

range

預設值:auto

指示亮度和色度層級的輸出範圍是有限範圍或全範圍。如果設為TV,則會使用有限範圍。如果設為auto,則會使用與輸入視訊相同的範圍。

注意:如果range和--input-range不同,則會進行範圍轉換。

詳細資訊可以參閱http://en.wikipedia.org/wiki/YCbCr

建議:預設值

參閱:--input-range

colorprim

預設值:undef

設定以什麼色彩原色轉換成RGB。

可用的值:undef, bt709, bt470m, bt470bg, smpte170m, smpte240m, film

詳細資訊可以參閱http://en.wikipedia.org/wiki/RGB_color_spacehttp://en.wikipedia.org/wiki/YCbCr

建議:預設值,除非你知道來源使用什麼色彩原色

transfer

預設值:undef

設定要使用的光電子(opto-electronic)傳輸特性(設定用於修正的色差補正(gamma)曲線)。

可用的值:undef, bt709, bt470m, bt470bg, linear, log100, log316, smpte170m, smpte240m

詳細資訊可以參閱http://en.wikipedia.org/wiki/Gamma_correction

建議:預設值,除非你知道來源使用什麼傳輸特性

colormatrix

預設值:undef

設定用於從RGB原色中取得亮度和色度的矩陣係數。

可用的值:undef, bt709, fcc, bt470bg, smpte170m, smpte240m, GBR, YCgCo

詳細資訊可以參閱http://en.wikipedia.org/wiki/YCbCr

建議:來源使用的矩陣,或者預設值

chromaloc

預設值:0

設定色度採樣位置(如ITU-T規格的附錄E所定義)

可用的值:0~5

參閱x264的vui.txt

建議:

  • 如果是從正確次採樣4:2:0的MPEG1轉碼,而且沒有做任何色彩空間轉換,則應該將此選項設為1。
  • 如果是從正確次採樣4:2:0的MPEG2轉碼,而且沒有做任何色彩空間轉換,則應該將此選項設為0。
  • 如果是從正確次採樣4:2:0的MPEG4轉碼,而且沒有做任何色彩空間轉換,則應該將此選項設為0。
  • 否則,維持預設值。

nal-hrd

預設值:none

標誌HRD資訊。這是藍光資料流、電視廣播和幾個其他專業範圍所需要的。

可用的值:

none:不指定HRD資訊。
vbr:指定HRD資訊。
cbr:指定HRD資訊並以--bitrate指定的位元率來封裝位元資料流。需要--bitrate模式的位元率控制。

建議:預設值,除非需要標誌此資訊

參閱:--vbv-bufsize, --vbv-maxrate, --aud

pic-struct

預設值:無

強制在Picture Timing SEI裡傳送pic_struct。

當使用--pulldown--tff/--bff時會自動啟用。

建議:預設值

crop-rect

預設值:無

指定一個位元資料流層級的裁剪矩形。如果想要解碼器在播放時裁剪,但因為某些原因不想要裁剪視訊再讓x264編碼,則可以使用此選項。指定的值是在播放時應該被裁剪的像素。

輸入/輸出

output

預設值:無

指定輸出檔名。指定的副檔名決定視訊的輸出格式。如果副檔名無法辨識,則預設輸出格式是raw視訊資料流(通常儲存為.264副檔名)。

特殊位置NUL(Windows)或/dev/null(Unix)指定輸出視訊應該被捨棄。這在使用--pass 1時特別有用,因為你在乎的輸出資料只有--stats

muxer

預設值:auto

指定要輸出什麼格式。

可用的值:auto, raw, mkv, flv, mp4

auto選項會根據提供的輸出檔名挑選一個多工器(muxer)。

建議:預設值

參閱:--output

demuxer

預設值:auto

設定x264要使用什麼解多工器(demuxer)和解碼器來剖析輸入視訊。

可用的值:auto, raw, y4m, avs, lavf, ffms

如果輸入檔案有raw、y4m或avs副檔名,則x264會使用相關的解多工器來讀取檔案。標準輸入會使用raw解多工器。否則,x264會嘗試以ffms來開啟檔案,然後再嘗試以lavf來開啟檔案,最後開啟失敗。

"lavf"和"ffms"選項需要x264以分別的程式庫編譯。如果使用到兩者之一,x264會從輸入檔案帶入時間碼(timecodes),條件是不能輸出為raw。這有效地使x264感知VFR。其他選項可以指定--fps為固定幀率,或者指定--tcfile-in為變動幀率。

建議:預設值

參閱:--input, --muxer

input-csp

預設值:無

告訴x264 raw視訊輸入是什麼色彩空間。支援的色彩空間可以從x264 --fullhelp的說明裡得知。

參閱:--input-res, --fps

output-csp

預設值:i420

告訴x264要輸出什麼色彩空間。

可用的值:i420, i422, i444, rgb

參閱:--input-csp

input-depth

預設值:無

指定raw視訊輸入的位元深度。

input-range

預設值:auto

指定來源的亮度和色度層級範圍。可以設定TV為有限範圍或PC為全範圍。

注意:如果--range和input-range不同,則會進行範圍轉換。

建議:預設值,除非你知道來源是TV或PC層級

參閱:--range

input-res

預設值:無

指定raw視訊輸入的解析度。語法是--input-res 720x576

參閱:--input-csp, --fps

index

預設值:無

一個只在使用ffms --demuxer時才會生效的選擇性設定。為ffms指定一個檔案來寫入輸入視訊的索引資料,之後的編碼可以參照此檔案來免去重新建立索引的必要。通常不需要特別指定,索引進程與視訊編碼相比並不慢。

建議:預設值,除非想要節省建立索引的幾分鐘時間

參閱:--demuxer, FFMS2 API文件

sar

預設值:無

指定輸入視訊的採樣長寬比(SAR:Sample Aspect Ratio)。語法是--sar 40:33

此設定與幀尺寸結合可以用來編碼anamorphic的輸出視訊,藉由以下公式來決定顯示長寬比(DAR:Display Aspect Ratio):DAR = SAR x width/height

詳細資訊可以參閱http://en.wikipedia.org/wiki/Aspect_ratio_%28image%29#Distinctions

建議:如果有使用調整大小(resize)濾鏡且編碼anamorphic的輸入視訊,則可能需要設定此選項

fps

預設值:自動

指定視訊幀率為浮點數(29.97)、比率(30000/1001)或整數(30)。當使用y4m、avs、ffms或lavf解多工器時,x264會使用從輸入資料流標頭(header)偵測到的幀率,否則使用25作為幀率。設定此選項會自動啟用--force-cfr

如果使用raw YUV輸入且--bitrate為主的位元率控制,則需要使用此參數或--tcfile-in來指定正確的幀率。否則x264不會達到你指定的目標位元率。

seek

預設值:無

指定要編碼的初始幀,允許編碼從源的任一時間點開始。

建議:預設值

frames

預設值:無

指定要編碼的最大幀數,允許編碼在源的任一時間點結束。

建議:預設值

level

預設值:自動

在輸出的位元資料流裡設定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 5.2

如果在命令列中沒有指定--level,則x264會嘗試自動偵測level。此偵測並不完美,而且如果沒有使用VBV則可能會低估level。x264也會自動限制DPB大小來保持與所選level的相容性(除非也手動指定--ref)。注意:指定level並不會自動設定--vbv-maxrate--vbv-bufsize,不過如果超過level特定的屬性則x264會發出警告。

我該挑選什麼Level?

Level 4.1通常被認為是桌上型消費性硬體可以支援的最高level。藍光只支援level 4.1,而且許多非行動裝置像Xbox 360指定level 4.1為官方支援的最高level。行動裝置像iPhone/Android則完全是另一回事。

建議:預設值,除非針對特定裝置

bluray-compat

預設值:無

修改x264的選項以保證與藍光播放機有更好的相容性。僅在視訊會於藍光硬體播放機上播放時才需要此選項。

此設定變更一些選項:

它也啟用了x264內部的一些特殊處理。例如:

  • GOP/mini-GOP tweaks to size and reference lists.
  • More verbose slice headers

建議:預設值,除非針對藍光硬體播放機做編碼

verbose

預設值:無

顯示每個已編碼幀的統計資料。

建議:預設值

no-progress

預設值:無

停用編碼時的進度指示器。

建議:預設值

quiet

預設值:無

啟用安靜模式,使x264不顯示狀態訊息。

建議:預設值

log-level

預設值:info

手動指定x264cli和libx264的記錄等級。

可用的值:none, error, warning, info, debug

建議:預設值

psnr

預設值:無

啟用PSNR計算,在編碼完成時報告。此計算會降低一些速度。

建議:預設值

ssim

預設值:無

啟用SSIM計算,在編碼完成時報告。此計算會降低一些速度。

建議:預設值