MPEG-2 スプリッターの使用

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

注意

Microsoft® Windows® XP 以降、MPEG-2 スプリッター フィルターは非推奨となりました。 代わりに MPEG-2 デマルチプレクサー を使用してください。

 

MPEG-2 スプリッター フィルターは、次のストリームの種類のうち少なくとも 1 つを含む MPEG-2 プログラム ストリームのプルモード再生をサポートします。

  • MPEG-2 ビデオ
  • MPEG-2 オーディオ
  • DVD-Video用に定義されたドルビー AC-3 オーディオ
  • DVD-Videoに対して定義されているようにエンコードされた LPCM (線形パルス コード変調) オーディオ

MPEG-2 スプリッターでサポートされているメディアの種類の一覧については、「 MPEG-2 スプリッター メディアの種類」を参照してください。

MPEG-2 スプリッターはトランスポート ストリームを解析しません。 トランスポート ストリームには MPEG-2 デマルチプレクサー フィルターを使用します (プッシュ モードのみ)。

タイム スタンプ

MPEG-2 プログラム ストリームを再生する場合、MPEG-2 スプリッター フィルターは、検出された最初のシステム クロック参照をストリームの時刻の原点として処理します。 これは、プレゼンテーション タイム スタンプを使用する MPEG-1 Stream Splitter とは異なります。 IAMParse::GetParseTime メソッドは、処理したデータの (推定される) ストリーム システム クロック時間を返します。

MPEG-2 スプリッター フィルターで不連続性プロパティが設定された入力サンプルが検出された場合 (不連続性プロパティは 、IMediaSample::SetDiscontinuity または IMediaSample2::SetProperties を使用して設定できます)、データの最初のパックが見つかるまでデータをスキップし、そのパックのシステム クロック参照 (SCR) が不連続性の前の SCR 時刻と同じと見なされるように、タイム スタンプを調整します。 SCR クロックが後方にジャンプするか、1 秒を超えて前方にジャンプするように見える場合(MPEG-2 プログラム ストリーム仕様に沿って)、これはクロックの不連続性としても扱われ、見かけ上のクロックの不一致はダウンストリーム フィルターに渡されるタイム スタンプから減算されます。

ストリームの選択

MPEG-2 プログラム ストリームを再生すると、プログラム ストリームを通過する最初のビデオ ストリームと最初のオーディオ ストリームが選択されます。 最大 1 つのオーディオと 1 つのビデオ出力ピンがサポートされています。 IAMStreamSelect インターフェイスを使用すると、同じ種類の異なるストリームを、システム ヘッダーのオーディオ制限で指定された数まで選択できます。 MPEG-2 オーディオの場合、現在、ストリームはストリーム 0xC0から連続した範囲を形成していると見なされます。

公開可能なインターフェイス

MPEG-2 スプリッター フィルターでは、次のインターフェイスがサポートされています。

  • IAMParse。 MPEG-2 プログラム ストリームのみ。
  • IAMStreamSelect。 MPEG-2 プログラム ストリームのみ、オーディオ ストリームのみ。
  • IMediaSeeking。 バイト モードシークが含まれます。

DirectShow での MPEG-2 のサポート