webrtc - iOS 14 Safari 和手机睡眠/解锁中的 WebRTC/getUserMedia 问题
问题描述
我似乎注意到 iOS 14 Safari 中 getUserMedia 的回归。以下是重现的步骤:
- 在 iOS 14 Safari 上转到https://webrtc.github.io/samples/src/content/getusermedia/gum/
- 点击“打开摄像头”并接受摄像头权限;您应该看到本地摄像机视频。
- 点击电源键,锁定手机;让手机进入睡眠状态
- 解锁/唤醒手机;本地摄像头视频不见了。
这不会在运行 iOS 13 的设备上发生。
我的问题是:
- 其他人可以在他们的设备上确认这一点吗?到目前为止,我只在 iPhone 11 上进行了测试。
- 有人找到解决方案了吗?
解决方案
是的,也在这里!
我在带有 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'
也可以,为什么?我不知道。
我仍然找不到一致的解决方案。
推荐阅读
- linux - 为什么 linux shell 中的“exit”命令不起作用?
- reactjs - 单击开发工具对其进行样式设置时如何不取消选择反应选择
- scala - 如何从另一列创建元组列?
- angular - 如何在 Angular 中使用自定义材质图标
- terraform - Terraform Planning 在计划更改时删除资源
- python - 如何将下拉列表的选定值更新到数据库
- html -
使用动态数据无法按预期工作 - vba - VBA根据单元格值将行剪切并粘贴到另一个工作表并删除空行
- akka.net - 如何为绑定到端口 0 时崩溃的服务配置 Akka.Cluster
- android - RXJava 在完成其他操作时创建一个 observable