AVI Mux フィルター

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

AVI Mux フィルタは、複数の入力ストリームを受け入れ、AVI 形式にインターリーブします。 フィルターは、入力ストリームごとに個別の入力ピンを使用し、AVI ストリームには 1 つの出力ピンを使用します。

ビデオ キャプチャまたはオーサリング アプリケーションでは、このフィルターを使用してファイルを AVI 形式でディスクに保存できます。 通常、フィルターは ファイル ライター フィルターに接続されますが、入力ピンが IStream インターフェイスと IMemInputPin インターフェイスをサポートするフィルターに接続できます。

Label
フィルター インターフェイス IBaseFilterIConfigAviMuxIConfigInterleavingIMediaSeekingIPersistMediaPropertyBag、ISpecifyPropertyPages
入力ピン メディアの種類 古いスタイルの FOURCC またはMEDIATYPE_AUXLine21Dataに対応する任意のメジャー型。 (詳細については、「 FOURCCMap クラス」を参照してください)。
  • メジャー型がMEDIATYPE_Audioの場合は、形式をFORMAT_WaveFormatExする必要があります。
  • メジャー型がMEDIATYPE_Videoの場合、形式はFORMAT_VideoInfoまたはFORMAT_DvInfoする必要があります。
  • メジャー型がMEDIATYPE_Interleavedの場合は、形式をFORMAT_DvInfoする必要があります。
入力ピン インターフェイス IAMStreamControlIMemInputPinIPin、IPropertyBag、 IQualityControl
出力ピン メディアの種類 MEDIATYPE_Stream、MEDIASUBTYPE_Avi
出力ピン インターフェイス IPinIQualityControl
CLSID をフィルター処理する CLSID_AviDest
プロパティ ページ CLSID CLSID_AviMuxProptyPage、CLSID_AviMuxProptyPage1
[実行可能ファイル] qcap.dll
メリット MERIT_DO_NOT_USE
フィルター カテゴリ CLSID_LegacyAmFilterCategory

 

解説

次の解説では、AVI Mux フィルターの機能のさまざまな側面について説明します。

ピン

AVI Mux フィルターを作成すると、1 つの入力ピンが含まれます。 各入力ピンが接続されると、フィルターによって新しい入力ピンが作成されます。

Stream プロパティ

入力ピンは、個々のストリームでプロパティを設定するための IPropertyBag インターフェイスをサポートしています。 現在、次のプロパティが定義されています。

プロパティ 説明
name ストリームの名前です。 このプロパティはチャンクとして 'strn' 書き込まれます。

 

フィルターが実行中または一時停止している場合、IPropertyBag::Write メソッドはVFW_E_WRONG_STATEを返します。

フレーム レート

アップストリーム フィルターで VIDEOINFOHEADER 構造体の AvgTimePerFrame メンバーにフレーム レートが指定されていない場合、AVI Mux は最初のビデオ フレームのタイム スタンプを使用します。 AVI ファイル形式では、可変フレーム レートはサポートされていません。

ドロップされたフレーム

AVI Mux フィルターは、各サンプルのメディア時間 (使用可能な場合) またはサンプルのタイム スタンプに基づいてドロップされたフレームを計算します。 削除されたフレームごとに長さ 0 のインデックス エントリが書き込まれます。

IMediaSeeking

AVI Mux フィルターは、 次のように IMediaSeeking インターフェイスを 実装します。

  • GetCurrentPosition メソッドは、多重化の現在の進行状況を返します。 ファイルをコード変換する場合 (リアルタイムよりも遅い)、この値はフィルター グラフ マネージャーによって返される値よりも正確です。 詳細については、GetCurrentPosition リファレンス ページの「解説」セクションを参照してください。
  • GetDuration メソッドは、各アップストリーム フィルターに対してクエリを実行し、最も長いストリームの期間を返します。 これらのフィルターのいずれかが GetDuration 呼び出しに失敗した場合 (または IMediaSeeking をサポートしていない場合)、AVI Mux はエラー コードを返し、見つかった最も長い期間 を pDuration パラメーターに入力します。 ただし、この場合の pDuration の値は、必ずしも最も長い入力ストリームの長さであるとは限りません。
  • AVI Mux は、GetStopPosition、GetPositions、GetAvailable、GetRate、または GetPreroll メソッドを実装していません。また、シーク用の Set* メソッドも実装しません。

AVI 2.0ファイル形式拡張子

DirectShow では現在、次の AVI 2.0 ファイル形式拡張子がサポートされています。

  • AVI ファイル サイズの増加 (1 GB を超える)
  • 階層インデックス作成

詳細については、OpenDML AVI M-JPEG ファイル形式小委員会によって公開されている "OpenDML AVI ファイル形式拡張子" のバージョン 1.02 を参照してください。

DirectShow フィルター