繁体   English   中英

Windows 8如何选择要初始化的相机

[英]Windows 8 how to choose which camera to initialize

我正在开发Windows Store App并且正在使用“ CameraMicrophone功能。 我希望对后置摄像头进行初始化,但是我发现的示例始终会初始化前摄像头。 这是我的代码:

Windows.Devices.Enumeration.DeviceInformation.findAllAsync(Windows.Devices.Enumeration.DeviceClass.videoCapture)
    .done(function (devices) {
        if (devices.length > 0) {
            // Using Windows.Media.Capture.MediaCapture APIs to stream from webcam 
            mediaCaptureMgr = new Windows.Media.Capture.MediaCapture();
            mediaCaptureMgr.initializeAsync().done(initializeComplete, initializeError);
        } else {
            var div = document.createElement('div');
            div.innerHTML = "No Camera found";
            document.body.appendChild(div);
        }
    });

在这种情况下, mediaCaptureMgr是指前置摄像头。 videoDeviceId阅读了文档,并说我已经为MediaCapture()函数提供了videoDeviceId ,如下所示:

mediaCaptureMgr = new Windows.Media.Capture.MediaCapture({
    videoDeviceId: devices[1].id
});

但是,前置摄像头仍会初始化。 我正在Surface上编写和测试。 你能帮我吗?

仅为了完成“ ma_il”的正确答案,devices [1]是Surface以外的设备上的后置摄像头并不总是正确的。 若要测试相机和其他设备的放置位置,您必须检查设备信息是否包含本文报告的其他重要信息: http : //msdn.microsoft.com/zh-cn/library/windows/apps/hh464961.aspx

完整的代码应如下所示

if (devices.length > 0) {
    devices.forEach(function (currDev) {
        if (currDev.enclosureLocation.panel && currDev.enclosureLocation.panel == Windows.Devices.Enumeration.Panel.back) {
             defaultDeviceId = currDev.id;
        }
    })
}

您必须创建一个MediaCaptureInitializationSettings对象:

var settings = new Windows.Media.Capture.MediaCaptureInitializationSettings();
settings.videoDeviceId = devices[1].id;
mediaCaptureMgr.initializeAsync(settings).done(initializeComplete, initializeError);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM