MP4ビデオをキャプチャするためのDirectshowアプリケーションを作成しています。以下のグラフを使用してこれを行います。
Input Stream --> MJPEG Decompressor --> x264vfw H.264/MPEG-4 AVC Codec --> GDCL Mpeg-4 Multiplexor --> File Writer
私のdirectshowアプリケーションでは、必要なフィルターを作成してグラフに接続し、最後にファイルライター操作とピンをキャプチャとして使用してストリームを赤くします。私のコードのその部分は以下の通りです。
GUID guid;
guid = MEDIASUBTYPE_x264;
hr = gcap.pBuilder->SetOutputFileName(&guid, gcap.wszCaptureFile,
&g_mp4mux, &gcap.pSink);
hr = gcap.pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Interleaved,
gcap.pVCap, pVcompFilter, NULL);
if(hr != NOERROR)
{
hr = gcap.pBuilder->RenderStream(&PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Video,
gcap.pVCap, pVcompFilter, NULL);
if(hr != NOERROR)
{
ErrMsg(TEXT("Cannot render video capture stream"));
TearDownGraph();
return FALSE;
}
}
上記のコードについて
g_mp4mux
GDCL MPEG-4 Muliplexrer
ファイラーです
PVcompFilter
x264vfw H.264/MPEG-4 AVC codec
フィルターです
上記のコードを実行すると、HR=が得られますE_INVALIDARG
。
上記のコードの何が問題なのかわかりません。Plzヘルプ。ありがとう。