在iPhone上的iOS Safari中访问相机

151 浏览
0 Comments

在iPhone上的iOS Safari中访问相机

我有一个单页Web应用程序(SPA),作为注册流程的一部分,需要验证用户。验证的一部分是捕捉用户的自拍照片。为此,我实现了以下代码的版本,将摄像头输入放入网页中的video元素中,然后可以从中将图像采样到canvas中。

navigator.mediaDevices.getUserMedia({ video: true, audio: false })
    .then(localMediaStream => {
      if ('srcObject' in video) {
        video.srcObject = localMediaStream;
      } else {
        video.src = window.URL.createObjectURL(localMediaStream);
      }
      video.play();
    })
    .catch(err => {
      console.error(`不可用!!!`, err);
    });

这段代码基于Wes Bos的示例,来自他的JavaScript30课程(#19 Unreal Webcam Fun)。您可以在这里尝试它。

这段代码在大多数浏览器上运行良好,但在苹果iOS上的Safari浏览器上(例如:iPhone 12 Pro,iOS 14.7.1)除外。在iPhone上,我可以捕获到摄像头图像的第一帧,但之后,video元素显示为空白。

奇怪的是,它在iPad上运行正常(例如:iPad Pro(11英寸),iOS 14.7.1),但在我尝试过的任何iPhone上都不行。

我在StackOverflow和其他地方看到了很多关于类似的问题,但我还没有找到明确的答案,更不用说解决方案了。

有人有任何想法吗?

谢谢,Stuart.

0