我正在使用 JavaScript 进行 Windows 8 Metro App 开发;但是,C# 并非不可能。我正在尝试找到一种方法来指定我的网络摄像头可以支持照片拍摄的最高分辨率。到目前为止,我一直在使用MediaCapture类,这样我就可以预览并捕捉图像。我注意到 CaptureUI 支持MaxPhotoResolution选项。但是,我希望这是自动的,不需要用户交互。我的想法不多了。这是针对信息亭应用程序的,因此欢迎使用变通方法,因为我可以完全控制设备。有什么想法或建议吗?
对于测试,我使用的是 LifeCam Studio。相机应用程序拍摄 1920x1080,而我的应用程序拍摄 640x480 的照片。此外,驱动程序附带的软件可以完美运行!这是我无法控制的吗?
更新
我一直在研究设置特定的相机设置;这突然出现了;但是,到目前为止,我还没有运气......
9月18日更新
我一直在挖掘并想出了这个。返回分辨率属性;但是,setMediaStreamPropertiesAsync 方法无效!我的想法不多了。
12月13日更新
我决定最后一次尝试,并使用 18 日描述的一些方法,它通过 JavaScript 和 Lifecam Studio 在官方 Windows 8 版本上运行。至于为什么,我不知道。这是我使用的代码:
//media=MediaCapture object
function setBestResolution(media) {
//Gets collection of objects each describing the resolution, etc.
var resolutions = media.videoDeviceController.getAvailableMediaStreamProperties(Windows.Media.Capture.MediaStreamType.photo);
var numResolutions=resolutions.length;
for (var r = 0; r<resolutions;r++){
var res = resolutions[r];
//.width and .height are props. Debug to see all.
}
//I chose 40 as best option; however, programmatically you can choose any. I have dedicated kiosk app and same webcam and therefore don't need to.
media.videoDeviceController.setMediaStreamPropertiesAsync(Windows.Media.Capture.MediaStreamType.photo, resolutions[40]);
}