小编Eri*_*son的帖子

使用DirectShow过滤器而不通过私有CoCreateInstance注册它

所以我基本上读到了这个,http: //www.gdcl.co.uk/2011/June/UnregisteredFilters.htm .

它告诉您如何使用过滤器而不注册它们.有两种方法,new和使用私有CoCreateInstance.我试图使用CoCreateInstance方法.

在该站点的示例中,代码列为,

IUnknownPtr pUnk;
HRESULT hr = CreateObjectFromPath(TEXT("c:\\path\\to\\myfilter.dll"), IID_MyFilter, &pUnk);
if (SUCCEEDED(hr))
{
    IBaseFilterPtr pFilter = pUnk;
    pGraph->AddFilter(pFilter, L"Private Filter");
    pGraph->RenderFile(pMediaClip, NULL);
}
Run Code Online (Sandbox Code Playgroud)

我的代码如下,

IUnknownPtr pUnk;
HRESULT hr = CreateObjectFromPath(TEXT("c:\\filters\\mp4demux.dll"), IID_BaseFilter, &pUnk);
if (SUCCEEDED(hr))
{
  //add functionality
}
Run Code Online (Sandbox Code Playgroud)

我猜IID_BaseFilter是我应该使用的,它是我用于其他过滤器的东西.但我给出了错误'ClassFactory无法提供请求的类'.

我在这里错过了什么吗?任何帮助将不胜感激.提前致谢!

编辑:代码

IBaseFilter *pSrc = NULL, *pSrc2 = NULL, *pWaveDest = NULL, *pWriter = NULL;
IFileSinkFilter *pSink= NULL;
IGraphBuilder *pGraph;
ICaptureGraphBuilder2 *pBuild;
IMediaControl *pControl = NULL;
// This example omits error handling.

hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, …
Run Code Online (Sandbox Code Playgroud)

c++ com encoding directshow mpeg-4

6
推荐指数
1
解决办法
5097
查看次数

标签 统计

c++ ×1

com ×1

directshow ×1

encoding ×1

mpeg-4 ×1