繁体   English   中英

在C#中的DirectShow.net中获取多个视频渲染器

[英]Getting multiple video renderers in directshow.net in c#

我有4个单独的视频设备连接到各自的视频渲染器,我想在4个单独的窗口/面板中显示视频渲染器。

随着

IVideoWindow GetSecondRenderer()
    {
        IEnumFilters enumFilters;
        ArrayList filtersArray = new ArrayList();

        IFilterGraph filterGraph = (IFilterGraph)m_FilterGraph;
        filterGraph.EnumFilters(out enumFilters);

        IBaseFilter[] filters = new IBaseFilter[1];
        IntPtr fetched = new IntPtr();

        while (enumFilters.Next(1, filters,fetched) == 0)
        {
            IVideoWindow ivw = filters[0] as IVideoWindow;
            if (ivw != null)
            {
                IntPtr outPtr = new IntPtr();
                ivw.get_Owner(out outPtr);
                if (outPtr == IntPtr.Zero)
                    return ivw;
            }
        }
        return null;
    }

然后使用videoWindow2 = GetSecondRenderer(); 代码我设法显示了2个视频,但是由于我对此还很陌生,所以我似乎无法枚举其他2个视频渲染。 有人可以帮忙显示如何修改它以获取其他2个吗? 谢谢。

您的代码仅返回第一个找到的视频渲染器。 而不是从while循环中返回,而是创建IVideoWindows列表并向其中添加找到的渲染器。 然后,当循环结束时,返回整个列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM