getUserMedia约束忽略在Safari 12

问题描述 投票:8回答:2

出于某种原因,Safari浏览器12(还没有尝试过其他版本)是完全无视getUserMedia约束。

我的代码看起来是这样的

  navigator.mediaDevices.getUserMedia({
    video: {
      facingMode: 'environment',
      width: {
        min: 640,
        ideal: 1280
      }
    },
    audio: true
  })
 .then(userStream)//Safari on Mac ignores constraints and ends up executing here
 .catch(fallback)//Chrome on Mac raises and error and ends up executing here

在Chrome的时候我stream.getVideoTracks()[0].getConstraints()我得到什么预期 - 约束上面列出。

当我做同样在Safari我得到一个空对象。

当我尝试使用后置摄像头(用于移动设备)发力,再搭上错误退却到前置摄像头出现问题。

Chrome的Mac上的正确引发错误,并回落到前置摄像头。

Mac上的Safari不引发任何错误,当被迫使用后置摄像头,从而导致错误的性质在我的应用程序进一步。

已搜寻SO,getUserMedia仍无法找到任何解决方案,甚至有同样的问题的人。

也许有更好的方式来确定设备是否有可用的前/后置摄像头?

编辑:

getSupportedConstraints()功能正常返回facingMode支持。问题是,设置时被忽略。至于getConstraints()功能不被支持的 - 这可能是这样,但这不是问题。问题是支持的限制(在这种情况下facingMode)执行。

这个问题可以通过提供的代码很容易被复制,如果您尝试设置facingMode: 'environment',并尝试从Chrome和Safari浏览器从打开相同的代码。

javascript safari getusermedia
2个回答
0
投票

在github上的webrtc issue closed这个问题似乎是有你的解决方案。

我一直在努力了很多支持WebRTC使在不同的浏览器这项工作。

祝好运!


0
投票
   MediaDevices.getSupportedConstraints()

getSupportedConstraints()将是你最好的选择。

https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getSupportedConstraints#Browser_compatibility

到目前为止,它正在与Safari浏览器11,它可能与Safari的12也可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.