XviDの設定
MPEG4系のCODECであるXviDの設定の仕方を説明します。あくまでもDivXやXviDはMPEG-4ビジュアルのデータをAVIファイルなどで扱えるだけであり、MPEG-4システムでMP4ファイルを直接作成できるわけではありません。
バイナリはKoepi's (Windows版CODEC)のを用いて設定画面の画像を用意しました。XviD 1.0.1から使う設定を見直したので紹介記事中のサンプル設定が多少変化しています。
XviDはソースコードで公開されているため、実際に使うにはコンパイル済みのBinaryファイルが必要となります。コンパイル済みのBinaryダウンロードはこちらです。
XviD Configuration
- Profile@Level
- MPEG-4ビジュアル部に使う仕様を選択します。大まかにSimple/ARTS(Advanced Real Time Simple)/AS(Advanced Simple)の3種類からの選択です。各仕様にはレベルがあり、解像度などに制限があるので注意しましょう。Simpleは携帯電話向け(3GPP)、ARTSはリアルタイム通信向けといった用途に使われています。PC向けの動画であればXviDの機能の多くを利用可能なAS(@L5)を選択したほうがよいかもしれません。ちなみに、"unrestricted"はXviDの能力を最大限に引き出すモードです。これを使った場合は、再生にはDivXなどを使わずにXviDを使う必要が出てくるかもしれません。
- DivX 5.x.xはAS@L5です。XviDで圧縮してFourCCを変更する場合にはご注意を。
- Encoding type
- 通常は"Single pass"です。どうしてもこのサイズ内で最高の画質というのを求めなければならない場合だけ"Twopass"とします。2passは1回目の処理時("Twopass - 1st pass")に動きの大小を記録し、2回目の処理("Twopass - 2nd pass")で動きの大小から割り当てデータ量を計算するので、非常に時間がかかります。膨大な時間がかかるので積極的にお奨めはしません。2pass時はTargetがSizeかBitrateか選択できます。普通はサイズのほうを選んだほうがそのまま最終出力サイズとなるので楽でしょう。ただし、サイズ指定はkbytesであることに注意が必要です。
- CD-Rに保存するために"Twopass"というのであれば、必要な時間とかを考えると安くなってきたDVD-Rドライブを素直に購入したほうが結果的に幸せだと思います。"Single pass"で時間が節約できて画質も安定する(良くなる)ので。
- Target quantizer/Target bitrate
- 画質が決まる重要な部分です。quantizerは一定の品質で圧縮するモードで映像の破綻がまずなくなります。bitrateは時間あたりのデータ量が一定になるように圧縮するモードです。通常は画質が一定になるようにしたほうがよいでしょう。
- ただし、MPEG-4対応のポータブルプレーヤーなどで再生するのが目的であれば、おそらく再生可能なビットレートに制約があります。説明書か公式サイトで仕様が公開されていると思うので、そのビットレートに収まるようにbitrateのほうで指定しての圧縮が必要です。音声部込みのビットレート制約か、音声別でよいのかに注意してください。
- Add, Remove, Zone Options
- XviDではフレーム指定で圧縮の設定を変更できるようになっています。映画など、長いスタッフロールが入る場合にはスタッフロール部は圧縮設定を変更してデータの節約をすることが可能です。通常は特にいじらなくても大丈夫でしょう。例えばOP部分をQuantizer:2.5、本編はQuantizer:3.5などのように設定可能です。
Profile@Level内
LebelとAspect Ratioは特にいじる必要はありません。いじるとすればProfile内の項目でしょう。
- Quantization typeはH.263(MPEG-4 default)(H.263はややぼやけたようになる傾向がある。圧縮効率は落ちるがファイルサイズより画質優先ならMPEGを選択。再生互換性はH.263のほうが高いです。2passで低bitrateを狙うならば映像の破綻が起こりにくいH.263を推奨。2passや1passでQuantizer値を大きくした場合の低bitrate時にはMPEGを選ぶとノイズが出やすい。個人的な所感ですが、アニメはH.263向き、実写だとMPEGが向いているような感じです。ソースによって使い分けましょう)
- Adaptive Quantization:Off(Onにすると適応型量子化が行なわれて圧縮効率が向上するが、フェードイン/フェードアウトで映像破綻しやすくなる模様)
- Interlaced Encoding:Off(インターレースを維持したまま保存する場合にOnにする。フィールドオーダーの指定ができるようになったので実写はインターレース保持エンコードがよいかな。スポーツやAVはインターレース保持が吉でしょう)
- [1.1.xから対応]Top field first(インターレースを保持した場合のフィールドオーダーの指定。間違えると再生がカクつくことでしょう。)
- Quarter Pixel:Off(Onにすると1/4動き補償でOffよりも高画質を望めますがファイルサイズと再生負荷が増大)
- Global Motion Compensation:Off(Onにすると2004年秋現在のネットワークプレーヤーなどで再生がカクつくので設定には注意。背景と手前のオブジェクトを分離して処理するS-VOP(スプライトVOP)を有効にするオプションのようです。Onでは処理を行なうので処理量が増大して圧縮に時間が掛かるようになります。デコーダーによっては再生互換性が低下するのと、S-VOPを使ってもファイルサイズが大きくなることもあるため、普段はOffで使ったほうがよいかもしれません)
- B-VOPsをOn(普通はファイルサイズを小さくするためにOnにするが、画質にこだわるならB-VOPは使わずにOff/決められたデータ量へ詰め込むという2pass処理を行なうのならばB-VOPを使ったほうが高画質)
- Max consecutive BVOPs:2(圧縮率を高めるB-VOPを連続で使用する最大数で通常は1~3ぐらいで使用)
- Quantizer ratio:1.00~2.00(B-VOPの画質に影響するので目的別に設定。ジャンルを問わず動きの激しいソースならば初期値の1.50かそれより小さく、そうでもないバラエティやアニメなら2.00など)
- Quantizer offset:1.00(B-VOPの画質に影響。B-VOPのQuantizerは、Quantizer offset+(前後フレームのQuantizer平均×Quantizer ratio)となる)
- Packed bitstream:On(データを処理しやすいようにまとめて効率を向上させるかの設定。通常はデコード時にラグが発生するB-VOPを、P-VOPのデコード時に先読み的に一緒にデコードしておくことでラグをなくしている模様。この処理を考慮していない古いデコーダーは正しく処理できないため、再生時にカクつくなど再生互換性は若干不利になる。古いDivX 5や古いffdshowで再生するならOnにすると正常に再生できない/2004年以降のffdshowならばOnにしても問題ないのでデコーダーがXviDかffdshowならばOn推奨。再生環境がファームウェアをアップデートできないようなタイプのネットワークプレーヤーなど、古めの家電的ハードウェアでの再生互換性を追求する人だけOff)
- [1.0.xのみ]Closed GOV:On(DivX5互換にするならOn。1.1.xからは設定はOnとなり選択項目はなくなりました)
Zone Options
特定の部分だけ画質を上げたいとか、画質を犠牲にしてもサイズを小さくしたいという場合に使用する機能です。指定した範囲だけ別個の設定で圧縮を行なうことが可能になります。また、Begin with keyframeにチェックを付けると、指定したフレームを強制的にI-VOPにすることができるので、P-VOP/B-VOPだとノイズが出てしまうシーンに使うという手段もあり。
Advanced Options...
圧縮における重要な設定項目です。"Maximum I-frame interval"はI-frameを最大何フレームごとに入れるかの指定。I-frameはプレーヤーがシーク時に参照するので、頻繁にシークしたいデータを作る場合は小さな値にしたほうが便利でしょう。ただし、その場合はファイルサイズが若干大きくなります。
- Motion search precision:6 - Ultra High(シーンチェンジの検出精度の設定。高速0<--->6高圧縮)
- VHQ mode:1 - Mode Decision(追加の動き検出設定。初期値の1から4に変更すると35~50%ほど圧縮時間が延びますが2~5%圧縮率が向上するようです。1か2がよさそう。早い0<--->4高圧縮)
- Use VHQ for bframes too(B-VOPにもVHQを使用するならOn。圧縮時間は増大しますが圧縮率が向上)
- Use chroma motion:On(色情報を利用した追加の動き検出設定。副作用で色境界がにじんだりするようならOffにするべし)
- Use cartoon mode:Off(アニメ用のモードでソースがアニメの場合に圧縮率が最大5%程度向上することもある模様。日本のアニメ向きではないため、Onにしても逆に大きくなることもあるのと、副作用で映像が破綻することがあるので未使用を推奨)
- Turbo ;-):Off(OnにするとB-VOP有効時に画質を犠牲にして圧縮処理の速度を向上)
- Min I/P/B-frame quantizer(IPBのQuantizer最小値の指定。画質を調整する際に使用する)
- Max I/P/B-frame quantizer(IPBのQuantizer最大値の指定。これを指定することで最も悪い画質となる映像を一定のレベルまでに制限できる。画質を調整する際に使用する)
- Trellis quantization:On(Onにすると、DCTで失われた情報を回復させて画質を若干向上させることができるが、処理が若干重くなる。映像ソースによっては圧縮率も向上するので、画質も考慮するとQuantizerベースで圧縮するのであればまずはOnで試してみたほうがよいのではないかと思われる)
DivX 5.xで再生したい場合
従来はXviDのデータをDivXのCODECで再生するには、FourCCを"XVID"から"DIVX"や"DX50"として対処するのが一般的でした(Advanced Options内のDebugから変更可能)。
しかし、DivX 5.1.xからは、FourCCがXVIDのままでも再生ができるようになっています。「Standard DivX Codec(FREE)」をダウンロードしてインストールしておけばOKです。スタートメニューのDivX≫DivX CODEC≫Decoder Configuration Utilityから設定画面を開き、"Quality Settings"にある"Support Generic Mpeg-4"にチェックを付ける必要がありますが、最初から有効になっているので問題はありません。初期状態だと再生時にDivXのLogoが表示されるので、"Disable Logo"にチェックを付けるのをお忘れなく。
ただし、DivX 5.1.1のデコーダーでは、XviDのPacked bitstreamをOnにしたデータはカクついて正常に再生できないようです。DivX 5.2では対応済み。個人的にはDivXで再生するのはあまりお薦めしません。
I-VOP, P-VOP, B-VOP
MPEG4で使われているIPBの各VOP(MPEG-1/2のframeに相当する)の説明です。MPEG4の仕組みを詳しく知りたい人はPioneerの技術解説をご覧ください。
- I-VOP(I-frame)
- 基準となるフレームでそのまま圧縮されます。もっとも高画質。
- P-VOP(P-frame)
- フレームを順方向に差分や動き補償などで予測して圧縮されるフレーム。
- B-VOP(B-frame)
- 過去と未来の双方から予測して圧縮されるフレーム。圧縮効率を高めるためのもので画質は悪くなります。XviDでは、B-VOPのQuantizerは基準となるQuantizer*Quantizer ratio+Quantizer offsetで決まります。つまり、Quantizerが変化しないようにQuantizer ratioとQuantizer offsetを設定しない限り確実に画質は劣化するわけですが、それが人の目でわかるかどうかは圧縮するソースと設定次第なのでケースバイケース。普通の人は神経質に見比べるCODECの画質比較時ぐらいしか気にならない程度でしょう。MPEG系は不可逆圧縮なので、B-VOPは同じQuantizer値にしてもI/P-VOPに比べて少々画質が落ちることは覚悟しなければなりません。まあ、そこまで気にするような人はいないと思いますけれど。
- 基準となるQuantizerが3.45でQuantizer ratioが2.00の場合、I/P-VOPが3か4、B-VOPは7~9になります。Quantizer ratioが1.50ならB-VOPは5~7となり、Quantizer ratioの設定はかなり大きく影響するわけです。ソースにもよりますが、Quantizer ratioが2.00あたりまでなら静止させない限り気付かない程度(動きの激しい映像は除く)。ファイルサイズを小さくしたいなら2.00を、ファイルサイズは小さくしなくてもよいなら初期値の1.50でよいでしょう。Quantizer ratio:1.50と比べて、VGAサイズ24分で20~25MBほどファイルサイズを節約できるようです。
- CPUによる設定変更
- Advanced Options内のDebugでCPU命令の指定ができます。初期値は自動で、使える命令はすべて使うようになっているのですが、Pentium 4ベースのCPU以外(Pentium MやAMDのCPUなど)であればSSE2をオフにしたほうが処理がやや早く終わるので、ユーザー指定で明示的にSSE2のチェックを解除したほうがよさそうです。