複数のファイルへのキャプチャ
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
ビデオをファイルにキャプチャしたら、グラフを停止し、[ファイル ライター ] フィルターでファイル名を設定することで、新しいファイルに切り替えることができます。 ファイル ライターで IFileSinkFilter::SetFileName メソッドを呼び出します。 グラフを作成するときに、SetOutputFileName メソッドの pSink パラメーターを使用して、IFileSinkFilter インターフェイスへのポインターを取得できます。 この処理方法を、次のコードで示します。
IBaseFilter *pMux;
IFileSinkFilter *pSink
hr = pBuild->SetOutputFileName(&MEDIASUBTYPE_Avi, L"C:\\YourFileName.avi",
&pMux, &pSink);
if (SUCCEEDED(hr))
{
hr = pBuild->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,
pCap, NULL, pMux);
if (SUCCEEDED(hr))
{
pControl->Run();
/* Wait awhile, then stop the graph. */
pControl->Stop();
// Change the file name and run the graph again.
pSink->SetFileName(L"YourFileName02.avi", 0);
pControl->Run();
}
pMux->Release();
pSink->Release();
}
関連トピック