directshow不用编码filter能不能直接捕获视频保存为文件?
在写一个视频捕获程序~~使用的是directshow~~
预览可以了,但是在捕获保存为文件时出问题了~~
HRESULT hr;
IBaseFilter *pMux;
hr = pBuild->SetOutputFileName(
&MEDIASUBTYPE_Avi, // Specifies AVI for the target file.
L"K:\\Example.avi", // File name.
&pMux, // Receives a pointer to the mux.
NULL); // (Optional) Receives a pointer to the file sink.
if (FAILED(hr))
{
AfxMessageBox("´´½¨graphʧ°Ü");
return hr;
}
hr = pBuild->RenderStream(
&PIN_CATEGORY_CAPTURE, // Pin category.
&MEDIATYPE_Video, // Media type.
pVideoCap, // Capture filter.
NULL, // Intermediate filter (optional).
pMux); // Mux or file sink filter.
if (FAILED(hr))
{
AfxMessageBox("ÊÓƵдÈëÎļþʧ°Ü");
return hr;
}
这样直接捕获,而没有用编码filter,可以吗?
如果可以的话,为什么我捕获下来的文件都打不开,每次一打开explorer就占用CPU100%?
[解决办法]
这样理论上也是可以的,不过我都是利用avi mux + File write来保存文件的。
可否把你的构建filter graph的代码贴出来看看!