魔道学研究所 2011年04月22日
fc2ブログ

x264guiExでの詳細オプション設定について

2012/10/21 chroma-qp-offsetだけ加筆

x264guiExはrigaya氏によって開発、公開がされています。

前書いたときからかなり勉強してみました。guiExも慣れてきたので書いてみます。所々公的なデータに基づかない私自身の意見や見解が入ってたりします。
基本的に弄る設定で触るとどのような効果をもたらすかです。弄る設定についてなのでmb-treet制御を使わない等普通設定しないような所は書いていません。sarとか色空間指定とか時間精度指定もいらない…よね?
書いた時点で使用x264r1936 guiEX0.29。      あととりあえずaviutl+x264guiExの導入


まず簡単にI,P,Bフレームの説明します。
Iフレームはキーフレームとも言われ言うなればアニメーションGIFの最初と最後の(次の区切りの最初の)コマです。
他のフレームはこの間で変化した部分のみを記録していくため容量を落とすことが出来ます。
またこのコマは1枚絵のjpgファイルのようなもので容量は大きいのですがこのコマにはシークすることが出来ます。

PフレームはIフレームから予測されたコマです。前のコマからの差分だけを記録しているのでこのフレームから再生することは出来ません。(PCのプレイヤーで5秒毎とかに飛ばせるのは1つ前のIフレームから目的のフレームまで全てのフレームを読み込んでいるため)

BフレームはIフレーム及びPフレームから予測されたコマですがPフレームよりもさらに"いい加減"な処理を行っているコマです。物体が拡大縮小している。画面が横方向や縦方向に移動している、物体が回転している。等の情報を使い更にPフレームよりも容量を落とすことが出来ます。しかし完全な値(というのも変ですが)を取っている訳ではないのでPフレームよりも品質が落ちます。
またBフレームは他のコマと違い動画の順番に並んでいるとは限らず、処理速度的に再生に障害が出る場合があるのでパソコン以外のプレイヤーなどでは連続数の限界値が決められている場合が多いです。
例外的にintelシリーズのグラフィック機能の再生支援が有効に為っている場合は同様の障害が発生する可能性があります。(これは本当に酷いと思う)
この問題が発生する可能性があるのは連続数4以上です。パソコン以外で見る場合は指定が無くても連続数3以下にしときましょう。

パス数の設定
基本的に品質基準VBRかマルチパスのNthPASS(2pass)で出力していくことになります。
固定ビットレートは動きが激しい部分で大幅に画質が落ち、軽い設定のマルチパス(ABR)と比べ優れている部分がほとんど無いです(特性上完全なCBRにはなら無いので)
3passは2passでビットレートを近似値に納められない場合などには有効ですが普通ビットレート比画質を上昇させることはまずありません。その分他の設定を弄って重くなった方が随分マシです

固定量子化量は品質基準VBRの容量だけ大きくなったような設定です。作者曰く実験的な目的以外で使わないでくれとのことです。
チェックボックスはマルチパス用です。
nul出力→中間処理をしたファイルを残しておかないようにする。
ターボ→1パス目はビットレート変動を見るだけなので不要なオプションを無効にして高速化するオプション
自動マルチパス→設定していないとマルチパス出来ません(なんであるんだろう…)



ここ(レート・QP制御)の設定
レートQP


I-Pフレーム間QP関数(%)/初期値40
この項目はIフレームに対してPフレームをどれだけ綺麗にして良いかという設定です。高くするほどPフレームの品質が上がり容量が増えます。これを変化させるメリットはあまりないのですがビットレート指定をして出力する場合は%を上げると動きが激しい動画ではビットレートに対する品質がほんの少し(適正値を見つけたとしてもフレーム平均で0.5%以下もっと低いかも)上がります。完全な静止画に限り数値を少し下げると幸せになれるかもしれません。

P-Bフレーム間QP/初期値30
この項目はビットレートをしたエンコードにおいてPフレームに対してBフレームの品質をどれだけ綺麗にして良いかという設定です。BフレームはPフレームからの予測なのでビットレート指定ならば上げても下げても品質が下がる可能性が高いです。VBRでの1パスは自動です。
また某wikiにはmbtreet使用時無効と書いてますがマルチパス時は有効になります。

ビットレート変動量(%)/初期値60
0に近づくほどCBRに100に近づくほど品質基準な挙動を取るようになります。
名前的にVBR出力では効果が無いように思えますが実は普通に効果があったりします。
高い数値を入れることによりビットレートが必要な部分で大量にビットレートを消費するようになり、瞬間的な品質は上がりますが容量を食います。まあmaxrateなどの設定もあるので容量が余裕ならば100に近づけでも大丈夫です。(通常は50-90程度までだと言われています。)
ビットレート指定の場合は下げた場合には平均画質が上がり瞬間的な画質が下がり上げた場合は反対です。動かないシーンと動くシーンが混じってる場合は70程度にすると良い(基準値では低いという意見が多い)ですがビットレートが足りない場合は逆効果に為る可能性も充分あるのでとりあえず適当にやってみましょう。
動きが極端に少ない場合は自動的に抑制してくれる(というか変化しないだけ)ので下げる必要は特にないです。

