「拡張 x264 出力(GUI)の設定項目とその機能について 」ここから引用。改変)
「レート設定」タブ
 
●ビットレート
■I-Pフレーム間QP係数(%):40【--ipratio 1.4】
IフレームとPフレームの量子化値換算係数。Iに適用された平均量子化値にここの値を掛けたものがPに適用される。
値を小さくするとIフレームとPフレームのQP係数は近くなる。大きくするとPフレームの平均画質が下がるので、上げすぎはお奨めしない。
■B-Pフレーム間QP係数(%):30【--pbratio 1.3】
P フレームとBフレームの量子化値換算係数。Pに適用された平均量子化値にここの値を掛けたものがBに適用される。
■ビットレート変動量(%):60【--qcomp 0.6】
割り当てビットレートの変動許容量。値が小さいと急激なシーンの変化時にデータレートを無駄遣いする可能性あり。初期値のままで特に問題なし。頻繁かつ急激に変化するようなソースでは増やすと効果があるかもしれません。

●量子化の限度
■QPの下限:10【--qpmin 10】
最小量子化値
■OPの上限:51【--qpmax 51】
最大量子化値
■QP変動幅の最大:4【--qpstep 4】
連続フレーム間における量子化値の最大変動幅。デフォルト4。範囲1-50。アニメなど場面転換前後の落差が激しい素材では増やすと地味にシアワセになれる。8程度。素材問わず20程度とする設定例もあり。
マルチパス処理時に使われるパラメータ、最小Quantizerと最大Quantizerの指定です。この範囲に限定できるので画質を一定以上に保ちたいようなケースで役立ちます。 狭すぎると目標ビットレートから大幅にオーバーする可能性あり。

●シーンカット
■シーンカット閾値:40【--scenecut 40】
シーンチェンジを検出するしきい値=Iフレームの挿入しやすさ。高くするとたくさん入るが、不必要に入ってbitが無駄になるかもしれない。例えば場面転換と言うほどでもない画面の変化など。低くするとIの挿入頻度が減るが、やりすぎると --keyint 指定値への依存度が上がって適正箇所にIが入らない。例えば場面転換に非常に大きいPフレームが入るなど(Pは先行するIかPが無いとデコードできない)。
初期値から変更しなくても問題ありません。値を大きくすると検出されることが多くなり、1にすると全く検出を行ないません。シーンチェンジの検出が増えるとファイルサイズが大きくなり、画質が向上。適切な値を初期値の40周辺から探る感じが吉。
default値である40だと、少々足りないということが多々あり。60以上必要な場合もあるだろう。
■IDRフレーム間隔の下限:25【--min-keyint 25】
I-frames 間の最小間隔。映画は24、アニメは1程度。他は30が一般的
最小GOP(Group Of Pictures)サイズ。新しいIDRが強制挿入され、次のGOPが始まる前に連続するフレーム数の下限を指定する。--min-keyintの値より短い間隔で場面転換があったら、x264は場面転換をIフレームとしてエンコードし、新しいGOPを開始しない。
■IDRフレーム間隔の上限:250【--keyint 250】
I-frames間の最大間隔。FPS×10が一般的。但しこれは慣習的なもので、特に大きくしても画質には関係ない。H264/AVCの最大GOP間隔は純粋にシークのスムーズさを決めるだけ。
「マクロブロック」タブ
 
