【发布时间】:2017-10-27 19:08:27
【问题描述】:
我正在尝试在 iOS 11 的 Safari 中运行以下代码。它应该提示用户授予他们设备摄像头的访问权限,然后将其显示在我的 <video autoplay id="video"></video> 元素中。但是,在 iOS 11 中运行时,会抛出 OverconstrainedError:
{message: "Invalid constraint", constraint: ""}
- 代码在Android中运行良好,成功打开摄像头。
- 我尝试了多个有效配置,但都没有成功。
我知道 iOS 11 刚刚发布,所以它可能是一个错误,但有什么想法吗?有没有其他人遇到过这种情况?
代码:
var video = document.getElementById('video');
if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({video: true})
.then(function(stream) {
video.src = window.URL.createObjectURL(stream);
video.play();
})
.catch(function(err) {
console.log(err);
});
}
编辑 1
我已经运行 navigator.mediaDevices.getSupportedConstraints() 并返回以下内容:
{
aspectRatio: true,
deviceid: true,
echoCancellation: false,
facingMode: true,
frameRate: true,
groupId: true,
height: true,
sampleRate: false,
sampleSize: false,
volume: true,
width: true
}
我尝试过省略video 属性的配置,但没有成功。
【问题讨论】:
-
这里也一样,也在 iOS 11 上。虽然我找到了相机工作的线程,但我运气不好:stackoverflow.com/questions/45692526/…
-
试试
{video: true,audio:false}。我发现getSupportedConstraints()会返回很多误报,请改用track.getSettings()(source)。
标签: javascript camera media ios11