QPの下限/初期値0
出力する際に最低どれだけの品質を保持していれば良いかです。0で可逆51で最低品質。VBR出力してこのQPなら見ても分からないというレベルに指定しておくと容量が節約できたりします。もちろん分からないだけで劣化しますが。

QPの上限/初期値69
出力する際に最高でどれだけ汚くしても良いかです。0で可逆69で最低品質。基本的に弄ると消費ビットレートが上がるだけか変わらないだけなので触る必要は無いです。

最大QP変動幅/初期値4
2つのフレーム間でどの程度品質が変化しても良いかの設定です。大きくするとほんの少しビットレート抑えられるかもしれないです。爆発シーンなどでは2フレーム間ですごく画質が変化する可能性があります。

クロマ(色差)QP 補正量/初期値 0
YUV圧縮では普通Y(輝度)とUV(輝度からの色差より表される色)で映像が成り立っています。
このオプションでは0から大きくなるほどビットレートを輪郭などを表すのに使われる輝度の方に割き小さくするほど色の方UVに割きます。
普通弄らなくてよいですが極端にビットレートが低い場合は少々大きくした方が無難です。
YUVはYCbCrと言われることもよくありこれはY(輝度) cb(輝度と青の色差) cr(輝度と赤との色差)の事です。


レート制御先行検査フレーム数/初期値40
mb-treetレート制御をどの程度のスパンで見て割り当てていくかの設定。大きくすればよりよいビットレート割り当てになり画質が上がるはず。ですが50でも過剰placeboでも60と言うことを考えるとそこまで大きくするメリットはあまり無いかもしれません。日常的に爆発が起こるようなソースだといいかもね!というか多分良いです。STGとかも
大きくするとメモリ消費量が増えファーストパスが重くなりx264.exeでのメモリ消費量が2GBを超えた時点でクラッシュします。フルHDなどをエンコードしてエラーが出る場合はここを下げると改善する可能性があります。

VBV(ビデオバッファ制御)/初期値0/0
瞬間的に最大で使用されるビットレートの設定です。パソコン以外のデコーダで制限がある場合は設定する必要があります。まあ…レベル指定しておけば大抵は大丈夫なんですけどね…単位はkbpsです
最大ビットレート 瞬間的に最大に使えるビットレート量です。
バッファサイズ  一定の間隔内で最大に使えるビットレート量です。
再生機器でどれだけまで可能か書かれていると思うのでそちらを参考に設定するならば設定してください(指定しない場合はレベルに応じて自動的に指定してくれます)


Adaptive Quantization(視覚心理適応QP)/初期値VAQ/1.0
※次に紹介するPsy-RDと合わせて動画の"見え方"を変える非常に大切なオプションです。設定によってはその他が同じ設定でもかなり画質が変わったように見えることがあります。(特に低ビットレートでは顕著です)
このオプションは1フレームの中で複雑な部分にビットレートを優先的に割り当てる処理を行います。大きくするほど顕著に、小さくするとフレーム内の差が少なくなります。
これによって得られる効果は

・小さい値を入力した場合
良い所。モスキートノイズが発生しにくくなる、同じような色を使っている部分で色むらが発生しにくくなる。
悪い所。動きが激しい場合ノイズが発生しやすくなる。同ビットレートとの比較でブロックノイズがかなり発生しやすくなる。細かい描写が再現されにくくなる。
小さい数値にするのはデジタル彩色を行ったアニメに非常に向いています。しかしデジタル彩色といえども複雑な部分が無いわけではないのでよほど余剰設定で無い限り0.2~0.3程度は設定しておいて損はないです。

・大きい値を入力した場合
良い所。ブロックノイズが発生しにくくなる、動きに強くなる、実写において質感が表現されやすくなる。
悪い所。モスキートノイズが発生しやすくなる。実際に見ている部分と強調される部分が異なる場合があり必ずしも品質が上がるわけではない。
このためスポーツや実写では上げるメリットが大きいです。また弾幕系といわれるSTGゲームでは上げると品質が大きく上がる可能性があります。

適正値は0~1.3程度でアニメで0~0.6程度実写で1程度スポーツで1.2~程度が良いと言われています。

