Windows 8 Metro アプリの開発に JavaScript を使用しています。ただし、C# も問題外ではありません。Web カメラが写真のキャプチャでサポートできる最高の解像度を指定する方法を見つけようとしています。これまでのところ、私はMediaCaptureクラスを使用しているので、プレビューを表示して画像をキャプチャできます。CaptureUI がMaxPhotoResolutionのオプションをサポートしていることに気付きました。ただし、これを自動化し、ユーザーの操作を必要としないようにしたいと考えています。私はアイデアが不足しています。これはキオスク アプリケーション用であるため、デバイスを完全に制御できるため、回避策を歓迎します。アイデアや提案はありますか?
テストのために、LifeCam Studio を使用しています。カメラ アプリは 1920x1080 を取得し、アプリケーションは 640x480 で写真をキャプチャします。また、ドライバーに付属のソフトウェアは問題なく動作します。これは私の手に負えませんか?
アップデート
特定のカメラ設定の設定を調べています。これがポップアップしました。しかし、これまでのところ、私はそれで運がありませんでした...
9 月 18 日の更新
私は掘り下げてきて、これを思いつきました。解決プロパティが返されます。ただし、setMediaStreamPropertiesAsync メソッドは効果がありません。私はアイデアが不足しています。
12 月 13 日の更新
これを最後にもう一度試してみることにしました。18 日に説明した方法のいくつかを使用すると、公式の Windows 8 リリースで、Lifecam Studio を使用して JavaScript を介して動作しました。理由はわかりません。使用したコードは次のとおりです。
//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]);
}