我试图在iOS 11的Safari中运行以下代码。它应提示用户允许访问其设备相机,然后在我的<video autoplay id="video"></video>
元素中显示它。然而,在iOS 11上运行时,会抛出一个OverconstrainedError
:
{message: "Invalid constraint", constraint: ""}
- 代码在安卓上运行良好并成功打开相机。
- 我尝试了多个有效配置,但都没有成功。
我知道iOS 11刚刚发布,可能是一个bug,但你有什么想法吗?其他人也遇到过这个问题吗?
代码:
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
属性的配置,但是没有成功。
{video: true, audio: false}
。我发现getSupportedConstraints()
返回了很多错误的结果,可以尝试使用track.getSettings()
代替(来源)。 - octavn