iOS 11 getUserMedia无法工作?

25

苹果发布了一份声明,表示getUserMedia将在iOS 11上完全可用。在安装了iOS 11 Beta版本5之后,我确实会收到一条消息,提示我的网站请求访问我的摄像头和麦克风,但似乎这行代码:

video.src = window.URL.createObjectURL(stream);
or:
video.srcObject = stream;

不起作用。没有错误,也没有异常,只是从手机相机中没有图片。

这是我的完整脚本:

$(function () {
     video = document.getElementById('vid');

     navigator.getUserMedia = navigator.getUserMedia ||
                              navigator.webkitGetUserMedia ||
                              navigator.mozGetUserMedia;

     navigator.getUserMedia(
     {
         audio: true,
         video: { facingMode: "user" }
     }, function (stream) {
         video.srcObject = stream;
         //video.src = window.URL.createObjectURL(stream);
     },
     function (err) {           
         alert(err.name);
     });
});

HTML:

<video id="vid" muted autoplay></video>

有人让它工作了吗?任何想法都将不胜感激。

1个回答

26

通过使用以下方法解决了问题:

$(function () {
    video = document.getElementById('vid');
    video.style.width = document.width + 'px';
    video.style.height = document.height + 'px';
    video.setAttribute('autoplay', '');
    video.setAttribute('muted', '');
    video.setAttribute('playsinline', '');

    var constraints = {
         audio: false,
         video: {
             facingMode: 'user'
         }
    }

    navigator.mediaDevices.getUserMedia(constraints).then(function success(stream) {
        video.srcObject = stream;
    });
});

1
是的,它已经移动到navigator.mediaDevices。另外请注意,虽然视频似乎在任何地方都可以工作,但iPod touch上的音频无法工作 - 请求音频会导致Overconstrained错误。 - Nathan Friedly
1
我在视频中遇到了黑屏问题,而代码几乎一样。你遇到过这个问题吗?谢谢。 - Marco Feregrino
10
已解决黑屏问题:<video id="videoforsaf" autoplay playsinline></video>。 - Marco Feregrino
@IvanPandžić 如果您发布一个新问题并将其代码链接在这里作为评论,我很乐意帮助您。如果您能给我的问题和答案投票,我会非常感激 :) - Koby Douek
等等,那么这里的修复方法是什么?是你从navigator.getUserMedia转移到了navigator.mediaDevices.getUserMedia还是将其从回调转换为承诺?还是样式/属性或其他什么原因?因为这些对我都不起作用 :( - SeriousLee
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接