本文介绍了MediaFoundation找不到视频捕获模拟器驱动程序。但是DirectShow确实的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们正在开发一个软件,在其中可以预览和记录从视频捕获卡捕获的输入视频源。预览是通过DirectShow实现的,录制是通过Media Foundation实现的(这是一个缓慢升级到MediaFoundation的旧软件)
MediaFoundation的问题在于:它似乎可以正确找到发行机上的视频捕获卡,而不是我们在测试机上使用的屏幕捕获视频模拟器。
另一方面,DirectShow代码可以正确找到视频捕获设备模拟器和屏幕捕获设备模拟器。
所以,为什么不能MediaFoundation可以找到仿真器驱动程序吗?
注意:仿真器是在DirectShow中制作的...它是
这是MediaFoundation代码:
HRESULT DeviceList :: EnumerateVideoDevices(){
HRESULT hr = S_OK;
IMFAttributes * pAttributes = NULL;
ClearVideo();
//初始化属性存储。我们将用它来
//指定枚举参数。
hr = MFCreateAttributes(& pAttributes,1);
//要求来源类型=视频捕获设备
if(SUCCEEDED(hr))
{
hr = pAttributes-> SetGUID(
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE,
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID
);
}
//枚举设备。
if(SUCCEEDED(hr))
{
hr = MFEnumDeviceSources(pAttributes,& m_ppVideoDevices,& m_cVideoDevices);
}
SafeRelease(& pAttributes);
返程时间;
}
在 hr = MFEnumDeviceSources(pAttributes,& m_ppVideoDevices,& m_cVideoDevices);
找不到设备。
谢谢!
解决方案
Media Foundation不应选择所谓的虚拟 DirectShow视频源。 DirectShow通过视频输入类别提供视频源,其中包括由WDM驱动程序设备支持的过滤器,然后包括已注册到该类别的任何其他过滤器。 Media Foundation拥有自己的适配器来公开WDM捕获设备,但是DirectShow过滤器在此处不可见。基本上,您需要一个单独的Media Foundation模拟器。
:
这篇关于MediaFoundation找不到视频捕获模拟器驱动程序。但是DirectShow确实的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!