Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MediaFoundation可以´;找不到视频捕获模拟器驱动程序。但DirectShow确实如此_C#_Winapi_Video_Directshow_Ms Media Foundation - Fatal编程技术网

C# MediaFoundation可以´;找不到视频捕获模拟器驱动程序。但DirectShow确实如此

C# MediaFoundation可以´;找不到视频捕获模拟器驱动程序。但DirectShow确实如此,c#,winapi,video,directshow,ms-media-foundation,C#,Winapi,Video,Directshow,Ms Media Foundation,我们正在开发一个软件,在该软件中,我们预览并记录从视频采集卡捕获的输入视频源。预览是用DirectShow和媒体基础记录实现的(它是一个老软件慢慢升级到媒体存储) 问题在于MediaFoundation:它似乎在我们的发布机器上正确地找到了视频捕获卡,但在测试机器上使用的“屏幕捕获”视频模拟器却找不到。 另一方面,DirectShow代码可以正确地找到视频捕获设备和屏幕捕获设备模拟器 那么,为什么MediaFoundation找不到模拟器驱动程序呢 注意:仿真器是在DirectShow中制作的。

我们正在开发一个软件,在该软件中,我们预览并记录从视频采集卡捕获的输入视频源。预览是用DirectShow和媒体基础记录实现的(它是一个老软件慢慢升级到媒体存储)

问题在于MediaFoundation:它似乎在我们的发布机器上正确地找到了视频捕获卡,但在测试机器上使用的“屏幕捕获”视频模拟器却找不到。 另一方面,DirectShow代码可以正确地找到视频捕获设备和屏幕捕获设备模拟器

那么,为什么MediaFoundation找不到模拟器驱动程序呢

注意:仿真器是在DirectShow中制作的。。。是的

以下是MediaFoundation代码:

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;
}

At
hr=MFenumDevices资源(文件、视频设备和视频设备)未找到任何设备


谢谢

>媒体基础不应选择所谓的“虚拟”DirectShow视频源。DirectShow通过视频输入类别提供视频源,该类别包括WDM驱动程序设备支持的过滤器,然后是注册到此类别的任何其他过滤器。媒体基金会有自己的适配器来公开WDM捕获设备,但是DirectShow过滤器在那里是看不见的。基本上,你需要一个单独的媒体基础仿真器。 :

从Windows 7开始,媒体基础自动支持音频 和视频捕获设备对于视频,设备必须提供内核 视频捕获类别中的流媒体(KS)微型驱动程序。Media 基金会使用PNP路径枚举设备。音频、媒体 Foundation使用Windows多媒体设备(MMPLATIEW)API 枚举音频端点设备。如果设备符合这些标准, 不需要实现自定义媒体源

但是,您可能希望为某些应用程序实现自定义媒体源 其他类型的设备或其他实时数据源。只有少数 直播源和其他媒体源之间的差异:


谢谢你的澄清。那么,任何媒体基础上的捕获仿真器?或者任何代码或指南来实现带有MF的屏幕捕获输入仿真器?谢谢我想你可以从这里开始:.+1,非常感谢;p给任何能找到MediaFoundation输入仿真器的人!我只是能找到一些用DirectShow制作的。