热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何解决iOS11SafarigetUserMedia"无效约束"问题

如何解决《如何解决iOS11SafarigetUserMedia"无效约束"问题》经验,为你挑选了1个好方法。

我试图在iOS 11的Safari中运行以下代码.它应该提示用户访问他们的设备相机,然后在我的元素中显示它.但是,在iOS 11中运行时,会导致OverconstrainedError抛出:

{message: "Invalid constraint", constraint: ""}

代码在Android中正常运行并成功打开相机.

我尝试了多个有效配置而没有运气.

我知道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属性的配置,但没有运气.



1> kintaro..:

safari中的无效约束错误是因为浏览器期望您传递正确的宽度,其中之一是:

320

640

1280

高度自动计算宽高比为4:3(320或640),16:9(1280),如果传递宽度为320,则视频流设置为:

320×240

如果您将宽度设置为640,则视频流设置为:

640×480

如果您将宽度设置为1280,则视频流设置为:

1280×720

在任何其他情况下,您的宽度值都会出现"InvalidConstrain"错误.

您还可以使用最小,最大,精确或理想的宽度约束,请查看MDN文档

这是codepen中的一个例子

var cOnfig= { video: { width: 320/*320-640-1280*/ } };
var start = () => navigator.mediaDevices.getUserMedia(config)
  .then(stream => v.srcObject = stream)
  .then(() => new Promise(resolve => v.Onloadedmetadata= resolve))
  .then(() => log("Success: " + v.videoWidth + "x" + v.videoHeight))
  .catch(log);

var log = msg => div.innerHTML += "

" + msg + "

";

PD:在chrome中你可以设置一个高度宽度,视频流设置为这些大小,Firefox做一个健身距离,Safari期望完全匹配.


推荐阅读
author-avatar
mobiledu2502863723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有