●マクロブロックタイプの指定
■8x8 離散コサイン変換【--8x8dct】
High Profileになる。デフォルトoff。チェックを入れるかコマンドを加えてon。
■8x8, 8x16 and 16x8 Pフレーム動き補償【--partitions "p8x8"】
■8x8, 8x16 and 16x8 Bフレーム動き補償【--partitions "b8x8"】
■※1 4x8, 4x8 and 8x4 Pフレーム動き補償【--partitions "p4x4"】
■8x8 イントラ動き補償【--partitions "i8x8"】
■4x4 イントラ動き補償【--partitions "i4x4"】
partitions
16x16のマクロブロックを、場面やフレームタイプに応じてさらに細かく分割できるようにしましょうというもの。
まるも製作所さんによると、p4x4はほとんどのケースでメリットが無い。p4x4はp8x8をつけないと効かない。i8x8は8x8dctが無ければ効かない。
8x8 Transformはブロックを8x8にしてDCT処理を行なうようにするためのオプション。ファイルサイズは少々大きくなるが画質が向上。ONにしたほうがよい。
他項目は量子化の際に使われるブロックサイズ。高画質を狙うならばチェックを多くつけておいたほうがよいが、細かく指定するとファイルサイズが大きくなります。
全部使う場合コマンドは --partitions "all"も可。(これに--8x8dctは含まれない)
デフォルトはp4x4以外ON。【--8x8dct --partitions "p8x8,b8x8,i8x8,i4x4"】

●Bフレーム設定
■Bフレームの最大連続数:2【--bframes 2】
B-Frames (B-VOPs)の最大連続数。範囲0〜16。0はB抜き。一般的には3か4。一般論としてH.264/AVC規格はBフレーム関連の機能向上が目覚ましいが、MP4コンテナに入れる場合は白紙フレーム問題に注意。
連続する最大のB Frame数、初期値は2。この値を大きくすると圧縮率が向上。
不可逆圧縮であるMPEGにおいて最も画質が劣るB-Frameが3フレーム以上続くと画質の低下を感じる人もいるため注意。
■傾向:0【--b-bias 0】
B-Framesの挿入傾向を調整。高い程Bを使う傾向が増える。低い程減る。
B-frameの使用量を調整するための設定項目。一般にいじらない方がよいでしょう。プラス方向に補正するとB-frameの使用量が増大。
■参照フレーム化:off【--b-pyramid】
デフォルトoff。チェックかコマンド追加でon。B-Frames も参照フレームに使う。白紙フレームが2枚に増える。
B-frameでI-frameとP-frameだけでなく、B-frameからの参照も許可するためのオプション。多くの場合、圧縮率は向上しますが画質がわずかに低下します。
■双方向の動き予測:off【--bime】
デフォルトoff。チェックかコマンド追加でon。動き予測の精度最適化に前後両方向の時間軸を使う。
■重み付け予測:off【--weightb】
デフォルトoff。チェックかコマンド追加でon。B-frameに参照する前後のフレームからの距離に応じた補正をかける。要B-frame 1以上。
フェードインやフェードアウトの圧縮効率改善を狙ったものだが、x264では適応的B 挿入が強く、あまり出番が無いという説もある。
フェードイン/フェードアウトのような部分での画質低下を抑えるための機能で通常はONにしておいたほうがよいかと思われます。
■適応的Bフレーム挿入:on【--no-b-adapt】
デフォルトon。チェックをはずすか上記コマンド追加でoff。
B-Frames の連続枚数を映像内容に応じて自動調節。適応的B挿入というか間引きというか。これを使えば上記が16でもBBBと3連続すら稀になる。
適応型B-Frameを使うオプションなのでONのままでよいと思います。
■動き予測方式:Auto【--direct "auto"】
B-Framesの中に「ダイレクト」というマクロブロックタイプがあった時に、そこで使うモーションベクトルの予測方式。Autoでフレーム毎に最適な方式を選ぶ。
Spatialは2D優先、Temporalは3Dの時間軸を考慮して圧縮を行ないます。圧縮率の向上ならば後者ですが、副作用で残像が残る可能性があるので、画質を優先するならばSpatialが良い。Noneは最も遅い上に画質も最悪。使わない方がいい。
「詳細」タブ
 
