AVI ファイルへの圧縮メディアの格納 (Microsoft Media Foundation)
Windows Media Audio および Video コーデックを使用して圧縮するコンテンツは、コンテナー形式で配置する必要があります。 最も一般的な形式の 1 つは、オーディオ ビデオ インターリーブ (AVI) です。 Windows 用 Microsoft Video (VfW) または Microsoft DirectShow を使用して AVI ファイルを作成できます。
Windows Media Audio および Video コーデックは、Windows Media で使用されるコンテナーである Advanced Systems Format (ASF) のプロパティを使用するように開発されています。 AVI と ASF はコンテンツの保存方法が異なるため、Windows Media Audio および Video コーデックで圧縮されたコンテンツを AVI ファイルに格納すると、いくつかの問題が発生します。
Windows Media Audio コーデックは、個々のサンプルのタイムスタンプなしでは適切に展開できない方法でオーディオ コンテンツを圧縮します。 これにより、圧縮されたメディアで一部の最適化が可能になります。 ASF コンテナーはすべてのサンプルでタイムスタンプを保持するため、オーディオ アルゴリズムのこの特性は常にうまく機能しています。
ただし、AVI ファイルでは、サンプルと共にタイムスタンプを保持しないでください。 これは、AVI ファイルに保存されている場合、Windows Media Audio コンテンツを正しく展開できないことを意味します。 Windows Media Video コンテンツにはこの制限はなく、AVI ファイルに含めることができます。 同期されたサウンドを使用して Windows Media Video コンテンツを AVI ファイルにエンコードするには、別のオーディオ コーデックを使用する必要があります。
Windows Media のコンテナーとして AVI ファイルを使用する場合のもう 1 つの問題は、低ビットレートのビデオに関するものです。 Windows Media Video コーデックで低ビットレートのビデオ コンテンツを生成する方法の 1 つは、重複するフレームを削除することです。 Windows Media Video コンテンツを ASF ファイルに配置する場合は、すべてのフレームがファイルに表示されるように、重複するフレームのダミー フレームを配信するようにエンコーダーを設定する必要があります (MFPKEY_PRODUCEDUMMYFRAMES を VARIANT_TRUE に設定します)。 コーデックによって生成されるダミー フレームのサイズは 8 バイトです。 ただし、AVI マルチプレクサーによってファイルに書き込まれるフレームは、数百バイト大きく、ランダムなデータでいっぱいになる可能性があります。 この方法で作成された AVI ファイルは引き続き再生できますが、予想よりもはるかに大きくなります。 AVI ファイルのストレージ用にビデオをエンコードする際、より高いビットレートを使用することで、この問題を回避できます。
関連トピック