在一个流上直接显示多个渲染器

时间:2019-06-03 05:30:50

标签: directshow

我在C ++ Builder VCL应用程序中具有DirectShow Player。它运行正常,但我将其作为多窗体应用程序的一部分,并希望将视频显示在第二个监视器上。这样一来,我可以拥有额外的按钮,以及监视器1上的视频和监视器2上的视频。

由于directshow在更新显示时不会显示任何事件,我有什么方法可以确定何时显示新的视频图像并将其复制到第二个显示中?

或者,可以将两个视频渲染器放到一个源上吗?

1 个答案:

答案 0 :(得分:0)

我弄清楚了该怎么做。我添加了一个“无限Tee”过滤器,然后在Tee中添加了两个渲染器。然后,这允许每个渲染器从单独的流中分离出单独的窗口。

    // Add an infinite TEE
    hr = AddFilterByCLSID(m_pGraph, CLSID_InfTee, &m_pTee, L"InfTee");
    if (FAILED(hr))
    {
        goto done;
    }

    teeInput  = FindPin(m_pTee, PINDIR_INPUT, 0);
    vidOutput = FindPin(pSource, PINDIR_OUTPUT, 0);
    m_pGraph->Connect(vidOutput, teeInput);