●動き予測
■動き予測アルゴリズム:5【--subme 5】
1(Fastest)---5(High Quality)-6(RDO Slowest)の6段階とRDOをB-frameにも適用する設定があり、初期値は5。6のRDO(Rate-Distortion-Optimizations)は5と比べて5〜10%ほど圧縮が効くことがありますが、H.264の必須サポートからは外れているようなので使わないほうが無難。PCでの再生なら6でもおそらく大丈夫。
5以上推奨。6は--subme 6のみ。6bは--subme 6に--b-rdo追加。
■サブピクセル制度:Hexagonal Search【--me "hex"】
[Fast] Diamond Search【"dia"】(解説 http://www.marumo.ne.jp/db2005_1.htm#18 ) Hexagonal Search[Default]【"hex"】, Uneven Multi-Hexagon【"umh"】(解説 http://www.marumo.ne.jp/db2005_1.htm#18 ) Exhaustive Search【"esa"】(解説 http://www.marumo.ne.jp/db2005_1.htm#7 ) [Slow]の4種類があります。高速なのはDiamond Searchなのであまり動きの激しくない素材ならばこれを選ぶとよいかもしれません。通常は初期値のHexagonal Searchか、検索精度と速度のバランスが優れているUneven Multi-Hexagon(umh)を使うのがよさそう。総当たりで検出するExhaustive Search(esa)は膨大な時間が掛かるので避けたほうが無難。
■ベクトル探索範囲:16【--merange 16】
me umhとesaの検索範囲。初期値の16or32推奨。
■参照距離:1【--ref 1】
複数参照フレームの最大数。範囲1〜16。1は複数参照しない。一般的には多くても3〜4程度まで。
■彩度動き予測:off【--no-chroma-me】
色情報による動き検出を使うかのオプション。通常はON。CLI MODEではコマンド無しがON。上記コマンドを加えてOFF。
■混合参照:off【--mixed-refs】
デフォルトはoff。コマンド追加でon。サブブロック単位で参照するフレームを変える。画質、圧縮効率は上がり、速度は落ちる。デコードも重くなる。

●詳細設定
■SAR 【sar width,sar height】
再生側に情報として渡されるアスペクト比の情報。出力時の設定に合わせておきましょう。
■スレッド数:1【--threads 1】
x264のスレッド数の指定。マルチコアCPUやHyper-Threading対応CPUではプロセッサ数に合わせた値にしておくと処理が高速化されます。マルチコアCPUではその差は顕著。ただし分散処理によって高速化される代わりに、継ぎ目でオーバーヘッドが発生するようで、微妙に出力サイズが大きくなるので注意。
0入力か、--threads "auto"で自動でCPU数を検索し、その1.5倍の数値を入れる。エンコード中のCPU使用率がほぼ100%になる。
■ノイズ除去:off【--nr 1-100000】
デフォルトはoff。Wiener フィルタを使ったDCTドメインのノイズリダクション。AVISynthの相当品より高速で、実用範囲は100-200。
H.264規格に存在しないが素材の圧縮工程に入る前に適用するので、再生機器やデコーダの機能とは関係なく使える(たんにAVISynthでフィルタをかけるようなもの)。
DCTノイズ・リダクションの強さ。出力結果によっては調整が必要になるパラメータ。
■デブロックフィルター:on,0,0【--deblock 0:0】off:--no-deblock
MPEG系は量子化のプロセスや動き補償の結果、隣接したブロックの符号化でアーティファクトが発生します。H.264ではこれを軽減するためにDeblocking filterが導入。その動作からループ・フィルターともいわれます。StrengthとThresholdのパラメータがありますが、+方向に動かして強くするとぼやけた感じに、−方向に動かすとくっきりとした感じの絵となります。どちらも範囲は−6〜+6。素材がアニメならば無効にしたほうが無難。実写ならば動きの多さと望みの出力ファイルサイズによって調整。基本的に+方向には動かさないほうが吉。
インループ・デブロッキング・フィルタ。MPEG系動画圧縮で不可避のブロックノイズ対策を映像データの中に埋め込んでしまえと言うもの。画質への影響は様々な意見があるので最初は弄らない方が良いかも。なお、再生時にデブロックフィルタをかけると機能がバッティングして良く無いとする説もある(Doom9のDoom9氏)。Deblocking strength、Deblocking Thresholdともに範囲は-6〜6。それぞれalfa C0とBetaと思われる。
■CABAC:on【--no-cabac】
デフォルトon。チェックをはずすかコマンド--no-cabac追加でoff。
Context-based Adaptive. Binary Arithmetic Codingの略で、H.264/MPEG-4 AVCのキモの部分。変動シンボル確率分布を利用し、シンボル間の相関も利用することで圧縮率を向上させています。これを無効にするとそもそもH.264を使う必要がなくなってしまうため、このオプションは有効で使うべき。
■インターレス保持
■スキップMB検出
スキップ検出の非使用。画質向上
■DCT係数間引き:on【 --no-dct-decimate】
デフォルトon、チェックをはずすか上記コマンド追加でoff。動画圧縮は映像の細かい部分を省略するようなもので、その為に様々な手法を組み合わせて使う。dct decimateもその一つ。切ると忠実度があがるが、必要なビットレートはやや上がる。一般的にDVDサイズで2000kbps程度を使うならほぼ確実にしあわせになれるかと。
誤差程度のDCT係数を間引くようになる。間引いた分圧縮率はわずかに上がり、画質は若干下がる。offにすると間引きをやめるため再現度は上がるが圧縮効率は下がる。
■RD最適化;None【--trellis 0】
Trellis RDO の適用。最終マクロブロックのみか、常時かを選択。要CABAC
DCT(Discrete Cosine Transform)で失われた情報を回復させて画質を若干向上させるモードを使用するかどうかのオプション。有効にすると処理が重くなります。画質優先ならばON。 コマンドは順に0,1,2数字が大きいほど画質優先で遅くなる。が、たいした変化は見られない気がするのでoffでいいかも。
■マトリックス:flat【--cqm "flat"】
使用するカスタム量子化マトリクスを指定。原文には You must specify the custom matrix とあるが、絶対使った方が良い、といったところ。選択肢は flat(16) か jvtの筈だが、前者は使わないのと一緒でBaselineおよび Main Profileまでの機器向け。2007秋現在、iPod, Apple TV, PSPなどが相当。jvtを使うとHigh Profileになる
CQMはカスタム量子化マトリクス(Custom Quantisation Matrix)。
量子化マトリクスは格子状にならんだ数字(*数学で言う行列*)で、個々の数字をquantum(*量子/量子化マトリクスの値*)として扱う。この個々の数字が元の映像データをどのくらい破棄するかを決める。個々の数字が大きなマトリクスは映像がソフトになり、小さなマトリクスは映像のディテイル保持率があがる。x264のデフォルトは "flat 16" マトリクスを使う。これは全ての数字が16で埋まっているもので、デコードの際に特別な扱いが不要なものだ(*Main Profile以下*)。カスタム量子化マトリクスはHigh Profileの機能で、実際にはデコード負荷は増えも減りもしないのだが、デコーダ側のサポートが必要となる。XviDのカスタム量子化マトリクスを覚えている人もあるだろう。大半のケースでデフォルトのH.263量子化で充分だったが[*1]、x264でもflat 16で充分な場合が多いと思われる。しかし中には高周波領域に高い係数が入ったマトリクスを使いたい事があるかもしれない。細かいディテイルがややスムースになり圧縮しやすくなる(*ノイズなどの細かい部分を潰せる*)。
cqmはデフォルトのflatマトリクスか、jvtマトリクスの選択。
flatマトリクスは数字が全て16で埋まっているもので、jvtマトリクスはH.264規格の技術的な作業に当ったJoint Video Teamが作ったものだ。このコマンドは外部ファイルを用意する必要が無いので使い易い。(--cqm "jvt")
*手許ではXviDのMPEG量子化マトリクスはブロックノイズが激減した記憶がある。
■ログ
x264がLogに書き出す情報の種別です。通常は変更しなくてかまいません。Noneにするのもよいかも?


| Kenのムービー計画へ >動画狂コーナーへ>AViUtlで拡張 x264 出力(GUI)の利用へ |