如何在Chrome for iOS中使用getUserMedia

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Chrome for iOS中使用getUserMedia相关的知识,希望对你有一定的参考价值。

我正在开发一个简单的应用程序,在此我试图使用getUserMedia访问相机和麦克风。它适用于桌面Chrome和android Chrome,但在iPhone和iPad Chrome中无效。

navigator.getUserMedia = navigator.getUserMedia
        || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
var constraints = "";
if (mediaType === "audio,video") {
    constraints = {
        audio : true,
        video : true
    };
} else {
    constraints = {
        audio : true,
        video : false
    };
}
navigator.getUserMedia(constraints, successCallback, errorCallback);
答案

...但它不适用于iPhone和iPad Chrome。

iPhone或iPad上的Chrome应用程序未运行“完整”版本的chrome。它的功能仅限于ios平台。所以getUserMedia等可能在Safari/Apple supports it之前不可用。

Quoting from another question

Apple政策强制其他浏览器使用其不支持webRTC的webkit版本,因此您不会很快在iOS上的Web应用程序中获得webRTC支持。 webkit中的活动暗示作为一种变化,但是时间到了,这将是几个月。

另一答案

我的理解(我是Mozilla工程师)是iOS上的Chrome目前不支持webrtc或getUserMedia。

另一答案

由于不推荐使用“navigator.getUserMedia”,因此您应该使用“navigator.mediaDevices.getUserMedia”。这似乎(仍然)是一个问题。只要您在Safari中使用相机,iOS 11.4上的相机访问就可以正常工作。如果您想在任何其他浏览器(Chrome,Firefox)中使用它,则不受支持。这是一个你可以尝试的例子:

            if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
                var constraints = {
                    audio: true,
                    video: true
                };

                navigator.mediaDevices.getUserMedia(constraints)
                    .then(function(stream) {
                        var video = document.querySelector('video');
                        video.srcObject = stream;
                        video.onloadedmetadata = function(e) {
                            video.play();
                        };
                    })
                    .catch(function(err) {
                        console.log (err);
                    });
            }
            else {
                console.log ("navigator.mediaDevices not supported")
            }
<video id="video" width="200" height="200" autoplay playsinline></video>
另一答案

更新:我知道这是一个非常老的线程,但从IOS 11.4测试版开始,

  1. getUserMedia受支持但不支持PWA(也就是独立的又名移动网络应用程序)应用程序2现在,对于分析器节点,FFTSize现在高达32768,但似乎无法将原始实时音频输入分析器节点(因此大致是顶级的)一半的频率大幅衰减进入FFT节点而忘记安装自己的FFT,因为它没有更好的GIGO)
  2. 最新的桌面Safari似乎是11.1,它甚至更糟,因为FFTSize在2048年达到顶峰,你仍然没有获得原始音频源。

我一直希望!

另一答案

WebRTC(包括getUserMedia)将在iOS11上发布,但将使用h264 / h265编解码器,即没有VP8 / VP9。

以上是关于如何在Chrome for iOS中使用getUserMedia的主要内容,如果未能解决你的问题,请参考以下文章

使用 Chrome for IOS 从网站录制声音

如何在 vscode 中使用 debugger for chrome

如何在 iOS 版 Chrome 中使用 Web-NFC?

如何在Chrome for WebRTC应用程序中记录/查看ICE连接检查消息?

如何使用 Selenium for Firefox 和 Chrome 禁用推送通知?

如何在 iOS Chrome 中使用 CSS 滚动捕捉 + 图片错误隐藏滚动条