Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iPhone X上带有chrome浏览器的navigator.mediaDevices.getUserMedia出现问题_Javascript_Ios_Google Chrome_Webcam_Getusermedia - Fatal编程技术网

Javascript iPhone X上带有chrome浏览器的navigator.mediaDevices.getUserMedia出现问题

Javascript iPhone X上带有chrome浏览器的navigator.mediaDevices.getUserMedia出现问题,javascript,ios,google-chrome,webcam,getusermedia,Javascript,Ios,Google Chrome,Webcam,Getusermedia,我试图让我的浏览器访问我的设备摄像头,这样我就可以将媒体流输入视频,但当我在谷歌chrome上测试getUserMedia时,它不受支持,但当我使用safari时,我没有任何问题 google chrome不再支持getUserMedia了吗 我已经读过了,但运气不好 这是我当前使用的实现: navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUser

我试图让我的浏览器访问我的设备摄像头,这样我就可以将媒体流输入视频,但当我在谷歌chrome上测试getUserMedia时,它不受支持,但当我使用safari时,我没有任何问题

google chrome不再支持getUserMedia了吗

我已经读过了,但运气不好

这是我当前使用的实现:

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

    let constraints = {
      audio: false,
      video: { facingMode: "user" }
    }

    if (navigator.getUserMedia) {
      navigator.getUserMedia(constraints,
         function(stream) {
            var video = document.querySelector('video');
            video.srcObject = stream;
            video.onloadedmetadata = function(e) {
              video.play();
            };
         },
         function(err) {
            alert("The following error occured: " + err.name);
         }
      );
   } else {
      console.log("getUserMedia not supported");
   }

这适用于桌面和手机上的FF和Chrome。注意:桌面和手机的宽度和高度是相反的。注意:FF和Chrome允许它在本地主机和https上运行。Chrome将不允许它在http站点上运行

function fnStreamVideo(){
    navigator.mediaDevices.getUserMedia({ video:true })
    .then(function(stream) {
        let video = document.getElementById('video');
        video.srcObject = stream;
        video.onloadedmetadata = function(e) {
            video.play();
            video.width=480;
            video.height=320;
        };
    })
    .catch(function(e){});
}

在iOS 11.2x上也有同样的问题。我的研究表明,FF和Chrome在操作系统上受支持,但在iOS上不受支持,即使它们能够支持媒体设备。您可以测试easy mediaDevice的可用性:

            if (navigator.mediaDevices) {
            alert ("Media device supported");
        }
        else {
            alert ("Media device not supported");
        }
您也可以在此处检查:

iOS上的FF和Chrome将显示“媒体设备不受支持”,而Safari则表示支持。原因似乎是苹果还没有免费提供使用mediaDevices访问其他浏览器的权限。你可以想象其中的一些原因所以这次不要责怪Chrome或Firefox


很想知道它现在是否在iOS 12上运行。

这在Chrome iOS上似乎不起作用。打开下面的小提琴,可以看到
警报
:@ben为什么投反对票?链接后的代码无法工作。我的作品,在FF、Chrome、Safari、台式机和手机。请详细解释。(即兴评论和arb向下投票正是我不喜欢对stackoverflow发表评论的原因。)JSFIDLE上的代码与您共享的代码相同(避免警告)。它不起作用,因为像@Jonny在回答中说的那样,
mediaDevices
未定义的。这是iOS的一个特点。在Android上,您的代码可以正常工作。然而,问题是关于iPhoneX(iOS)的。我还在现场使用这段代码,它仍然有效。@MannyC你错了。正如@ben所说,
mediaDevices
在Chrome for iOS上是
未定义的。它可以在iOS上的Safari中运行,但由于苹果的限制,其他浏览器无法运行。我怀疑你的“工作现场”已经崩溃了。2020年9月,Chrome84.0.4147.71操作系统:iOS仍然无法工作