javascript- Safari 上的 Getusermedai

javascript- getUserMedia on Safari

https://caniuse.com/?search=getusermedia

根据上面提供的link,Safari 15是否支持getUserMedia?我试图用它来访问相机,当我在 safari 15 上测试它时,它请求相机许可,在我允许许可后它仍然没有显示任何内容。 link 显示 Safari 15 支持 getUserMedia/Stream API 但不支持 Navigator API: getUserMedia.下面是我的代码,我应该参考哪一个? getUserMedia/Stream API导航器 API: getUserMedia

    navigator.mediaDevices
    .getUserMedia(constraints)
    .then(function (stream) {
        track = stream.getTracks()[0];
        cameraView.srcObject = stream;
    })
    .catch(function (error) {
        console.error("Oops. Something is broken.", error);
    });

HTML

            <video id="camera--view" autoplay></video>

你肯定想要 navigator.mediaDevices.getUserMedia() 方法。它绝对适用于 iOS。另一个已弃用。 Apple 参加 getUserMedia() 派对太晚了,以至于他们没有实施已弃用的 API.

您可以阅读有关查看 iOS 控制台的信息。您需要将 iOS 设备连接到 mac,然后使用 mac 上的 Safari 来执行此操作。这是xxx脖子上的疼痛。解释如何超出 Stack Overflow 答案的范围。

或者您可以使用 alert() 进行调试。

您需要在适当的时候致电cameraView.play()。这是 documentation.

建议这样做。

 navigator.mediaDevices
    .getUserMedia(constraints)
    .then(function (stream) {
        cameraView.srcObject = stream
        cameraView.onloadedmetadata = function(e) {
            cameraView.play()
        }
      })
    .catch(function (error) {
        alert(error)
    })

用警报代替控制台输出。

在我允许后它仍然没有显示任何内容

我通过在 html 中添加 muted 和 playsinline 解决了这个问题。据我所知,iOS 当视频不在线播放且静音时,将不允许自动播放。

            <video id="camera--view" muted autoplay playsinline></video>