首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >directshow视频捕获中的VFW_E_NOT_IN_GRAPH

directshow视频捕获中的VFW_E_NOT_IN_GRAPH
EN

Stack Overflow用户
提问于 2012-08-15 18:28:50
回答 1查看 472关注 0票数 1

又是我,想用directShow。我尝试从摄像头分配器实现一个读取摄像头的示例(我想以字节数组的形式获取帧),但在尝试连接引脚时得到VFW_E_NOT_ in _GRAPH-Error。

我已经搜索过了,现在知道了,这意味着我没有向graphbuilder添加特定的过滤器(或者我使用的过滤器不兼容?),但我添加了一个过滤器,并且看不到示例的任何差异……然而,示例不是一个项目,而只是代码碎片,所以我想我可能忘记了任何初始化……

你能看看这个,告诉我你有没有发现错误?所有的工作都发现没有错误,只是最后一个小时填充了0x8004025F,什么也没有发生(我在DoRenderSample-method中设置了一个停止点):

代码语言:javascript
复制
    HRESULT hr = S_OK;
    IBaseFilter* pFilter=0;
    hr=CreateKernelFilter(
        CLSID_VideoInputDeviceCategory,
            L"Videology USB-C Camera",
            &pFilter
    );
    CoInitialize(NULL);
//  CComQIPtr<IVideology20K1XX> pKs(pFilter);
    CComQIPtr<IVideologyCommon> pKs( pFilter );
    if(pFilter==0)return;
//  hr=pKs->SetWhiteBalanceMode(wbAuto);

    CBitmapRenderer *m_pSnapshotter = new CBitmapRenderer( _T("Bitmap renderer"), NULL, &hr );

    if( FAILED(hr) )
    {
        ASSERT("Couldn't create bitmap renderer.");
        return;
    }
    m_pSnapshotter->SetCallback( (IBitmapCallback*) this );
    CComQIPtr< IBaseFilter > pGrabBase( m_pSnapshotter );
    IGraphBuilder*  m_pGraphBuilder=0;
     hr = CoCreateInstance(CLSID_FilterGraph, NULL,
    CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&m_pGraphBuilder);
    hr = m_pGraphBuilder->AddFilter( pGrabBase, L"Snapshot" );

    CComPtr<IPin> pOutPin;
    hr= pFilter->FindPin( L"1", &pOutPin );

    CBasePin* pInPin = m_pSnapshotter->GetPin( 0 );
    hr = m_pGraphBuilder->Connect( pOutPin, pInPin );

我希望我没有忘记任何重要的信息。(我想使用embarcadero XE2 16和2005年的DirectShow9中的C++Builder)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-15 18:53:09

错误代码将告诉您错误所在。VFW_E_NOT_IN_GRAPH,有些东西不在图表里。您连接属于两个过滤器的两个引脚。其中一个筛选器不在图形中。当您在上面的几行中添加pGrabBase时,另一个筛选器不在图形中。在连接引脚之前也要添加它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11967748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档