【问题标题】:Access default web cam on windows8 using Media Foundation使用 Media Foundation 访问 Windows 8 上的默认网络摄像头
【发布时间】:2015-06-05 18:04:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++11 ms-media-foundation


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的提示。但似乎 IMMDeviceEnumerator 只提供默认音频设备。这是否意味着没有所谓的“默认”视频设备这个概念?
    • 正确。 Windows 当前没有默认网络摄像头的概念。我相信 OS X 可以。
    • 但这是否意味着我最好确保音频和视频设备来自同一个设备?假设我将网络摄像头连接到我的桌面,并且它还有一个麦克风,我必须确保音频和视频设备都默认使用该网络摄像头?
    • 让用户单独选择。用户可能会选择使用耳机上的麦克风,而您不希望强迫他们使用网络摄像头上的麦克风。
    • @CalvinHu - 这是否回答了您的问题,还是我可以提供更多信息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多