我正在製作一個Directshow應用程序來捕獲MP4視頻。我使用下圖來做到這一點。directshow RedenStream無法捕獲
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幫助。謝謝。
感謝您的答覆......我嘗試這種方式,並還給你。 – meghana
當我用直接圖形構建調用替換渲染流時,它工作正常。我很高興它的工作,但它的奇怪,沒有得到爲什麼之前沒有工作的原因! – meghana