Windows メディア ファイルへのビデオのキャプチャ
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
ビデオをキャプチャし、それを Windows Media Video (WMV) ファイルにエンコードするには、次の図に示すように、キャプチャ ピンを WM ASF ライター フィルターに接続します。
このグラフを作成する最も簡単な方法は、 ICaptureGraphBuilder2::SetOutputFileName メソッドでMEDIASUBTYPE_Asfを指定することです。
IBaseFilter* pASFWriter = 0;
hr = pBuild->SetOutputFileName(
&MEDIASUBTYPE_Asf, // Create a Windows Media file.
L"C:\\VidCap.wmv", // File name.
&pASFWriter, // Receives a pointer to the filter.
NULL); // Receives an IFileSinkFilter interface pointer (optional).
MEDIASUBTYPE_Asf値は、ファイル シンクとして WM ASF ライター フィルターを使用するように Capture Graph Builder に指示します。 Capture Graph Builder によってフィルターが作成され、グラフに追加され、 IFileSinkFilter::SetFileName が呼び出されて出力ファイルの名前が設定されます。 出力パラメーターとしてフィルターへのポインターを返します (
pASFWriter
前の例で)。
WM ASF ライターの IConfigAsfWriter インターフェイスを使用して、Windows メディア プロファイルを設定します。 WM ASF ライターでピンを接続する前に、これを行う必要があります。
IConfigAsfWriter *pConfig = 0;
hr = pASFWriter->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
// Configure the ASF Writer filter.
pConfig->Release();
}
プロファイルの設定の詳細については、「 DirectShow での ASF ファイルの作成」を参照してください。
ICaptureGraphBuilder2::RenderStream を呼び出して、キャプチャ フィルターを ASF ライターに接続します。
hr = pBuild->RenderStream(
&PIN_CATEGORY_CAPTURE, // Capture pin.
&MEDIATYPE_Video, // Video. Use MEDIATYPE_Audio for audio.
pCap, // Pointer to the capture filter.
0,
pASFWriter); // Pointer to the sink filter (ASF Writer).
WM ASF ライター フィルターの各入力ピンは、Windows Media プロファイルのストリームに対応します。 ファイルの内容がプロファイルと一致するように、すべてのピンを接続する必要があります。
関連トピック