ホーム

私訳です。より確かな記述は MSDN (英語)を直接読んで下さい。

 

ほとんどのWindows Media Video CodecとWindows Media Audio Codecが、複数のエンコード方法を サポートしています。各々の方法をいつ、どのように使うかを知る事が、ハイクオリティに圧縮された コンテンツを作成する助けとなります。

エンコード方法は皆、デコーダによって 圧縮された入力データを処理するのに使われる「バッファ」に 焦点を合わせています。このバッファは、ストリームのビットレート(bps)と、バッファウィンドウ(ミリ秒)に より定義され、エンコードする時、Codecはバッファの制限に従います。バッファについて より情報を 得るには The Leaky Bucket Buffer Model を見て下さい。

コンスタント ビットレート (CBR) エンコード

どんなWindows Media Video/Audio Codecにより圧縮されたストリームも、ビットレートは一定ではありません。 従って、コンスタント ビットレート (CBR) エンコードというのは、いくぶん誤解を招く用語です。 CBRエンコードされたストリームを特徴付けている特徴は、サンプルのサイズの変化量を制限する バッファウィンドウが小さい事です。CBRエンコードは主に、ネットワーク上でストリーム配信される コンテンツ用に用いられています。そういったシナリオでは、一貫した帯域幅使用を当てにする事が できます。

環境設定の見地から、CBRエンコードは、エンコードの開始前に 出力コンテンツの平均ビットレートも そのビットレートに適用するバッファウィンドウも両方セットする点で、他のモードとは異なって います。他のモードでは、エンコーダを設定する時にはそれらの値の一方か両方が不明で、エンコード しながらCodecにより計算されます。CBRエンコードは、Windows Media encoder DMOにより用いられる スタンダードです。(訳注:DMOは、たぶんDirectXメディア オブジェクト / 用語 )

2パス CBR エンコード

スタンダードなCBRは、1パス エンコードを使うだけです。あなたは入力サンプルとしてコンテンツを 提供し、Codecはコンテンツを圧縮して出力サンプルを返します。入力サンプルを二度処理する事も できます。最初のパスでは、Codecは、あなたのコンテンツを最適にエンコードするように演算を行い ます。第2パスでは、Codecは、最初のパスの間に集められたデータを コンテンツをエンコードするのに 使います。

2パス CBRエンコードは、多くのアドバンテージを持っています。バッファ要求をまったく変える事なく スタンダードなCBRよりかなりの品質向上を度々もたらします。これがこのエンコード モードを、 ネットワーク上でストリーミングされるコンテンツのために理想的なものとしています。唯一 2パス CBRエンコードを利用できないのが、ライブ ソースからコンテンツをエンコードして第2パスを使う 事ができない場合です。

2パス CBRストリームの出力メディアタイプは、スタンダードCBRストリームのものと同様です。 すなわち、使用するには ビットレートとバッファウィンドウをまだ指定します。DMOを設定する時、 2パスを実行するようにセットしなければなりません。そして、最初のパス用にサンプルを送り終えた 時にDMOに知らせてやらなければなりません。

品質ベースの 可変ビットレート (VBR) エンコード

CBRエンコードは実際には一定のビットレートを保持しない事が判り、それと可変ビット レート(VBR)エンコードとの区別は、少しはっきりしないようです。CBRとVBRとの主な違いは、 用いられるバッファウィンドウの大きさです。VBRエンコードされたストリームは普通、CBRエン コードされたストリームに比べて広いバッファウィンドウを持っています。品質ベースの VBRエン コードは例外ではなく、ビットレートもその為のバッファウィンドウもこちらからは決めません。 代わりに、クオリティをセットします。それでCodecは、圧縮されたストリームのバッファ要求には 拘らずに ずっと一貫した品質となるように圧縮しようとします。

品質ベースのVBRエンコードは、シングルパスを用い、圧縮されたストリームはサイズが大きくなる 傾向があります。エンコードが完了するとCodecは、デコーダがデータを展開できるようにバッファ 要求を設定します。エンコードされたVBRストリームは、ネットワークでのストリーミングには 適当ではないので、品質ベースのVBRエンコードは ローカルな録音再生装置(やダウンロードして 再生)のシナリオのためだけに用いるべきです。

ビットレートベースの VBR エンコード (Unconstrained VBR)

品質ベースのVBRエンコードと違って、ビットレートベースのVBRエンコードは 特定の品質レベルに エンコードはしません。代わりに、指定されたビットレートを維持しながらコンテンツを可能な限り 高い品質へエンコードします。ビットレートベースのVBRエンコードは2パスを用い、ストリームの為の バッファウィンドウを設定しない事を除けば 2パスCBRと同様です。これは、平均ビットレートが あなたのセットした値以下である限り、ストリーム中の個々のサンプルの大きさに制限がない事を 意味しています。

ビットレートベースのVBRエンコードは使用が限られるものです。なぜなら、そのバッファ要求を 満たす再生環境のシナリオがあまり無いからです。Codecは、バッファウィンドウを エンコード後に 要求されたどんな値にでも設定する事ができ、バッファの大きさをコントロールできません。 もしバッファの大きさや帯域幅使用の持続性を心配しないなら、多くの場合には、品質ベース のVBRエンコードを用いるべきです。

ピークビットレートベースの VBR エンコード (Peak-Constrained VBR)

最後のエンコードモードが、ピークビットレートベースのVBRエンコードです。ビットレート ベースのVBRエンコードの様に、このモードは2パスを用い、指定されたビットレートにエン コードします。しかし、ピークビットレートベースのVBRエンコードでは、エンコードの為の ピーク値も設定します。ピーク値は、普通のバッファの設定値と同様です。つまり、ピーク ビットレートとピークバッファウィンドウがあります。ファイルは、ストリーム全体の平均 ビットレートがあなたの指定した平均ビットレート値以下である状況で、ピーク値に記された バッファに従うようにエンコードされます。

ピークビットレートベースのVBRエンコードは、概念化する事が困難でありうるものです。用いられて いるバッファリング モデルの最も簡単な考え方は、ストリームはあたかも、バッファを決めるのに ピークビットレートとピークバッファウィンドウを持っているCBRストリームであるという考え方です。 概して、ピークビットレートはかなり高い数値です。エンコーダは、あなたが入れた平均ビット レート値がストリームの間じゅうを通して維持されている事を保障します。
(平均ビットレート >= ( 全ストリームサイズ(bit) / ストリームの長さ(秒) ))

以下の例を考えよう。ストリームを平均ビットレート16,000bps、ピークビットレート48,000bps、 ピークバッファ ウィンドウ 3,000ミリ秒(3秒)で設定する。ストリームの為に用いられるバッファの 大きさは、ピーク値により決められるので 144,000ビット( 48,000(bps) * 3(sec) )です。エン コーダはそのバッファに従ってデータを圧縮します。加えて、ストリームの平均ビットレートは 16,000以下でなければなりません。もしエンコーダが、コンテンツの複雑な部分を扱うために 或る とても大きなサンプルを作る必要があれば、大きなバッファサイズのアドバンテージを得る事が できます。しかし、ストリームのほかの部分では、平均を 指定されているレベルに落とすために より低いビットレートでエンコードされるに違いありません。

ピークビットレートベースのVBRエンコードは、限られたバッファ容量やいくつかのデータレートの 制約を持つ録音再生デバイス用に有用です。これの一般的な例は、DVDに用いられているエンコード です。