C# MediaFoundation可以´;找不到视频捕获模拟器驱动程序。但DirectShow确实如此
我们正在开发一个软件,在该软件中,我们预览并记录从视频采集卡捕获的输入视频源。预览是用DirectShow和媒体基础记录实现的(它是一个老软件慢慢升级到媒体存储) 问题在于MediaFoundation:它似乎在我们的发布机器上正确地找到了视频捕获卡,但在测试机器上使用的“屏幕捕获”视频模拟器却找不到。 另一方面,DirectShow代码可以正确地找到视频捕获设备和屏幕捕获设备模拟器 那么,为什么MediaFoundation找不到模拟器驱动程序呢 注意:仿真器是在DirectShow中制作的。。。是的 以下是MediaFoundation代码:C# MediaFoundation可以´;找不到视频捕获模拟器驱动程序。但DirectShow确实如此,c#,winapi,video,directshow,ms-media-foundation,C#,Winapi,Video,Directshow,Ms Media Foundation,我们正在开发一个软件,在该软件中,我们预览并记录从视频采集卡捕获的输入视频源。预览是用DirectShow和媒体基础记录实现的(它是一个老软件慢慢升级到媒体存储) 问题在于MediaFoundation:它似乎在我们的发布机器上正确地找到了视频捕获卡,但在测试机器上使用的“屏幕捕获”视频模拟器却找不到。 另一方面,DirectShow代码可以正确地找到视频捕获设备和屏幕捕获设备模拟器 那么,为什么MediaFoundation找不到模拟器驱动程序呢 注意:仿真器是在DirectShow中制作的。
HRESULT DeviceList::EnumerateVideoDevices(){
HRESULT hr = S_OK;
IMFAttributes *pAttributes = NULL;
ClearVideo();
// Initialize an attribute store. We will use this to
// specify the enumeration parameters.
hr = MFCreateAttributes(&pAttributes, 1);
// Ask for source type = video capture devices
if (SUCCEEDED(hr))
{
hr = pAttributes->SetGUID(
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE,
MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID
);
}
// Enumerate devices.
if (SUCCEEDED(hr))
{
hr = MFEnumDeviceSources(pAttributes, &m_ppVideoDevices, &m_cVideoDevices);
}
SafeRelease(&pAttributes);
return hr;
}
Athr=MFenumDevices资源(文件、视频设备和视频设备)代码>未找到任何设备
谢谢 >媒体基础不应选择所谓的“虚拟”DirectShow视频源。DirectShow通过视频输入类别提供视频源,该类别包括WDM驱动程序设备支持的过滤器,然后是注册到此类别的任何其他过滤器。媒体基金会有自己的适配器来公开WDM捕获设备,但是DirectShow过滤器在那里是看不见的。基本上,你需要一个单独的媒体基础仿真器。
:
从Windows 7开始,媒体基础自动支持音频
和视频捕获设备对于视频,设备必须提供内核
视频捕获类别中的流媒体(KS)微型驱动程序。Media
基金会使用PNP路径枚举设备。音频、媒体
Foundation使用Windows多媒体设备(MMPLATIEW)API
枚举音频端点设备。如果设备符合这些标准,
不需要实现自定义媒体源
但是,您可能希望为某些应用程序实现自定义媒体源
其他类型的设备或其他实时数据源。只有少数
直播源和其他媒体源之间的差异:
谢谢你的澄清。那么,任何媒体基础上的捕获仿真器?或者任何代码或指南来实现带有MF的屏幕捕获输入仿真器?谢谢我想你可以从这里开始:.+1,非常感谢;p给任何能找到MediaFoundation输入仿真器的人!我只是能找到一些用DirectShow制作的。