我试图让3ivxfilters在我的C Directshow应用程序中工作,并且它仍然无法将3IVX视频编码器输出引脚连接到3IVX Media Muxer输入引脚 . 我总是得到错误VFW_E_CANNOT_CONNECT .

通过枚举标记来将所有过滤器添加到图形中,因此不会因为直接添加CLSID而出现任何问题 .

当我通过图形编辑打开图形并右键单击/选择Video Encoder输出引脚上的渲染时,它可以正常工作 .

这是我连接过滤器的代码:

HRESULT ConnectFilters(IGraphBuilder *pGraph, IBaseFilter *pSrc, IBaseFilter *pDest)
{
    IPin *pOut = NULL;

    // Find an output pin on the first filter.
    HRESULT hr = FindUnconnectedPin(pSrc, PINDIR_OUTPUT, &pOut);
    if (SUCCEEDED(hr))
    {
        hr = ConnectFilters(pGraph, pOut, pDest);
        pOut->Release();
    }
    return hr;
}

基本上,一旦找到合适的引脚,它就会使用Connect方法 .

hr = pGraph->Connect(pOut, pIn);