Javascript iPhone X上带有chrome浏览器的navigator.mediaDevices.getUserMedia出现问题
我试图让我的浏览器访问我的设备摄像头,这样我就可以将媒体流输入视频,但当我在谷歌chrome上测试getUserMedia时,它不受支持,但当我使用safari时,我没有任何问题 google chrome不再支持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
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仍然无法工作