Psy-RD(視覚心理最適化)
RDO/初期値1.00
これは人間の目で見て重要でないと判断される部分のビットレートをそぎ落とし他へ使う設定でありまたブロックノイズなどが発生している部分をボカしてゴマかすようなオプションです。
先ほどと同様に実写向けの設定でありアニメなどの動画では設定すると画質が落ちる可能性があります。
重要な部分をそぎ落として不要な部分に割り当てる可能性も高いです。
基本的にアニメで0.0実写で1.0程度が最適値だと言われています。
しかしノイズが目立つ場合はアニメでも0.3程度の設定すればよいです。デブロックフィルタが先ですが
また品質がそれなりに(17ぐらいかな?)高くなると実写でもあまり強くしない方が良いかもしれません。
また上げるとssimが間違いなく下がりますが見た目はそうとは限らないので自分で確認して判断して下さい。

trellis/期値0.00
エンコード時に端数が出た際にこの数値を参考に四捨五入のような処理を行い視覚的な調整とデータ量のバランス調整を行う設定です。上げるとよりより人間の視覚に最適化された処理を行います。
使う場合の適正値は0.2~2.00程度ですが2次元的な動画で希に単色で塗られたような色が集まっている部分が一部欠けたような見た目になる可能性があります。
またビットレートがそれほど高くない動画では若干ボケたような見た目になる可能性があります。
遅くなりますが画質的にRDOに比べデメリットは少ないので高画質を狙うなら設定してみましょう(というかまずどのような挙動をするのかためしてみてください)



ここ(フレーム)の設定
フレーム



マクロブロックタイプの指定/初期値4x4,4x8x8x4Pフレーム動き補償以外on
使用できるマクロブロックタイプを指定します。これは画像を多くのブロックの集合体と見てその1つ1つに最適なブロックを埋め込んでいく作業の際に使っても良いブロックの種類を限定するような設定です。
当然全部を指定すればより画質は上がりますが(処理時間が延びますが)レベルや処理能力の限界により指定しても良い値があったりします(携帯電話とかPSPとかみたいなの)
また4x4,4x8x8x4Pフレーム動き補償はlevel3.1より高いと企画違反になります(大抵動くけど)これはフルHDなどの動画で処理を重くしない為の規約ですが今のところ特に問題は無いのでうーん…どうなんだろう。

最大Bフレーム連続数/初期値3
PフレームとPフレームの間で最大何コマBフレームを連続させて良いかという設定です。特に2次元の動画では上げた場合に容量対品質の向上が望めます。
ただし3より高い設定にすると再生機器やintelのcpuのGPU支援(corei5みたいなやつ)で問題が発生する可能性があるので注意です。

適応的Bフレーム挿入/初期値簡易
無効にすると品質が非常に下がります。完全にするとBフレームをよりPフレームと置き換えても問題が無い部分に使うようになり品質対容量が良くなります。当然処理は重くなりますが。

Bフレーム挿入傾向
上げるとBフレームをより使うように下げるとPフレームの使用頻度が上がります。変に弄ると画質が下がるだけです。また-90から+100という閾値を持つ珍しいオプションだったりします。

シーンカット閾値/初期値40
どれだけIフレームを動的に入れるかの設定です。シーンチェンジが頻繁に発生する動画(アニメのOP等)では上げることにより品質が上がる場合が多いですが上げると間違いなく容量が増えます。

キーフレーム感覚の下限/初期値0
Iフレームを最大どの程度短いスパンで連続させて良いかの設定です。基本的に弄らなくても良いのですが余り使って欲しくない場合はフレームレートと同じぐらいに設定するのが定石です。ただしシーンカット閾値が初期値なら滅多にここが意味をなすことは少ないです。

キーフレーム感覚の上限/初期値250
Iフレームを最低何フレームに1回使わなければならないかの設定です。設定することによりここへのシークが可能になりプレイヤーの処理(飛ばしたときの)も若干軽くなります。基本的にフレームレートの10倍(10秒に1枚)が基本だと言われています。小さくし過ぎると品質に対する容量が大きくなります。

インループデブロックフィルタ/強度0/閾値0
それほど高いビットレートを使わない動画において画質を決める上で重要な設定です。
プラス方向にすればボカしおよびデノイズ処理、マイナス方向にすればシャープ化になります。
強度はその処理の強さ、閾値はその処理を行う範囲です。
ボカしを行う際はどちらもプラスにシャープ化する場合はどちらもマイナスにしてください。
基本的に実写では-1,-1アニメでは+1,+1を基準に小幅変動させるのが良いと言われています。
フィルタであらかじめボカして引き締める用途で使うと非常に良かったりします。
まあ…自分で試した方がよく分かるオプションです。




ここ(詳細)の設定

詳細



動き予測アルゴリズム/初期値Hexagonal Search
上げると動きが激しい動画に強くなる。hex→umh,umh→tesaでそれぞれ1~2,3%程度画質が良くなる処理はかなり重くなるのでビットレート指定でない限りhexで良い。
esa以上では参照距離に比例、動き予測の2乗に比例して殺人的に重くなる。(つまり小さい動画では有効だがHD以上だとumhまでが良い)

