首页 > 解决方案 > iOS 14 Safari 和手机睡眠/解锁中的 WebRTC/getUserMedia 问题

问题描述

我似乎注意到 iOS 14 Safari 中 getUserMedia 的回归。以下是重现的步骤:

  1. 在 iOS 14 Safari 上转到https://webrtc.github.io/samples/src/content/getusermedia/gum/
  2. 点击“打开摄像头”并接受摄像头权限;您应该看到本地摄像机视频。
  3. 点击电源键,锁定手机;让手机进入睡眠状态
  4. 解锁/唤醒手机;本地摄像头视频不见了。

这不会在运行 iOS 13 的设备上发生。

我的问题是:

  1. 其他人可以在他们的设备上确认这一点吗?到目前为止,我只在 iPhone 11 上进行了测试。
  2. 有人找到解决方案了吗?

标签: webrtcmobile-safarigetusermedia

解决方案


是的,也在这里!

我在带有 iOS 的 Browserstack 中检查了这种行为:

  • 12.x:✓</li>
  • 13.x:✓</li>
  • 14.x:✗</li>

尝试这个:

navigator.mediaDevices.getUserMedia({ audio: true, video: true })
 .then(stream => {
   const videoTracks = stream.getVideoTracks();
   console.log(videoTracks[0].enabled);
   document.querySelector('video').srcObject = stream;
 });

// Output
true <-- ?

然后,如果您再次尝试获取相机,但替换之前 MediaStream 上的视频轨道可以工作。

有时,如果您使用视频约束facingMode: 'user'也可以,为什么?我不知道。

我仍然找不到一致的解决方案。


推荐阅读