FFmpeg X264編碼參數(shù)
目錄
- 碼率控制 1
- X264的preset和tune 2
- 編碼延時(shí)建議 2
- ffmpeg編碼參數(shù)和x264參數(shù)對照 3
- x264參數(shù)說明 5
2.碼率控制
X264提供三種碼率控制的方式:bitrate, qp, crf。這三種方式是互斥的采驻,使用時(shí)設(shè)置其中之一即可宙刘。
(1)bitrate
x264會嘗試把給定的位元率作為整體平均值來編碼坑鱼。這意味著最終編碼文件的大小是已知的雁乡,但最終的品質(zhì)未知摘刑。此選項(xiàng)通常與-pass(兩階段編碼)一起使用志鞍。
注意鼓蜒,ffmpeg中設(shè)置bitrate的具體參數(shù)為bit_rate坝橡,單位是bits/s(x264里面對應(yīng)參數(shù)i_bitrate的單位則是kbits/s, 1kbits為1000bits而非1024bits).
(2)qp
使用qp選項(xiàng)時(shí)泻帮,表示P幀的量化值為qp。I幀和B幀的量化值則是從--ipratio和--pbratio中取得计寇÷嘣樱可使用默認(rèn)參數(shù),也可自己設(shè)定番宁。使用qp模式元莫,即固定量化值,意味著停用彈性量化(aq_mode)贝淤。
當(dāng)qp為0時(shí)柒竞,為無損編碼。
(3)crf
固定位元率系數(shù)播聪,Constant Ratefactor朽基,
可用的值從1到51,越小編碼質(zhì)量越好离陶,碼率越高稼虎。一般使用16到24,可以為浮點(diǎn)招刨。(crf并不是恒定質(zhì)量的方式霎俩,同一片子同一crf值,其他參數(shù)不同可能碼率和質(zhì)量差較大沉眶,不同的片子之間就更沒有可比性了)
此模式把某個(gè)“質(zhì)量”作為編碼目標(biāo)打却,根據(jù)片子質(zhì)量自動分配碼率的vbr(Variable Bit Rate動態(tài)比特率)。X264中構(gòu)想是讓crf n提供與qp n相當(dāng)?shù)囊曈X品質(zhì)谎倔,但編碼文件更小一些柳击。
CRF是借由降低“較不重要”幀的品質(zhì)來達(dá)到此目的。在此情況下片习,“較不重要”是指在復(fù)雜或高動態(tài)場景的幀捌肴,其品質(zhì)不是很耗費(fèi)位元數(shù)就是不易察覺,所以會提高它們的量化值藕咏。從這些幀里所節(jié)省下來的位元數(shù)被重新分配到可以更有效利用的幀状知。
當(dāng)crf為0時(shí),與qp 0相同孽查,實(shí)現(xiàn)無損編碼饥悴。
3.X264的preset和tune
鑒于x264的參數(shù)眾多,各種參數(shù)的配合復(fù)雜,為了使用者方便铺坞,x264建議如無特別需要可使用preset和tune設(shè)置起宽。這套開發(fā)者推薦的參數(shù)較為合理,可在此基礎(chǔ)上在調(diào)整一些具體參數(shù)以符合自己需要济榨,手動設(shè)定的參數(shù)會覆蓋preset和tune里的參數(shù)。
--preset的參數(shù)主要調(diào)節(jié)編碼速度和質(zhì)量的平衡绿映,有ultrafast擒滑、superfast、veryfast叉弦、faster丐一、fast、medium淹冰、slow库车、slower、veryslow樱拴、placebo這10個(gè)選項(xiàng)柠衍,從快到慢。
--tune的參數(shù)主要配合視頻類型和視覺優(yōu)化的參數(shù)晶乔,或特別的情況珍坊。如果視頻的內(nèi)容符合其中一個(gè)可用的調(diào)整值又或者有其中需要,則可以使用此選項(xiàng)正罢,否則建議不使用(如tune grain是為高比特率的編碼而設(shè)計(jì)的)阵漏。tune的值有:
film: 電影、真人類型翻具;
animation: 動畫履怯;
grain: 需要保留大量的grain時(shí)用;
stillimage: 靜態(tài)圖像編碼時(shí)使用裆泳;
psnr: 為提高psnr做了優(yōu)化的參數(shù)叹洲;
ssim: 為提高ssim做了優(yōu)化的參數(shù);
fastdecode: 可以快速解碼的參數(shù)晾虑;
zerolatency:零延遲疹味,用在需要非常低的延遲的情況下,比如電視電話會議的編碼帜篇。
4.一些編碼建議
編碼延時(shí)
降低x264的延時(shí)是可能的糙捺,但是會降低質(zhì)量。若需零延時(shí)笙隙,設(shè)置--tune zerolatency洪灯。若你可以接受一點(diǎn)兒小延時(shí)(如小于1秒),最好還是允許延時(shí)竟痰。下列步驟可以降低延遲签钩,當(dāng)延遲足夠小時(shí)掏呼,就別再進(jìn)行后續(xù)步驟了:
1.從初始值開始
2.關(guān)閉sync-lookahead(設(shè)置用于線程預(yù)測的幀緩存大小。最大值是250.在第二遍及更多遍編碼或基于分片線程時(shí)自動關(guān)閉)
3.降低rc-lookahead铅檩,但別小于10(設(shè)定mb-tree位元率控制和vbv-lookahead使用的幀數(shù))
4.降低threads(比如從12降到6)
5.使用切片線程(sliced threads)
6.禁用rc-lookahead
7.禁用b-frames
8.實(shí)在不行憎夷,就用--tune zerolatency
param->rc.i_lookahead = 0;param->i_sync_lookahead = 0; param->i_bframe = 0; param->b_sliced_threads = 1; param->b_vfr_input = 0;param->rc.b_mb_tree = 0;(使用宏塊樹位元率控制會改善整體壓縮率)
x264線程
x264起多少個(gè)線程比較好 ?
建議線程數(shù):
1昧旨、2拾给、4、8
測試結(jié)論:
1兔沃、更多的線程會消耗更多總CPU時(shí)間片蒋得,因此在長期滿載的機(jī)器上不宜使用多線程。
2乒疏、獲得的時(shí)間收益隨線程增多呈遞減趨勢额衙,8線程以后尤為明顯。
3怕吴、PNSR下降隨線程數(shù)增加呈拋物遞增趨勢窍侧,16線程增加到24線程PSNR時(shí)下降了0.6之巨。
4械哟、設(shè)置threads=auto時(shí)疏之,線程數(shù)為邏輯CPU個(gè)數(shù)的1.5倍。
x264各類型幀的大小及編碼耗時(shí)
注:作參考暇咆,未必屬實(shí)锋爪。
I幀、B幀爸业、P幀都極大地受編碼參數(shù)的影響其骄。
通常情況下:
h264編碼的幀由大到小依次為:
I > P > B
(互相之間約有5倍的差距)
x264的編碼耗時(shí)由長到短依次為:
P > B > I
通常而言,較小的幀因?yàn)閹瑑?nèi)壓縮計(jì)算量(deblock扯旷、cabac等)小拯爽,所以耗時(shí)相對短。
P幀的編碼耗時(shí)長是因?yàn)閹g壓縮(宏塊尋找钧忽、運(yùn)動補(bǔ)償?shù)?耗時(shí)長所以提高了總體耗時(shí)毯炮。
另外:可以修改x264中的x264_slices_write函數(shù)來測量不同類型幀的編碼耗時(shí)。
5.ffmpeg編碼參數(shù)和x264參數(shù)對照
下面表中涉及的參數(shù)直接在AVCodecContext結(jié)構(gòu)中設(shè)置:
FFmpeg option x264 option
Code Console Console Code
gop_size -g <frames> –keyint i_keyint_max
bit_rate -b <bits per second> –bitrate rc.i_bitrate
rc_buffer_size -bufsize <bits> –vbv-bufsize rc.i_vbv_buffer_size
rc_max_rate -maxrate <bits> –vbv-maxrate rc.i_vbv_max_bitrate
max_b_frames -bf <int> –bframes i_bframe
keyint_min -keyint_min <int> –min-keyint i_keyint_min
scenechange_threshold -sc_threshold <int> –scenecut i_scenecut_threshold
qmin -qmin <int> –qpmin rc.i_qp_min
qmax -qmax <int> –qpmax rc.i_qp_max
max_qdiff -qdiff <int> –qpstep rc.i_qp_step
qcompress -qcomp <float> –qcomp rc.f_qcompress
qblur -qblur <float> –qblur rc.f_qblur
Refs -refs <int> –ref i_frame_reference
me_method -me_method <epzs,hex,umh,full> –me analyse.i_me_method
merange -me_range <int> –merange analyse.i_me_range
me_subpel_quality -subq <int> –subme analyse.i_subpel_refine
trellis -trellis <0,1,2> –trellis analyse.i_trellis
noise_reduction -nr <int> –nr analyse.i_noise_reduction
level -level <int> –level i_level_idc
bit_rate_tolerance
-bt <bits> –ratetol = -bt / -b rc.f_rate_tolerance
rc_initial_buffer_occupancy -rc_init_occupancy <bits> –vbv-init = -rc_init_occupancy / -bufsize rc.f_vbv_buffer_init
b_quant_factor -b_qfactor <float> –pbratio rc.f_pb_factor
chromaoffset -chromaoffset <int> –chroma-qp-offset analyse.i_chroma_qp_offset
thread_count -threads <int> –threads i_threads
me_cmp -cmp <-chroma/+chroma> chroma-me analyse.b_chroma_me
thread_type thread_type sliced_threads b_sliced_threads
AVCodecContext結(jié)構(gòu)中priv_data可設(shè)置的參數(shù)見下表:
priv_data(即X264Context option)
preset
tune
profile
fastfirstpass
level
stats
wpredp
x264opts
crf
crf_max
cqp
aq_mode
aq_strength
psy
psy_rd
rc_lookahead
weightb
weightp
ssim
intra_refresh
b_bias
b_pyramid
mixed_refs
dct8x8
fast_pskip
aud
mbtree
deblock
cplxblur
partitions
direct_pred
slice_max_size
stats
nal_hrd
x264_params
其余x264參數(shù)設(shè)置耸黑,見下面格式桃煎,多個(gè)參數(shù)用冒號(:)隔開:
av_opt_set(AVCodecContext->priv_data, "x264opts", "sync-lookahead=0: sliced-threads", 0);
6.x264參數(shù)說明
注:下面說明不是最新版本,最新版本請參考x264 --fullhelp
預(yù)設(shè)
為了減少使用者花費(fèi)時(shí)間和精力在命令列上而設(shè)計(jì)的一套系統(tǒng)大刊。這些設(shè)定切換了什么選項(xiàng)可以從x264 --fullhelp的說明里得知为迈。
profile
預(yù)設(shè)值:無
限制輸出資料流的profile。如果指定了profile,它會覆寫所有其他的設(shè)定葫辐。所以如果指定了profile搜锰,將會保證得到一個(gè)相容的資料流。如果設(shè)了此選項(xiàng)耿战,將會無法使用無失真(lossless)編碼(--qp 0或--crf 0)蛋叼。
如果播放裝置僅支援某個(gè)profile,則應(yīng)該設(shè)此選項(xiàng)昆箕。大多數(shù)解碼器都支援High profile鸦列,所以沒有設(shè)定的必要。
可用的值:baseline, main, high
preset
預(yù)設(shè)值:medium
變更選項(xiàng)鹏倘,以權(quán)衡壓縮效率和編碼速度。如果指定了預(yù)設(shè)顽爹,變更的選項(xiàng)將會在套用所有其他的參數(shù)之前套用纤泵。
通常應(yīng)該將此設(shè)為所能忍受的最慢一個(gè)選項(xiàng)。
可用的值:ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
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
param->analyse.inter = X264_ANALYSE_I8x8|X264_ANALYSE_I4x4;
param->analyse.i_me_method = X264_ME_DIA;
param->analyse.i_subpel_refine = 1;
param->i_frame_reference = 1;
param->analyse.b_mixed_references = 0;
param->analyse.i_trellis = 0;
param->rc.b_mb_tree = 0;
param->analyse.i_weighted_pred = X264_WEIGHTP_SIMPLE;
param->rc.i_lookahead = 0;
tune
預(yù)設(shè)值:無
調(diào)整選項(xiàng)镜粤,以進(jìn)一步最佳化為視訊的內(nèi)容捏题。如果指定了tune,變更的選項(xiàng)將會在--preset之后肉渴,但所有其他的參數(shù)之前套用公荧。
如果視訊的內(nèi)容符合其中一個(gè)可用的調(diào)整值,則可以使用此選項(xiàng)同规,否則不要使用循狰。
可用的值:film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency
slow-firstpass
預(yù)設(shè)值:無
使用--pass 1會在解析命令列的最后套用以下設(shè)定:
--ref 1
--no-8x8dct
--partitions i4x4 (如果最初有啟用,否則為無)
--me dia
--subme MIN(2, subme)
--trellis 0
可以使用--slow-firstpass來停用此功能券勺。注意绪钥,使用--preset placebo也會啟用slow-firstpass。
參閱:--pass
幀類型選項(xiàng)
keyint
預(yù)設(shè)值:250
設(shè)定x264輸出的資料流之最大IDR幀(亦稱為關(guān)鍵幀)間隔关炼〕谈梗可以指定infinite讓x264永遠(yuǎn)不要插入非場景變更的IDR幀。
IDR幀是資料流的“分隔符號”儒拂,所有幀都無法從IDR幀的另一邊參照資料寸潦。因此,IDR幀也是I幀社痛,所以它們不從任何其他幀參照資料见转。這意味著它們可以用作視訊的搜尋點(diǎn)(seek points)。
注意褥影,I幀通常明顯大于P/B幀(在低動態(tài)場景通常為10倍大或更多)池户,所以當(dāng)它們與極低的VBV設(shè)定合并使用時(shí)會打亂位元率控制。在這些情況下,研究--intra-refresh校焦。
預(yù)設(shè)值對于大多數(shù)視訊沒啥問題赊抖。在為藍(lán)光、廣播寨典、即時(shí)資料流或某些其他特殊情況編碼時(shí)氛雪,可能需要更小的GOP長度(通常等于幀率)。
參閱:--min-keyint, --scenecut, --intra-refresh
min-keyint
預(yù)設(shè)值:自動 (MIN(--keyint / 10, --fps))
設(shè)定IDR幀之間的最小長度耸成。
IDR幀的說明可以參閱--keyint报亩。過小的keyint范圍會導(dǎo)致“不正確的”IDR幀位置(例如閃屏場景)。此選項(xiàng)限制在每個(gè)IDR幀之后井氢,要有多少幀才可以再有另一個(gè)IDR幀的最小長度弦追。
min-keyint的最大允許值是--keyint/2+1。
建議:預(yù)設(shè)值花竞,或者等于幀率
參閱:--keyint, --scenecut
no-scenecut
預(yù)設(shè)值:無
完全停用彈性I幀決策(adaptive I-frame decision)劲件。
參閱:--scenecut
scenecut
預(yù)設(shè)值:40
設(shè)定I/IDR幀位置的閾值(場景變更偵測)。
x264為每一幀計(jì)算一個(gè)度量值约急,來估計(jì)與前一幀的不同程度零远。如果該值低于scenecut,則算偵測到一個(gè)“場景變更”厌蔽。如果此時(shí)與最近一個(gè)IDR幀的距離低于--min-keyint牵辣,則放置一個(gè)I幀,否則放置一個(gè)IDR幀奴饮。越大的scenecut值會增加偵測到場景變更的數(shù)目纬向。場景變更是如何比較的詳細(xì)資訊可以參閱http://forum.doom9.org/showthread.php?t=121116。
將scenecut設(shè)為0相當(dāng)于設(shè)定--no-scenecut拐云。
建議:預(yù)設(shè)值
參閱:--keyint, --min-keyint, --no-scenecut
intra-refresh
預(yù)設(shè)值:無
停用IDR幀罢猪,作為替代x264會為每隔--keyint的幀的每個(gè)巨集區(qū)塊(macroblock)使用內(nèi)部編碼(intra coding)。區(qū)塊是以一個(gè)水平卷動的行刷新叉瘩,稱為刷新波(refresh wave)膳帕。這有利于低延遲的資料流,使它有可能比標(biāo)準(zhǔn)的IDR幀達(dá)到更加固定的幀大小薇缅。它也增強(qiáng)了視訊資料流對封包遺失的恢復(fù)能力危彩。此選項(xiàng)會降低壓縮效率,因此必要時(shí)才使用泳桦。
有趣的事:
第一幀仍然是IDR幀汤徽。
內(nèi)部區(qū)塊(Intra-blocks)僅處于P幀里,刷新波在一或多個(gè)B幀后的第一個(gè)P幀更廣泛灸撰。
壓縮效率的損失主要來自于在刷新波上左側(cè)(新)的巨集區(qū)塊無法參照右側(cè)(舊)的資料谒府。
bframes
預(yù)設(shè)值:3
設(shè)定x264可以使用的最大并行B幀數(shù)拼坎。
沒有B幀時(shí),一個(gè)典型的x264資料流有著像這樣的幀類型:IPPPPP...PI完疫。當(dāng)設(shè)了--bframes 2時(shí)泰鸡,最多兩個(gè)連續(xù)的P幀可以被B幀取代,就像:IBPBBPBPPPB...PI壳鹤。
B幀類似于P幀盛龄,除了B幀還能從它之后的幀做動態(tài)預(yù)測(motion prediction)。就壓縮比來說效率會大幅提高芳誓。它們的平均品質(zhì)是由--pbratio所控制余舶。
有趣的事:
x264還區(qū)分兩種不同種類的B幀。"B"是代表一個(gè)被其他幀作為參照幀的B幀(參閱--b-pyramid)锹淌,而"b"則代表一個(gè)不被其他幀作為參照幀的B幀匿值。如果看到一段混合的"B"和"b",原因通常與上述有關(guān)赂摆。當(dāng)差別并不重要時(shí)千扔,通常就以"B"代表所有B幀。
x264是如何為每個(gè)候選幀選定為P幀或B幀的詳細(xì)資訊可以參閱http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064库正。在此情況下,幀類型看起來會像這樣(假設(shè)--bframes 3):IBBBPBBBPBPI厘唾。
參閱:--b-bias, --b-pyramid, --ref, --pbratio, --partitions, --weightb
b-adapt
預(yù)設(shè)值:1
設(shè)定彈性B幀位置決策演算法褥符。此設(shè)定控制x264如何決定要放置P幀或B幀。
0:停用抚垃,總是挑選B幀喷楣。這與舊的no-b-adapt設(shè)定相同作用。
1:“快速”演算法鹤树,較快铣焊,越大的--bframes值會稍微提高速度。當(dāng)使用此模式時(shí)罕伯,基本上建議搭配--bframes 16使用曲伊。
2:“最佳”演算法,較慢追他,越大的--bframes值會大幅降低速度坟募。
注意:對于多重階段(multi-pass)編碼,僅在第一階段(first pass)才需要此選項(xiàng)邑狸,因?yàn)閹愋驮诖藭r(shí)已經(jīng)決定完了懈糯。
b-bias
預(yù)設(shè)值:0
控制使用B幀而不使用P幀的可能性。大于0的值增加偏向B幀的加權(quán)单雾,而小于0的值則相反赚哗。范圍是從-100到100她紫。100并不保證全是B幀(要全是B幀該使用--b-adapt 0),而-100也不保證全是P幀屿储。
僅在你認(rèn)為能比x264做出更好的位元率控制決策時(shí)才使用此選項(xiàng)贿讹。
參閱:--bframes, --ipratio
b-pyramid
預(yù)設(shè)值:normal
允許B幀作為其他幀的參照幀。沒有此設(shè)定時(shí)扩所,幀只能參照I/P幀围详。雖然I/P幀因其較高的品質(zhì)作為參照幀更有價(jià)值,但B幀也是很有用的祖屏。作為參照幀的B幀會得到一個(gè)介于P幀和普通B幀之間的量化值助赞。b-pyramid需要至少兩個(gè)以上的--bframes才會運(yùn)作。
如果是在為藍(lán)光編碼袁勺,須使用none或strict雹食。
none:不允許B幀作為參照幀。
strict:每minigop允許一個(gè)B幀作為參照幀期丰,這是藍(lán)光標(biāo)準(zhǔn)強(qiáng)制執(zhí)行的限制群叶。
normal:每minigop允許多個(gè)B幀作為參照幀。
參閱:--bframes, --refs, --no-mixed-refs
open-gop
預(yù)設(shè)值:none
open-gop是一個(gè)提高效率的編碼技術(shù)钝荡。有三種模式:
none:停用open-gop街立。
normal:啟用open-gop。
bluray:啟用open-gop埠通。一個(gè)效率較低的open-gop版本赎离,因?yàn)閚ormal模式無法用于藍(lán)光編碼。
某些解碼器不完全支援open-gop資料流端辱,這就是為什么此選項(xiàng)并未預(yù)設(shè)為啟用梁剔。如果想啟用open-gop,應(yīng)該先測試所有可能用來撥放的解碼器舞蔽。
open-gop的說明可以參閱http://forum.doom9.org/showthread.php?p=1300124#post1300124荣病。
no-cabac
預(yù)設(shè)值:無
停用彈性內(nèi)容的二進(jìn)位算數(shù)編碼(CABAC:Context Adaptive Binary Arithmetic Coder)資料流壓縮,切換回效率較低的彈性內(nèi)容的可變長度編碼(CAVLC:Context Adaptive Variable Length Coder)系統(tǒng)渗柿。大幅降低壓縮效率(通常10~20%)和解碼的硬體需求个盆。
ref
預(yù)設(shè)值:3
控制解碼圖片緩沖(DPB:Decoded Picture Buffer)的大小。范圍是從0到16做祝±。總之,此值是每個(gè)P幀可以使用先前多少幀作為參照幀的數(shù)目(B幀可以使用的數(shù)目要少一或兩個(gè)混槐,取決于它們是否作為參照幀)编兄。可以被參照的最小ref數(shù)是1声登。
還要注意的是狠鸳,H.264規(guī)格限制了每個(gè)level的DPB大小揣苏。如果遵守Level 4.1規(guī)格,720p和1080p視訊的最大ref數(shù)分別是9和4件舵。
參閱:--b-pyramid, --no-mixed-refs, --level
no-deblock
預(yù)設(shè)值:無
完全停用循環(huán)篩選(loop filter)卸察。不建議。
參閱:--deblock
deblock
預(yù)設(shè)值:0:0
控制循環(huán)篩選(亦稱為持續(xù)循環(huán)去區(qū)塊(inloop deblocker))铅祸,這是H.264標(biāo)準(zhǔn)的一部分坑质。就性價(jià)比來說非常有效率。
可以在http://forum.doom9.org/showthread.php?t=109747找到loop濾鏡的參數(shù)是如何運(yùn)作的說明(參閱第一個(gè)帖子和akupenguin的回復(fù))临梗。
參閱:--no-deblock
slices
預(yù)設(shè)值:無
設(shè)定每幀的切片數(shù)涡扼,而且強(qiáng)制為矩形切片(會被--slice-max-size或--slice-max-mbs覆寫)。
如果是在為藍(lán)光編碼盟庞,將值設(shè)為4吃沪。否則,不要使用此選項(xiàng)什猖,除非你知道真的有必要票彪。
參閱:--slice-max-size, --slice-max-mbs
slice-max-size
預(yù)設(shè)值:無
設(shè)定最大的切片大小(單位是位元組)不狮,包括估計(jì)的NAL額外負(fù)荷(overhead)降铸。(目前與--interlaced不相容)
參閱:--slices
slice-max-mbs
預(yù)設(shè)值:無
設(shè)定最大的切片大小(單位是巨集區(qū)塊)摇零。(目前與--interlaced不相容)
參閱:--slices
tff
預(yù)設(shè)值:無
啟用交錯(cuò)式編碼并指定頂場優(yōu)先(top field first)垮耳。x264的交錯(cuò)式編碼使用MBAFF,本身效率比漸進(jìn)式編碼差遂黍。出于此原因,僅在打算于交錯(cuò)式顯示器上播放視訊時(shí)俊嗽,才應(yīng)該編碼為交錯(cuò)式(或者視訊在送給x264之前無法進(jìn)行去交錯(cuò))雾家。此選項(xiàng)會自動啟用--pic-struct。
bff
預(yù)設(shè)值:無
啟用交錯(cuò)式編碼并指定底場優(yōu)先(bottom field first)绍豁。詳細(xì)資訊可以參閱--tff芯咧。
constrained-intra
預(yù)設(shè)值:無
啟用限制的內(nèi)部預(yù)測(constrained intra prediction),這是SVC編碼的基礎(chǔ)層(base layer)所需要的竹揍。既然EveryoneTM忽略SVC敬飒,你同樣可以忽略此選項(xiàng)。
pulldown
預(yù)設(shè)值:none
使用其中一個(gè)預(yù)設(shè)模式將漸進(jìn)式芬位、固定幀率的輸入資料流標(biāo)志上軟膠卷過帶(soft telecine)无拗。軟膠卷過帶在http://trac.handbrake.fr/wiki/Telecine有更詳細(xì)的解釋。
可用的預(yù)設(shè):none, 22, 32, 64, double, triple, euro
指定除了none以外的任一模式會自動啟用--pic-struct昧碉。
fake-interlaced
預(yù)設(shè)值:無
將資料流標(biāo)記為交錯(cuò)式英染,即使它并未以交錯(cuò)式來編碼。用于編碼25p和30p為符合藍(lán)光標(biāo)準(zhǔn)的視訊。
frame-packing
預(yù)設(shè)值:無
如果在編碼3D視訊医咨,此參數(shù)設(shè)定一個(gè)位元資料流(bitstream)旗標(biāo)洪碳,用來告訴解碼器3D視訊是如何被封裝。相關(guān)的值和它們的意義可以從x264 --fullhelp的說明里得知闪金。
位元率控制
qp
預(yù)設(shè)值:無
三種位元率控制方法之一疯溺。設(shè)定x264以固定量化值(Constant Quantizer)模式來編碼視訊。這里給的值是指定P幀的量化值哎垦。I幀和B幀的量化值則是從--ipratio和--pbratio中取得囱嫩。CQ模式把某個(gè)量化值作為目標(biāo),這意味著最終檔案大小是未知的(雖然可以透過一些方法來準(zhǔn)確地估計(jì))撼泛。將值設(shè)為0會產(chǎn)生無失真輸出挠说。對于相同視覺品質(zhì),qp會比--crf產(chǎn)生更大的檔案愿题。qp模式也會停用彈性量化损俭,因?yàn)榘凑斩x“固定量化值”意味著沒有彈性量化。
此選項(xiàng)與--bitrate和--crf互斥潘酗。各種位元率控制系統(tǒng)的詳細(xì)資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD杆兵。
雖然qp不需要lookahead來執(zhí)行因此速度較快,但通常應(yīng)該改用--crf仔夺。
參閱:--bitrate, --crf, --ipratio, --pbratio
bitrate
預(yù)設(shè)值:無
三種位元率控制方法之二琐脏。以目標(biāo)位元率模式來編碼視訊。目標(biāo)位元率模式意味著最終檔案大小是已知的缸兔,但最終品質(zhì)則未知日裙。x264會嘗試把給定的位元率作為整體平均值來編碼視訊。參數(shù)的單位是千位元/秒(8位元=1位元組)惰蜜。注意昂拂,1千位元(kilobit)是1000位元,而不是1024位元抛猖。
此設(shè)定通常與--pass在兩階段(two-pass)編碼一起使用格侯。
此選項(xiàng)與--qp和--crf互斥。各種位元率控制系統(tǒng)的詳細(xì)資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD财著。
參閱:--qp, --crf, --ratetol, --pass, --stats
crf
預(yù)設(shè)值:23.0
最后一種位元率控制方法:固定位元率系數(shù)(Constant Ratefactor)联四。當(dāng)qp是把某個(gè)量化值作為目標(biāo),而bitrate是把某個(gè)檔案大小作為目標(biāo)時(shí)撑教,crf則是把某個(gè)“品質(zhì)”作為目標(biāo)朝墩。構(gòu)想是讓crf n提供的視覺品質(zhì)與qp n相同,只是檔案更小一點(diǎn)伟姐。crf值的度量單位是“位元率系數(shù)(ratefactor)”鱼辙。
CRF是借由降低“較不重要”的幀之品質(zhì)來達(dá)到此目的廉嚼。在此情況下,“較不重要”是指在復(fù)雜或高動態(tài)場景的幀倒戏,其品質(zhì)不是很耗費(fèi)位元數(shù)就是不易察覺怠噪,所以會提高它們的量化值。從這些幀里所節(jié)省下來的位元數(shù)被重新分配到可以更有效利用的幀杜跷。
CRF花費(fèi)的時(shí)間會比兩階段編碼少傍念,因?yàn)閮呻A段編碼中的“第一階段”被略過了。另一方面葛闷,要預(yù)測CRF編碼的最終位元率是不可能的憋槐。根據(jù)情況哪種位元率控制模式更好是由你來決定。
此選項(xiàng)與--qp和--bitrate互斥淑趾。各種位元率控制系統(tǒng)的詳細(xì)資訊可以參閱http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD阳仔。
參閱:--qp, --bitrate
rc-lookahead
預(yù)設(shè)值:40
設(shè)定mb-tree位元率控制和vbv-lookahead使用的幀數(shù)。最大允許值是250扣泊。
對于mb-tree部分近范,增加幀數(shù)帶來更好的效果但也會更慢。mb-tree使用的最大緩沖值是MIN(rc-lookahead, --keyint)延蟹。
對于vbv-lookahead部分评矩,當(dāng)使用vbv時(shí),增加幀數(shù)帶來更好的穩(wěn)定性和準(zhǔn)確度阱飘。vbv-lookahead使用的最大值是:
MIN(rc-lookahead, MAX(--keyint, MAX(--vbv-maxrate, --bitrate) / --vbv-bufsize * --fps))
參閱:--no-mbtree, --vbv-bufsize, --vbv-maxrate
什么是Macroblock Tree
Macroblock Tree是一個(gè)基于macroblock的qp控制方法斥杜。MB Tree的工作原理類似于古典的qp compression,只不過qcomp處理的對象是整張frame而MB Tree針對的是每個(gè)MB進(jìn)行處理沥匈。工作過程簡單來說蔗喂,是對于每個(gè)MB,向前預(yù)測一定數(shù)量的幀(該數(shù)量由rc-lookahead和keyint的較小值決定)中該MB被參考的情況高帖,根據(jù)引用次數(shù)的多寡弱恒,決定對該MB使用何種大小的qp進(jìn)行quantization。而qp的大小與被參考次數(shù)成反比棋恼,也就是說,對于被參考次數(shù)多的MB锈玉,264的解碼器認(rèn)為此對應(yīng)于緩慢變化的場景爪飘,因此給與比較高的質(zhì)量(比較低的qp數(shù)值)。至于視頻的變化率與人眼感知能力的關(guān)系拉背,這是一個(gè)基于主觀測試的經(jīng)驗(yàn)結(jié)果:視頻變化率越大 人眼的敏感度越低师崎,也就是說,人眼可以容忍快速變化場景的某些缺陷椅棺,但相對而言某些平滑場景的缺陷犁罩,人眼則相當(dāng)敏感齐蔽。注意此處說的平滑,指的是沿時(shí)間維度上場景的變化頻率床估,而非普通意義上的像素域中的場景含滴。
vbv-maxrate
預(yù)設(shè)值:0
設(shè)定重新填滿VBV緩沖的最大位元率。
VBV會降低品質(zhì)丐巫,所以必要時(shí)才使用谈况。
參閱:--vbv-bufsize, --vbv-init, VBV編碼建議
vbv-bufsize
預(yù)設(shè)值:0
設(shè)定VBV緩沖的大小(單位是千位元)递胧。
VBV會降低品質(zhì)碑韵,所以必要時(shí)才使用。
參閱:--vbv-maxsize, --vbv-init, VBV編碼建議
vbv-init
預(yù)設(shè)值:0.9
設(shè)定VBV緩沖必須填滿多少才會開始播放缎脾。
如果值小于1祝闻,初始的填滿量是:vbv-init * vbv-bufsize。否則該值即是初始的填滿量(單位是千位元)遗菠。
參閱:--vbv-maxsize, --vbv-bufsize, VBV編碼建議
crf-max
預(yù)設(shè)值:無
一個(gè)類似--qpmax的設(shè)定联喘,除了指定的是最大位元率系數(shù)而非最大量化值。當(dāng)使用--crf且啟用VBV時(shí)舷蒲,此選項(xiàng)才會運(yùn)作耸袜。它阻止x264降低位元率系數(shù)(亦稱為“品質(zhì)”)到低于給定的值,即使這樣做會違反VBV的條件約束牲平。此設(shè)定主要適用于自訂資料流伺服器堤框。詳細(xì)資訊可以參閱http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=81eee062a4ce9aae1eceb3befcae855c25e5ec52。
參閱:--crf, --vbv-maxrate, --vbv-bufsize
qpmin
預(yù)設(shè)值:0
定義x264可以使用的最小量化值纵柿。量化值越小蜈抓,輸出就越接近輸入。到了一定的值昂儒,x264的輸出看起來會跟輸入一樣沟使,即使它并不完全相同。通常沒有理由允許x264花費(fèi)比這更多的位元數(shù)在任何特定的巨集區(qū)塊上渊跋。
當(dāng)彈性量化啟用時(shí)(預(yù)設(shè)啟用)腊嗡,不建議提高qpmin,因?yàn)檫@會降低幀里面平面背景區(qū)域的品質(zhì)拾酝。
參閱:--qpmax, --ipratio
關(guān)于qpmin的預(yù)設(shè)值:在x264 r1795版本之前燕少,該選項(xiàng)預(yù)設(shè)值為10。
qpmax
預(yù)設(shè)值:51
定義x264可以使用的最大量化值蒿囤。預(yù)設(shè)值51是H.264規(guī)格可供使用的最大量化值客们,而且品質(zhì)極低。此預(yù)設(shè)值有效地停用了qpmax。如果想要限制x264可以輸出的最低品質(zhì)底挫,可以將此值設(shè)小一點(diǎn)(通常30~40)恒傻,但通常并不建議調(diào)整此值。
參閱:--qpmin, --pbratio, --crf-max
qpstep
預(yù)設(shè)值:4
設(shè)定兩幀之間量化值的最大變更幅度建邓。
ratetol
預(yù)設(shè)值:1.0
此參數(shù)有兩個(gè)目的:
在一階段位元率編碼時(shí)盈厘,此設(shè)定控制x264可以偏離目標(biāo)平均位元率的百分比±苑欤可以指定inf來完全停用溢出偵測(overflow detection)扑庞。可以設(shè)定的最小值是0.01拒逮。值設(shè)得越大罐氨,x264可以對接近電影結(jié)尾的復(fù)雜場景作出越好的反應(yīng)。此目的的度量單位是百分比(例如滩援,1.0等于允許1%的位元率偏差)栅隐。
很多電影(例如動作片)在電影結(jié)尾時(shí)是最復(fù)雜的。因?yàn)橐浑A段編碼并不知道這一點(diǎn)玩徊,結(jié)尾所需的位元數(shù)通常被低估租悄。將ratetol設(shè)為inf可以減輕此情況,借由允許編碼以更像--crf的模式運(yùn)行恩袱,但檔案大小會暴增泣棋。
當(dāng)VBV啟用時(shí)(即指定了--vbv-開頭的選項(xiàng)),此設(shè)定也會影響VBV的強(qiáng)度畔塔。值設(shè)得越大潭辈,允許VBV在冒著可能違反VBV設(shè)定的風(fēng)險(xiǎn)下有越大的波動。
ipratio
預(yù)設(shè)值:1.40
修改I幀量化值相比P幀量化值的目標(biāo)平均增量澈吨。越大的值會提高I幀的品質(zhì)把敢。
參閱:--pbratio
pbratio
預(yù)設(shè)值:1.30
修改B幀量化值相比P幀量化值的目標(biāo)平均減量。越大的值會降低B幀的品質(zhì)谅辣。當(dāng)mbtree啟用時(shí)(預(yù)設(shè)啟用)修赞,此設(shè)定無作用,mbtree會自動計(jì)算最佳值桑阶。
參閱:--ipratio
chroma-qp-offset
預(yù)設(shè)值:0
在編碼時(shí)增加色度平面量化值的偏移柏副。偏移可以為負(fù)數(shù)。
當(dāng)使用psy-rd或psy-trellis時(shí)蚣录,x264自動降低此值來提高亮度的品質(zhì)割择,其后降低色度的品質(zhì)。這些設(shè)定的預(yù)設(shè)值會使chroma-qp-offset再減去2包归。
注意:x264僅在同一量化值編碼亮度平面和色度平面,直到量化值29。在此之后公壤,色度逐步以比亮度低的量被量化换可,直到亮度在q51和色度在q39為止。此行為是由H.264標(biāo)準(zhǔn)所要求厦幅。
aq-mode
預(yù)設(shè)值:1
彈性量化模式沾鳄。沒有AQ時(shí),x264很容易分配不足的位元數(shù)到細(xì)節(jié)較少的部分确憨。AQ是用來更好地分配視訊里所有巨集區(qū)塊之間的可用位元數(shù)译荞。此設(shè)定變更AQ會重新分配位元數(shù)到什么范圍里:
0:完全不使用AQ。
1:允許AQ重新分配位元數(shù)到整個(gè)視訊和幀內(nèi)休弃。
2:自動變化(Auto-variance)AQ吞歼,會嘗試對每幀調(diào)整強(qiáng)度。(實(shí)驗(yàn)性的)
參閱:--aq-strength
aq-strength
預(yù)設(shè)值:1.0
彈性量化強(qiáng)度塔猾。設(shè)定AQ偏向低細(xì)節(jié)(平面)的巨集區(qū)塊之強(qiáng)度篙骡。不允許為負(fù)數(shù)。0.0~2.0以外的值不建議丈甸。
參閱:--aq-mode
pass
預(yù)設(shè)值:無
此為兩階段編碼的一個(gè)重要設(shè)定糯俗。它控制x264如何處理--stats檔案。有三種設(shè)定:
1:建立一個(gè)新的統(tǒng)計(jì)資料檔案睦擂。在第一階段使用此選項(xiàng)得湘。
2:讀取統(tǒng)計(jì)資料檔案。在最終階段使用此選項(xiàng)顿仇。
3:讀取統(tǒng)計(jì)資料檔案并更新淘正。
統(tǒng)計(jì)資料檔案包含每個(gè)輸入幀的資訊,可以輸入到x264以改善輸出夺欲。構(gòu)想是執(zhí)行第一階段來產(chǎn)生統(tǒng)計(jì)資料檔案跪帝,然后第二階段將建立一個(gè)最佳化的視訊編碼。改善的地方主要是從更好的位元率控制中獲益些阅。
參閱:--stats, --bitrate, --slow-firstpass, X264統(tǒng)計(jì)資料檔案
stats
預(yù)設(shè)值:"x264_2pass.log"
設(shè)定x264讀取和寫入統(tǒng)計(jì)資料檔案的位置伞剑。
參閱:--pass, X264統(tǒng)計(jì)資料檔案
no-mbtree
預(yù)設(shè)值:無
停用巨集區(qū)塊樹(macroblock tree)位元率控制。使用巨集區(qū)塊樹位元率控制會改善整體壓縮率市埋,借由追蹤跨幀的時(shí)間傳播(temporal propagation)并相應(yīng)地加權(quán)黎泣。除了已經(jīng)存在的統(tǒng)計(jì)資料檔案之外,多重階段編碼還需要一個(gè)新的統(tǒng)計(jì)資料檔案缤谎。
建議:預(yù)設(shè)值
參閱:--rc-lookahead
qcomp
預(yù)設(shè)值:0.60
量化值曲線壓縮系數(shù)抒倚。0.0是固定位元率,1.0則是固定量化值坷澡。
當(dāng)mbtree啟用時(shí)托呕,它會影響mbtree的強(qiáng)度(qcomp越大,mbtree越弱)。
建議:預(yù)設(shè)值
參閱:--cplxblur, --qblur
cplxblur
預(yù)設(shè)值:20.0
以給定的半徑范圍套用高斯模糊(gaussian blur)于量化值曲線项郊。這意味著分配給每個(gè)幀的量化值會被它的鄰近幀模糊掉馅扣,以此來限制量化值波動。
參閱:--qcomp, --qblur
qblur
預(yù)設(shè)值:0.5
在曲線壓縮之后着降,以給定的半徑范圍套用高斯模糊于量化值曲線差油。不怎么重要的設(shè)定。
參閱:--qcomp, --cplxblur
zones
預(yù)設(shè)值:無
調(diào)整視訊的特定片段之設(shè)定任洞⌒罾可以修改每區(qū)段的大多數(shù)x264選項(xiàng)。
一個(gè)單一區(qū)段的形式為<起始幀>,<結(jié)束幀>,<選項(xiàng)>交掏。
多個(gè)區(qū)段彼此以"/"分隔妆偏。
選項(xiàng):
這兩個(gè)是特殊選項(xiàng)。每區(qū)段只能設(shè)定其中一個(gè)耀销,而且如果有設(shè)定其中一個(gè)楼眷,它必須為該區(qū)段列出的第一個(gè)選項(xiàng):
b=<浮點(diǎn)數(shù)> 套用位元率乘數(shù)在此區(qū)段。在額外調(diào)整高動態(tài)和低動態(tài)場景時(shí)很有用熊尉。
q=<整數(shù)> 套用固定量化值在此區(qū)段罐柳。在套用于一段范圍的幀時(shí)很有用。
其他可用的選項(xiàng)如下:
ref=<整數(shù)>
b-bias=<整數(shù)>
scenecut=<整數(shù)>
no-deblock
deblock=<整數(shù)>:<整數(shù)>
deadzone-intra=<整數(shù)>
deadzone-inter=<整數(shù)>
direct=<字串>
merange=<整數(shù)>
nr=<整數(shù)>
subme=<整數(shù)>
trellis=<整數(shù)>
(no-)chroma-me
(no-)dct-decimate
(no-)fast-pskip
(no-)mixed-refs
psy-rd=<浮點(diǎn)數(shù)>:<浮點(diǎn)數(shù)>
me=<字串>
no-8x8dct
b-pyramid=<字串>
限制:
一個(gè)區(qū)段的參照幀數(shù)無法超過--ref所指定的大小狰住。
無法開啟或關(guān)閉scenecut张吉;如果--scenecut最初為開啟(>0),則只能改變scenecut的大小催植。
如果使用--me esa/tesa肮蛹,merange無法超過最初所指定的大小。
如果--subme最初指定為0创南,則無法變更subme伦忠。
如果--me最初指定為dia、hex或umh稿辙,則無法將me設(shè)為esa為tesa昆码。
范例:0,1000,b=2/1001,2000,q=20,me=3,b-bias=-1000
建議:預(yù)設(shè)值
qpfile
預(yù)設(shè)值:無
手動覆寫標(biāo)準(zhǔn)的位元率控制。指定一個(gè)檔案邻储,為指定的幀賦予量化值和幀類型赋咽。格式為“幀號 幀類型 量化值”。例如:
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*
不需要指定每個(gè)幀吨娜。
使用-1作為所需的量化值允許x264自行選擇最佳的量化值脓匿,在只需設(shè)定幀類型時(shí)很有用。
在指定了大量的幀類型和量化值時(shí)仍然讓x264間歇地自行選擇宦赠,會降低x264的效能陪毡。
"Keyframe"是一個(gè)泛用關(guān)鍵幀/搜尋點(diǎn)米母,如果--open-gop是none則等同于一個(gè)IDR I幀,否則等同于一個(gè)加上Recovery Point SEI旗標(biāo)的Non-IDR I幀毡琉。
分析
partitions
預(yù)設(shè)值:p8x8,b8x8,i8x8,i4x4
H.264視訊在壓縮過程中劃分為16x16的巨集區(qū)塊爱咬。這些區(qū)塊可以進(jìn)一步劃分為更小的分割,這就是此選項(xiàng)要控制的部分绊起。
此選項(xiàng)可以啟用個(gè)別分割。分割依不同幀類型啟用燎斩。
可用的分割:p8x8, p4x4, b8x8, i8x8, i4x4, none, all
I:i8x8虱歪、i4x4。
P:p8x8(也會啟用p16x8/p8x16)栅表、p4x4(也會啟用p8x4/p4x8)笋鄙。
B:b8x8(也會啟用b16x8/b8x16)。
p4x4通常不怎么有用怪瓶,而且性價(jià)比極低萧落。
參閱:--no-8x8dct
direct
預(yù)設(shè)值:spatial
設(shè)定"direct"動態(tài)向量(motion vectors)的預(yù)測模式。有兩種模式可用:spatial和temporal洗贰≌裔可以指定none來停用direct動態(tài)向量,和指定auto來允許x264在兩者之間切換為適合的模式敛滋。如果設(shè)為auto许布,x264會在編碼結(jié)束時(shí)輸出使用情況的資訊。auto最適合用于兩階段編碼绎晃,但也可用于一階段編碼蜜唾。在第一階段auto模式,x264持續(xù)記錄每個(gè)方法執(zhí)行到目前為止的好壞庶艾,并從該記錄挑選下一個(gè)預(yù)測模式袁余。注意,僅在第一階段有指定auto時(shí)咱揍,才應(yīng)該在第二階段指定auto颖榜;如果第一階段不是指定auto,第二階段將會預(yù)設(shè)為temporal述召。none模式會浪費(fèi)位元數(shù)朱转,因此強(qiáng)烈不建議。
建議:auto
no-weightb
預(yù)設(shè)值:無
H.264允許“加權(quán)”B幀的參照积暖,它允許變更每個(gè)參照影響預(yù)測圖片的程度藤为。此選項(xiàng)停用該功能。
建議:預(yù)設(shè)值
weightp
預(yù)設(shè)值:2
使x264能夠使用明確加權(quán)預(yù)測(explicit weighted prediction)來改善P幀的壓縮夺刑。亦改善淡入/淡出的品質(zhì)缅疟。模式越高越慢分别。
注意:在為Adobe Flash編碼時(shí),將值設(shè)為1存淫,否則它的解碼器會產(chǎn)生不自然痕跡(artifacts)耘斩。Flash 10.1修正了此bug。
模式:
0:停用桅咆。
1:簡易:分析淡入/淡出括授,但不分析重復(fù)參照幀。
2:智慧:分析淡入/淡出和重復(fù)參照幀岩饼。
me
預(yù)設(shè)值:hex
設(shè)定全像素(full-pixel)動態(tài)估算(motion estimation)的方法荚虚。有五個(gè)選項(xiàng):
dia(diamond):最簡單的搜尋方法,起始于最佳預(yù)測器(predictor)籍茧,檢查上版述、左、下寞冯、右方一個(gè)像素的動態(tài)向量渴析,挑選其中最好的一個(gè),并重復(fù)此過程直到它不再找到任何更好的動態(tài)向量為止吮龄。
hex(hexagon):由類似策略組成俭茧,除了它使用周圍6點(diǎn)范圍為2的搜尋,因此叫做六邊形漓帚。它比dia更有效率且?guī)缀鯖]有變慢恢恼,因此作為一般用途的編碼是個(gè)不錯(cuò)的選擇。
umh(uneven multi-hex):比hex更慢胰默,但搜尋復(fù)雜的多六邊形圖樣以避免遺漏難以找到的動態(tài)向量场斑。不像hex和dia,merange參數(shù)直接控制umh的搜尋半徑牵署,允許增加或減少廣域搜尋的大小漏隐。
esa(exhaustive):一種在merange內(nèi)整個(gè)動態(tài)搜尋空間的高度最佳化智慧搜尋。雖然速度較快奴迅,但數(shù)學(xué)上相當(dāng)于搜尋該區(qū)域每個(gè)單一動態(tài)向量的暴力(bruteforce)方法青责。不過,它仍然比UMH還要慢取具,而且沒有帶來很大的好處脖隶,所以對于日常的編碼不是特別有用。
tesa(transformed exhaustive):一種嘗試接近在每個(gè)動態(tài)向量執(zhí)行Hadamard轉(zhuǎn)換法比較的效果之演算法暇检,就像exhaustive产阱,但效果好一點(diǎn)而速度慢一點(diǎn)。
參閱:--merange
merange
預(yù)設(shè)值:16
merange控制動態(tài)搜尋的最大范圍(單位是像素)块仆。對于hex和dia构蹬,范圍限制在4~16王暗。對于umh和esa,它可以增加到超過預(yù)設(shè)值16來允許范圍更廣的動態(tài)搜尋庄敛,對于HD視訊和高動態(tài)鏡頭很有用俗壹。注意,對于umh藻烤、esa和tesa绷雏,增加merange會大幅減慢編碼速度。
參閱:--me
mvrange
預(yù)設(shè)值:-1 (自動)
設(shè)定動態(tài)向量的最大(垂直)范圍(單位是像素)怖亭。預(yù)設(shè)值依level不同:
Level 1/1b:64之众。
Level 1.1~2.0:128。
Level 2.1~3.0:256依许。
Level 3.1+:512。
注意:如果想要手動覆寫mvrange缀蹄,在設(shè)定時(shí)從上述值減去0.25(例如--mvrange 127.75)峭跳。
建議:預(yù)設(shè)值
mvrange-thread
預(yù)設(shè)值:-1 (自動)
設(shè)定執(zhí)行緒之間的最小動態(tài)向量緩沖。不要碰它缺前。
建議:預(yù)設(shè)值
subme
預(yù)設(shè)值:7
設(shè)定子像素(subpixel)估算復(fù)雜度蛀醉。值越高越好。層級1~5只是控制子像素細(xì)分(refinement)強(qiáng)度衅码。層級6為模式?jīng)Q策啟用RDO拯刁,而層級8為動態(tài)向量和內(nèi)部預(yù)測模式啟用RDO。RDO層級明顯慢于先前的層級逝段。
使用小于2的值不但會啟用較快且品質(zhì)較低的lookahead模式垛玻,而且導(dǎo)致較差的--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)
建議:預(yù)設(shè)值帚桩,或者更高,除非速度非常重要
psy-rd
預(yù)設(shè)值:1.0:0.0
第一個(gè)數(shù)是Psy-RDO的強(qiáng)度(需要subme>=6)嘹黔。第二個(gè)數(shù)是Psy-Trellis的強(qiáng)度(需要trellis>=1)账嚎。注意,Trellis仍然被視為“實(shí)驗(yàn)性的”儡蔓,而且?guī)缀蹩梢钥隙ㄖ辽倏ㄍú贿m合使用郭蕉。
psy-rd的解釋可以參閱http://forum.doom9.org/showthread.php?t=138293。
no-psy
預(yù)設(shè)值:無
停用所有會降低PSNR或SSIM的視覺最佳化喂江。這也會停用一些無法透過x264的命令列引數(shù)設(shè)定的內(nèi)部psy最佳化召锈。
建議:預(yù)設(shè)值
no-mixed-refs
預(yù)設(shè)值:無
混合參照會以每個(gè)8x8分割為基礎(chǔ)來選取參照,而不是以每個(gè)巨集區(qū)塊為基礎(chǔ)获询。當(dāng)使用多個(gè)參照幀時(shí)這會改善品質(zhì)烟勋,雖然要損失一些速度规求。設(shè)定此選項(xiàng)會停用該功能。
建議:預(yù)設(shè)值
參閱:--ref
no-chroma-me
預(yù)設(shè)值:無
通常卵惦,亮度(luma)和色度(chroma)兩個(gè)平面都會做動態(tài)估算阻肿。此選項(xiàng)停用色度動態(tài)估算來提高些微速度。
建議:預(yù)設(shè)值
no-8x8dct
預(yù)設(shè)值:無
彈性8x8離散余弦轉(zhuǎn)換(Adaptive 8x8 DCT)使x264能夠智慧彈性地使用I幀的8x8轉(zhuǎn)換沮尿。此選項(xiàng)停用該功能丛塌。
建議:預(yù)設(shè)值
trellis
預(yù)設(shè)值:1
執(zhí)行Trellis quantization來提高效率。
0:停用畜疾。
1:只在一個(gè)巨集區(qū)塊的最終編碼上啟用赴邻。
2:在所有模式?jīng)Q策上啟用。
在巨集區(qū)塊時(shí)提供了速度和效率之間的良好平衡啡捶。在所有決策時(shí)則更加降低速度姥敛。
建議:預(yù)設(shè)值
注意:需要--cabac
no-fast-pskip
預(yù)設(shè)值:無
停用P幀的早期略過偵測(early skip detection)。非常輕微地提高品質(zhì)瞎暑,但要損失很多速度彤敛。
建議:預(yù)設(shè)值
no-dct-decimate
預(yù)設(shè)值:無
DCT Decimation會舍棄它認(rèn)為“不必要的”DCT區(qū)塊。這會改善編碼效率了赌,而降低的品質(zhì)通常微不足道墨榄。設(shè)定此選項(xiàng)會停用該功能。
建議:預(yù)設(shè)值
nr
預(yù)設(shè)值:0
執(zhí)行快速的雜訊削減(noise reduction)勿她。根據(jù)此值估算影片的雜訊袄秩,并借由在量化之前舍棄小細(xì)節(jié)來嘗試移除雜訊。這可能比不上優(yōu)良的外部雜訊削減篩選的品質(zhì)逢并,但它執(zhí)行得非持纾快。
建議:預(yù)設(shè)值砍聊,或者100~1000
deadzone-inter/intra
預(yù)設(shè)值:21/11
設(shè)定inter/intra亮度量化反應(yīng)區(qū)(deadzone)的大小猪狈。反應(yīng)區(qū)的范圍應(yīng)該在0~32。此值設(shè)定x264會任意舍棄而不嘗試保留細(xì)微細(xì)節(jié)的層級辩恼。非常細(xì)微的細(xì)節(jié)既難以看見又耗費(fèi)位元數(shù)雇庙,舍棄這些細(xì)節(jié)可以不用浪費(fèi)位元數(shù)在視訊的此類低收益畫面上。反應(yīng)區(qū)與--trellis不相容灶伊。
建議:預(yù)設(shè)值
cqm
預(yù)設(shè)值:flat
設(shè)定所有自訂量化矩陣(custom quantization matrices)為內(nèi)建的預(yù)設(shè)之一疆前。內(nèi)建預(yù)設(shè)有flat和JVT。
建議:預(yù)設(shè)值
參閱:--cqmfile
cqmfile
預(yù)設(shè)值:無
從一個(gè)指定的JM相容檔案來設(shè)定自訂量化矩陣聘萨。覆寫所有其他--cqm開頭的選項(xiàng)竹椒。
建議:預(yù)設(shè)值
參閱:--cqm
cqm4* / cqm8*
預(yù)設(shè)值:無
--cqm4:設(shè)定所有4x4量化矩陣。需要16個(gè)以逗號分隔的整數(shù)清單米辐。
--cqm8:設(shè)定所有8x8量化矩陣胸完。需要64個(gè)以逗號分隔的整數(shù)清單书释。
--cqm4i、--cqm4p赊窥、--cqm8i爆惧、--cqm8p:設(shè)定亮度和色度量化矩陣。
--cqm4iy锨能、--cqm4ic扯再、--cqm4py、--cqm4pc:設(shè)定個(gè)別量化矩陣址遇。
建議:預(yù)設(shè)值
視訊可用性資訊
這些選項(xiàng)在輸出資料流里設(shè)定一個(gè)旗標(biāo)熄阻,旗標(biāo)可以被解碼器讀取并采取可能的動作。值得一提的是大多數(shù)選項(xiàng)在大多數(shù)情況下毫無意義倔约,而且通常被解碼器忽略秃殉。
overscan
預(yù)設(shè)值:undef
如何處理溢出掃描(overscan)。溢出掃描的意思是裝置只顯示影像的一部分浸剩。
可用的值:
undef:未定義钾军。
show:指示要顯示整個(gè)影像。理論上如果有設(shè)定則必須被遵守乒省。
crop:指示此影像適合在有溢出掃描功能的裝置上播放。不一定被遵守畦木。
建議:在編碼之前裁剪(Crop)袖扛,然后如果裝置支援則使用show,否則不理會
videoformat
預(yù)設(shè)值:undef
指示此視訊在編碼/數(shù)位化(digitizing)之前是什么格式十籍。
可用的值:component, pal, ntsc, secam, mac, undef
建議:來源視訊的格式蛆封,或者未定義
fullrange
預(yù)設(shè)值:off
指示是否使用亮度和色度層級的全范圍。如果設(shè)為off勾栗,則會使用有限范圍惨篱。
詳細(xì)資訊可以參閱http://en.wikipedia.org/wiki/YCbCr。
建議:如果來源是從類比視訊數(shù)位化围俘,將此設(shè)為off砸讳。否則設(shè)為on
colorprim
預(yù)設(shè)值:undef
設(shè)定以什么色彩原色轉(zhuǎn)換成RGB。
可用的值:undef, bt709, bt470m, bt470bg, smpte170m, smpte240m, film
詳細(xì)資訊可以參閱http://en.wikipedia.org/wiki/RGB_color_space和http://en.wikipedia.org/wiki/YCbCr界牡。
建議:預(yù)設(shè)值簿寂,除非你知道來源使用什么色彩原色
transfer
預(yù)設(shè)值:undef
設(shè)定要使用的光電子(opto-electronic)傳輸特性(設(shè)定用于修正的色差補(bǔ)正(gamma)曲線)。
可用的值:undef, bt709, bt470m, bt470bg, linear, log100, log316, smpte170m, smpte240m
詳細(xì)資訊可以參閱http://en.wikipedia.org/wiki/Gamma_correction宿亡。
建議:預(yù)設(shè)值常遂,除非你知道來源使用什么傳輸特性
colormatrix
預(yù)設(shè)值:undef
設(shè)定用于從RGB原色中取得亮度和色度的矩陣系數(shù)。
可用的值:undef, bt709, fcc, bt470bg, smpte170m, smpte240m, GBR, YCgCo
詳細(xì)資訊可以參閱http://en.wikipedia.org/wiki/YCbCr挽荠。
建議:來源使用的矩陣克胳,或者預(yù)設(shè)值
chromaloc
預(yù)設(shè)值:0
設(shè)定色度采樣位置(如ITU-T規(guī)格的附錄E所定義)
可用的值:0~5
參閱x264的vui.txt平绩。
建議:
如果是從正確次采樣4:2:0的MPEG1轉(zhuǎn)碼,而且沒有做任何色彩空間轉(zhuǎn)換漠另,則應(yīng)該將此選項(xiàng)設(shè)為1捏雌。
如果是從正確次采樣4:2:0的MPEG2轉(zhuǎn)碼,而且沒有做任何色彩空間轉(zhuǎn)換酗钞,則應(yīng)該將此選項(xiàng)設(shè)為0腹忽。
如果是從正確次采樣4:2:0的MPEG4轉(zhuǎn)碼,而且沒有做任何色彩空間轉(zhuǎn)換砚作,則應(yīng)該將此選項(xiàng)設(shè)為0窘奏。
否則,維持預(yù)設(shè)值葫录。
nal-hrd
預(yù)設(shè)值:none
標(biāo)志HRD資訊着裹。這是藍(lán)光資料流、電視廣播和幾個(gè)其他專業(yè)范圍所需要的米同。
可用的值:
none:不指定HRD資訊骇扇。
vbr:指定HRD資訊。
cbr:指定HRD資訊并以--bitrate指定的位元率來封裝位元資料流面粮。需要--bitrate模式的位元率控制少孝。
建議:預(yù)設(shè)值,除非需要標(biāo)志此資訊
參閱:--vbv-bufsize, --vbv-maxrate, --aud
pic-struct
預(yù)設(shè)值:無
強(qiáng)制在Picture Timing SEI里傳送pic_struct熬苍。
當(dāng)使用--pulldown或--tff/--bff時(shí)會自動啟用稍走。
建議:預(yù)設(shè)值
crop-rect
預(yù)設(shè)值:無
指定一個(gè)位元資料流層級的裁剪矩形。如果想要解碼器在播放時(shí)裁剪柴底,但因?yàn)槟承┰虿幌胍眉粢曈嵲僮寈264編碼婿脸,則可以使用此選項(xiàng)。指定的值是在播放時(shí)應(yīng)該被裁剪的像素柄驻。
輸入/輸出
output
預(yù)設(shè)值:無
指定輸出檔名狐树。指定的副檔名決定視訊的輸出格式。如果副檔名無法辨識鸿脓,則預(yù)設(shè)輸出格式是原始格式(raw)視訊資料流(通常儲存為.264副檔名)抑钟。
特殊位置NUL(Windows)或/dev/null(Unix)指明輸出應(yīng)該被丟棄。這在使用--pass 1時(shí)特別有用野哭,因?yàn)槲ㄒ辉诤醯妮敵鍪?-stats味赃。
muxer
預(yù)設(shè)值:auto
指定要輸出什么格式。
可用的值:auto, raw, mkv, flv, mp4
auto選項(xiàng)會根據(jù)提供的輸出檔名挑選一個(gè)多工器(muxer)虐拓。
建議:預(yù)設(shè)值
參閱:--output
demuxer
預(yù)設(shè)值:auto
設(shè)定x264使用什么解多工器(demuxer)和解碼器來剖析輸入視訊心俗。
可用的值:auto, raw, y4m, avs, lavf, ffms
如果輸入檔案有raw、y4m或avs的副檔名,則x264會使用相關(guān)解多工器來讀取檔案城榛。標(biāo)準(zhǔn)輸入使用原始格式解多工器揪利。否則,x64會嘗試以ffms來開啟檔案狠持,然后再嘗試以lavf來開啟檔案腿堤,最后開啟失敗婆跑。
"lavf"和"ffms"選項(xiàng)需要x264以分別的程式庫(libraries)編譯喉童。如果使用到兩者之一侄泽,x264會從輸入檔案帶入時(shí)間碼(timecodes),條件是不能輸出為原始格式正勒。這有效地使x264感知VFR得院。其他選項(xiàng)可以指定--fps為固定幀率,或者指定--tcfile-in為變動幀率章贞。
建議:預(yù)設(shè)值
參閱:--input, --muxer
input-csp
預(yù)設(shè)值:無
告訴x264原始格式視訊輸入是什么色彩空間祥绞。支援的色彩空間可以從x264 --fullhelp的說明里得知。
注意鸭限,雖然有支援RGB色彩空間蜕径,但視訊在編碼之前會使用bt601(即"SD")矩陣來轉(zhuǎn)換成YUV。
參閱:--input-res, --fps
input-res
預(yù)設(shè)值:無
指定原始格式視訊輸入的解析度败京。語法是--input-res 720x576兜喻。
參閱:--input-csp, --fps