サブピクセル動き予測/初期値7
上げると処理が重くなる代わりにサブピクセルの精度が上がる。10にすると強制的にtrellisが2に設定されるので基本的に9までが最も使い易いと言われています。

動き検索範囲/初期値16
大きくすると動きを予測できる範囲が増えます。低フレームレートの動画の方が効果が高いです。
HD以下のサイズで16HDサイズでも24あれば充分でそれ以上だと画質が全く上がらなかったりします。
ただしF1とか"激しい"スポーツの動画だとそれ以上に上げても効果があるかもしれません。

動き予測方式/初期値spatial
temporalでより込み入った予測(3次元の)を行います。2次元ではspatialで良いです。
temporalの方が圧縮率が高くなりますがたまーに予測ミスにより変な"もの"が出る場合があります。
2次元のアニメとかだと目立つので(3次動画なら目立たないので)使い分けましょう。

参照距離/初期値3
単純な画質を上げる上で重要な設定です。
Bフレーム予測をどの程度前のフレームから行って良いかの設定で増やすと重くなる代わりに画質が上がります。
2次元の動画の方が効果が飛躍的に高くなる傾向にあります。
2以下にすると画質がガクっと落ちる可能性が高いです。

レート歪み最適化
画質の劣化が目につきやすい部分にビットレートをより割り振るようにする設定で
Last MB Encodeで最終パスのみAll MB Encodeですべてのパスで適正な値の検出が行われる。
基本的にLast MB Encodeで構わないが極端にビットレートを落とす場合(2Pass以上の設定かつQP30以下程度)All MB Encodeを設定すると画質が上がる場合が多い。
切るのはよほど余剰設定をしない限りやらないほうが良い。



ここ(音声)の設定

音声



音声設定。
NeroAACenc
Q-based aac
VBRでAACを出力します。同ビットレートで出力する場合は最も綺麗になりますがビットレートが安定しません。
基本的にこれに書かれているサイズは40kHz辺りを参考に書かれているので1割程度大きくなる物と見て下さい。
品質で自動的にLCとHEとHEv2を使い分けてくれます。

AAC-LC
ABRで出力されます。有効だと言われているのは80kbps~192kbps程度です。

AAC-HE
同じくですがフィルタがきつくかかっているので32~80kbpsが有効だと言われています。

AAC-HEv2
かなりきつくフィルタがかかっています。あまり聞けた音ではないですが20~32kbps程度で出力する際は選んで下さい。

2pass ABRの音声でよりサイズを近づけたい際に使います。
処理モード。通常パイプですが訪れが発生する際はwavに設定することで改善する可能性があります。

qtaacencの設定
ビットレートに対する音質ではNeroより高いがいろいろ融通がきかない(サンプリングレートとかLC指定なのにHEを使用したり指定したビットレートからかなりずれたり。)
True VBR
完全なVBRという意味。通常設定だと130~より下の設定でAACHEとなり。サンプリングレートも落とされるちなみに80kbps程度より高い場合HEよりLCの方が良いとされる。

ABR
ABR出力。サンプリングレートは落とさないでほしい…

ABR(AAC-HE)
PS使用不使用は自動

サンプリングレートを落とされたくない人はx264guiEx.iniをメモ帳で開き

[SETTING_QTAAC]
name="qtaacenc"
exe_name="qtaacenc.exe"
filename_ext=".aac"
pipe_enable=1
cmd_1pass=" %op --ignorelength --highest この部分 "%in" "%out" "

この部分と書かれたところに--samplerate keep と入力し、メモ帳を保存すればサンプリングレートが下げられずにエンコードされるようになります。



lamemp3での設定
ABRかCBRかVBRかです。
基本的に音質は同ビットレートではVBR≧ABR>>CBRと言われています。また192kbps程度からaacよりも再現性が高いと言われています。
CBR192kbps以上はあまり音質差を感じることは難しいので適当にしてもいいんじゃないかな…
音質と容量のバランスが良いのは-v0もしくは-v2が定説ですね。使ったこと無いけど多分qがvの変わりの筈
-qとか-mjとか無いけどこれはジョイントステレオはちゃんとかかってるのかな?

Ogg vorbis
112kbpsでmp3,192bps相当らしいです。実際の所はよく分からないです。再生環境が整っている人がmkvで作る用です。
日本ではマイナーですが海外ではよく使われるらしいです。ただし低ビットレート領域ではaaclcに音質で負けるので注意です。(大体100kbpsより下あたり)
プロフィール

めいたむ

Author:めいたむ
過去に書いたことが半年後には黒歴史あると思います。

カテゴリ
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カウントァー!
ブログ内検索
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる