我试图在iOS 11的Safari中运行以下代码.它应该提示用户访问他们的设备相机,然后在我的<video autoplay id="video"></video>元素中显示它.但是,在iOS 11中运行时,会导致OverconstrainedError抛出:
{message: "Invalid constraint", constraint: ""}
Run Code Online (Sandbox Code Playgroud)
我知道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);
});
}
Run Code Online (Sandbox Code Playgroud)
我跑了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
}
Run Code Online (Sandbox Code Playgroud)
我尝试过省略video属性的配置,但没有运气.
现在 iOS 11.3 已经发布了 Safari 的更新版本。
有没有人能够成功使用 getUserMedia API 将相机输出显示到画布上?
例如我们都打开了
https://simpl.info/getusermedia/
和
https://webrtc.github.io/samples/src/content/getusermedia/canvas/
在 Safari 中,他们都要求访问相机 - 然而,他们都没有渲染任何东西,只是一个黑色方块
例如