[英]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.