Type-1 DV ファイルをキャプチャする
[このページに関連付けられている機能である DirectShow はレガシ機能です。 これは、 MediaPlayer、 IMFMediaEngine、 メディア ファンデーションの Audio/Video Captureに置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 新しいコードでは、可能な場合は、 DirectShowではなく、 MediaPlayer、 IMFMediaEngine および メディア ファンデーションの Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存コードを、新しい API を使用するように可能であれば書き直すことを提案しています。]
type-1 DV AVI ファイルには、1 つのインターリーブ ストリームが含まれています。 プレビュー中に type-1 ファイルをキャプチャするには、次の図に示すフィルター グラフを使用します。
このグラフのフィルターは次のとおりです。
- Smart Tee フィルターは、インターリーブされた DV をキャプチャ ストリームとプレビュー ストリームに分割します。 両方のストリームに同じインターリーブ データが含まれています。
- AVI Mux および File Writer インターリーブ ストリームをディスクに書き込みます。
- DV スプリッターは、インターリーブされたストリームを DV ビデオ ストリームとオーディオ ストリームに分割します。 どちらのストリームもプレビュー用にレンダリングされます。
- DV ビデオ デコーダーは、プレビュー用に DV ビデオ ストリームをデコードします。
次のようにこのグラフを作成します。
ICaptureGraphBuilder2 *pBuilder; // Capture graph builder.
IBaseFilter *pDV; // DV capture filter (MSDV)
IBaseFilter *pAviMux // Avi Mux filter.
// Initialize pDV (not shown).
// Create and initialize the Capture Graph Builder (not shown).
// Create the file-writing section of the graph.
hr = pBuilder->SetOutputFileName(&MEDIASUBTYPE_Avi,
OLESTR("C:\\Example1.avi"), &pAviMux, 0);
// Render the capture stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Interleaved,
pDV, 0, pAviMux);
// Render the preview stream.
hr = pBuilder->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Interleaved,
pDV, 0, 0);
// Remember to release all interfaces.
を呼び出して、AVI 多重化フィルターをファイル ライター フィルターに接続します。ICaptureGraphBuilder2::SetOutputFileName - ICaptureGraphBuilder2::RenderStream を呼び出し、ピン カテゴリをPIN_CATEGORY_CAPTUREしてキャプチャ ストリームをレンダリングします。 キャプチャ グラフ ビルダーは、スマート ティー フィルターを自動的に挿入します。
- 再び RenderStream を呼び出しますが、ピン カテゴリをPIN_CATEGORY_PREVIEWして、プレビュー ストリームをレンダリングします。 ビデオをプレビューしない場合は、この呼び出しをスキップします。
どちらの RenderStream 呼び出しでも、メディアの種類はMEDIATYPE_Interleavedされ、インターリーブ DV ビデオを意味します。 このコードでは、キャプチャ グラフ ビルダーは、MSDV キャプチャ フィルターを除き、必要なすべてのフィルターを自動的に追加します。
関連トピック