twitter ■お問い合わせ当サイトへのリンクサイト仕様

現在位置 > LostTechnology > Movie > x264の設定

x264の設定

H.264/MPEG-4 AVCのオープンソースなエンコーダーx264の設定を紹介するページです。x264のVFWを前提に説明しています。現時点では開発途上であるため、記述したときより大きくバージョンが変わると結果が異なる可能性もあるのでご注意ください。MPEG-4対応のDVDプレーヤーでもH.264対応製品は今のところ出ていないので、家電では再生できないことにも注意が必要です。

また、x264はエンコード(圧縮)のみでデコード(再生)はサポートしていません。ffdshowなどを利用して再生することになります。

このページの情報は2005年頃までのものとかなり古いため、キャプチャーしたテレビ番組をMP4ファイルで保存したい場合は「MP4でビデオ保存」をご覧ください。x264はVFW版の開発は終了していますので……。

Bitrate

Encode-Mode
Single Pass - Bitrate
指定したビットレートで圧縮していくモードです。可変ビットレートに未対応のデバイス向けのデータを作成したり、サイズを決め打ちしなければならない場合に使用します。Average Bitrateで希望するビットレートを指定しましょう。
Single Pass - Quantizer [Default]
映像の品質を一定に保って圧縮していくモードです。Quantizerは0~51で初期値は26。たいていのケースでは、アニメならば20~22程度、実写ならば24~28程度でおそらく特に不満を感じない程度だと思います。こだわって高画質を狙うならばそこから-3~5したぐらいから試してみるのがよいでしょう。数値を1つ変えるだけで仕上がりファイルサイズが結構変わるので、許容できる画質のレベルはどの程度までなのかをファイルサイズとのバランスを考えながらいろいろ試してみてください。0を指定すると量子化を行なわず可逆圧縮モードとなるようです。実用的なサイズになるとは思えないので本当に可逆になっているのか未確認ですが、いざという場合に使えるかもしれません。
Multi Pass - First Pass / Multi Pass - First Pass (Fast)
2Passや3Passなどのマルチパス処理時に初回処理で使用するモード。マルチパスによる圧縮を行なうのであれば、まずはこのFirst Passを実行する必要があります。Fastモードは動き検索の精度を落として処理速度を上げるモードのよう。低ビットレート時にFirst Pass (Fast)を使用すると画質が低下します。Update Statsfileはチェックをつけていないと解析した結果をファイルの保存しないので必ずチェックをつけておきましょう。Statsfile nameには解析データを入れるファイルの名前を指定します。初期値のままで問題ありません。
Multi Pass - Nth Pass
2Passなどの実際の圧縮処理を実行するモードです。この処理を行なう前に必ず同じ設定でFirst Passを実行しておかなければなりません。Statsfile nameは必ず解析したものを使ってください。Update Statsfileのチェックを外しておくと解析した情報が保存されず、3Passなどさらにマルチパスを深く進めることができないので注意しましょう。

Rate Control

Bitrate
Keyframe boost
画質の基準となるキーフレームを最大でどの程度増幅するかの設定です。値を大きくすると画質が向上します。
B-frames reduction
B-frameの量を調整するオプションです。ファイルサイズを抑えたい場合はB-frameを増やすべきなので調整すると効果が出ます。Nth Passではこのパラメータを大きくするとB-fframeの量が増えるので、希望のファイルサイズという中では結果的に高画質になることでしょう。
Bitrate variability
割り当てビットレートの変動許容量です。値が小さいと急激なシーンの変化時に無駄にデータレートを無駄遣いする可能性があります。これも初期値のままで特に問題はないでしょう。動きの量が頻繁かつ急激に変化するようなソースでは増やすと効果があるかもしれません。
Quantization Limits
Min QP / Max QP / Max QP Step
マルチパス処理時に使われるパラメータで、最小Quantizerと最大Quantizerの指定です。この範囲に限定できるので画質を一定以上に保ちたいようなケースで役立ちます。
Scene Cuts
Scene Cut Threshold
シーンチェンジを検出するしきい値です。初期値から変更しなくても問題ありません。値を大きくすると検出されることが多くなり、1を指定するとまったく検出を行ないません。シーンチェンジの検出が増えるとファイルサイズが大きくなりますが、画質が向上します。必要以上に検出しないように適切な値を初期値の40周辺から探る感じでよいでしょう。
Min IDR-frame interval / Max IDR-frame interval
IDR-frameの最小間隔と最大間隔を指定する設定項目。MPEG-1/2/4と異なり、H.264はP-frameが直前だけでなくそれよりも前のフレームを参照できるように改良が加えられているため、シーク時にI-frameを確実に利用できるとは限りません。そのため、最大間隔を大きくするとシークが遅くなるというデメリットが発生します。IDR-frameは以降のP-frameにIDR-frameよりも前のフレーム参照を禁止するため、シーク速度の向上に寄与することでしょう。Max IDR-frame intervalはXviDでいうところのMaximum I-frame intervalのようなものだと考えてください。

MBs&Frames

