尝试创建一个网络应用程序,从浏览器的后置摄像头捕获图像,并努力在多摄像头设备中找到主摄像头。
我们面临的问题是,每个制造商都有不同的命名约定,并且列表中相机的顺序并不表明哪一个相机是主相机(没有任何特殊功能的相机,例如广角,或长焦、潜望镜……)其中分辨率最高。
使用本网站时:https://webrtc.github.io/samples/src/content/devices/input-output/ 例如,对于我的设备,可以通过选择相机 2 2 或相机 2 0 来定位主相机:
有没有办法使用javascript来定位主摄像头?或者至少以编程方式获取相机特性以选择正确的相机?
我不确定 WebRTC API 是否有关于哪一个是“主”摄像头的任何信息,但您可以在调用
constraints
时使用 getUserMedia
来指定后置摄像头(背向用户的摄像头)。这应该会为您获取它首先找到的后置摄像头,在可用的 mediaDevices
中,在大多数情况下是“主”摄像头。
指定
facingMode
为 environment
以选择后置摄像头。 facingMode
值的更多信息在这里。
var constraints = {
facingMode: { exact: "environment" }
// add any other constraint you want here
};
navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
/* use the stream */
})
.catch(function(err) {
/* handle the error */
});