[參考] x264命令行參數解釋

看板AVEncode (影音編碼技術)作者 (練習微笑每一次)時間13年前 (2011/05/18 19:54), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
轉自米飯網 本文主要翻譯: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
文章代碼(AID): #1DqxE9OL (AVEncode)
文章代碼(AID): #1DqxE9OL (AVEncode)