使用 Media Foundation 访问 windows8 上的默认网络摄像头

Access default web cam on windows8 using Media Foundation

我正在 window8 上构建一个多媒体应用程序,我需要访问系统默认的摄像头设备(假设有多个网络摄像头连接到计算机,我需要 select 系统默认的一个)。我正在使用媒体基础框架,但找不到可以告诉我哪个是默认相机的 API。似乎它只能 return 连接到计算机的设备列表(使用 MFEnumDeviceSources(pAttributes, &ppDevices, &count) 函数)。在此处列出的所有捕获设备属性中: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317915(v=vs.85).aspx ,

似乎没有指定设备是否为默认设备的属性。

那么如何使用 Media Foundation 获取默认设备?如果 Media Foundation 无法做到这一点,我可以使用其他框架吗?

Media Foundation 没有默认网络摄像头的概念。我建议在选项中提供一个选择器,默认为第一个设备,并保存任何更改的选择。事实上,要获得默认麦克风,您不会使用 Media Foundation。相反,您将利用 IMMDeviceEnumeratorIMMDevice 获取默认值,并将其与从 Media Foundation 找到的设备进行比较。

关于其他框架,我会坚持使用 Media Foundation。它易于使用,并且性能非常好。希望这有帮助。