Partitions
8x8 Transformはブロックを8x8にしてDCT処理を行なうようにするためのオプション。ファイルサイズは少々大きくなるが画質が向上するようです。オンにしたほうがよいと思います。
ほかは量子化の際に使われるブロックサイズのようです。高画質を狙うならばチェックを多くつけておいたほうがよいでしょう。ただしあまり細かくするとファイルサイズが大きくなってしまいます。Trellisをサポートするようになってから、4x4, 4x8 and 8x4 P-frame searchにチェックを付けているとブロックノイズが増えているような気がするけど同一ソースでの比較はしていないから気のせいかも。
B Frames
Use as references
B-frameでI-frameとP-frameだけでなく、B-frameからの参照も許可するためのオプションです。ONにするとAVIファイルに入れる場合は映像と音が数フレームずれてしまうので気になるならばOFFにしたほうがよいと思います。AVIファイルで使う場合はAVI-Mux GUIで音声をずらして結合するなどの対策が必要です。多くの場合、圧縮率は向上しますが画質がわずかに低下します。
Adaptive
初期値はオン。適応型B-Frameを使うオプションなのでオンのままでよいと思います。
Weighted biprediction
フェードイン/フェードアウトのような部分での画質低下を抑えるための機能で通常はオンにしておいたほうがよいかと思われます。
Max consecutive
連続する最大のB Frame数です。初期値は2ですが、この値を大きくすれば圧縮率も向上します。この項目は過去の経験則が活かせる部分です。自分が行なったブラインドテストでは、不可逆圧縮であるMPEGにおいて最も画質が劣るB-Frameが3フレーム以上続くと画質の低下を感じる人が多かったので、最大でも2までにしておいたほうがよいと思います。
Bias
B-frameの使用量を調整するための設定項目です。通常はオフのまま使いましょう。プラス方向に補正するとB-frameの使用量が増大します。
Direct mode
Spatialは2D優先、Temporalは3Dの時間軸を考慮して圧縮を行ないます。圧縮率の向上ならば後者ですが副作用で残像が残る可能性があることを考えると画質を優先するならばSpatialにしておいたほうがよさそうです。

More...

Motion Estimation
Partition decision
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でもおそらく大丈夫だと思います。それと、圧縮効率よりも速度を優先して1~4を指定するならば、わざわざH.264にせずXviDなどを使ったほうがよいので、普通は初期値の5のままでよいでしょう。
Method
[Fast] Diamond Search(解説), Hexagonal Search[Default], Uneven Multi-Hexagon(解説), Exhaustive Search(解説) [Slow]の4種類があります。高速なのはDiamond Searchなのであまり動きの激しくない素材ならばこれを選ぶとよいかもしれません。通常は初期値のHexagonal Searchか、検索精度と速度のバランスが優れているUneven Multi-Hexagonを使うのがよさそう。総当たりで検出するExhaustive Searchは膨大な時間が掛かるので避けたほうが無難です。
Range
Uneven Multi-Hexagonの検索範囲なので初期値から変更しないほうがよいでしょう。
Chroma ME
色情報による動き検出を使うかのオプションで通常はオンで使用します。
Max Ref, frames
変化が見受けられないので、今のところ不明。
Misc. options
Sample AR
再生側に情報として渡されるアスペクト比の情報です。出力時の設定に合わせておきましょう。
Threads
x264のスレッド数の指定です。初期値は1ですが、マルチコアCPUやHyper-Threading対応CPUではプロセッサ数に合わせた値にしておくと処理が高速化されます。マルチコアCPUではその差は顕著です。ただし、分散処理によって高速化される代わりに継ぎ目でオーバーヘッドが発生するようで、微妙に出力サイズが大きくなることに注意してください。
Log level
x264がLogに書き出す情報の種別です。通常は変更しなくてかまいません。Noneにするのもよいかも?
FourCC
AVIファイルに書き込まれる作成およし再生用CODEC情報の識別コードです。初期値はH264。これは変更したらffdshowなどで再生ができなくなるので変更不可。
CABAC
Context-based Adaptive. Binary Arithmetic Codingの略で、H.264/MPEG-4 AVCのキモの部分です。変動シンボル確率分布を利用し、シンボル間の相関も利用することで圧縮率を向上させています。これを無効にするとそもそもH.264を使う必要がなくなってしまうため、このオプションは有効で使うべきでしょう。
Trellis
DCTで失われた情報を回復させて画質を若干向上させるモードを使用するかどうかのオプション。有効にすると処理が重くなります。画質優先ならばONで使いましょう。
Noise Reduction
DCTノイズ・リダクションの強さです。出力結果によっては調整が必要になるパラメータ。
Deblocking filter
MPEG系は量子化のプロセスや動き補償の結果、隣接したブロックの符号化でアーティファクトが発生します。H.264ではこれを軽減するためにDeblocking filterが導入されました。その動作からループ・フィルターともいわれます。StrengthThresholdのパラメータがありますが、+方向に動かして強くするとぼやけた感じに、-方向に動かすとくっきりとした感じの絵となることを覚えておいてください。どちらも範囲は-6~+6です。素材がアニメならば無効にしたほうがよいでしょう。実写ならば動きの多さと望みの出力ファイルサイズによって調整するという感じです。基本的に+方向には動かさないほうがよいと思います。