Javascript 如何在Safari和IE中访问网络摄像头?getUserMedia是否有替代API?

Javascript 如何在Safari和IE中访问网络摄像头?getUserMedia是否有替代API?,javascript,html,safari,getusermedia,Javascript,Html,Safari,Getusermedia,我目前正在使用javascript访问网络摄像头,然后使用getUserMedia流到浏览器,caniuse.com显示Safari和Internet Explorer 11及以上版本无法访问getUserMedia 我用这个来检查是否有摄像头 navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||

我目前正在使用javascript访问网络摄像头,然后使用getUserMedia流到浏览器,caniuse.com显示Safari和Internet Explorer 11及以上版本无法访问getUserMedia

我用这个来检查是否有摄像头

navigator.getUserMedia  =   navigator.getUserMedia ||
                        navigator.webkitGetUserMedia ||
                        navigator.mozGetUserMedia ||
                        navigator.msGetUserMedia;
然后,我使用以下命令显示:

if (navigator.getUserMedia){
//document.getElementById("webcam").style.display = "block";

window.addEventListener("DOMContentLoaded", function() {
    // Grab elements, create settings, etc.
    var canvas = document.getElementById("canvas"),
        context = canvas.getContext("2d"),
        video = document.getElementById("video"),
        videoObj = { "video": true },
        errBack = function(error) {
            console.log("Video capture error: ", error.code);
        };

    // Put video listeners into place
    if(navigator.getUserMedia) { // Standard
        navigator.getUserMedia(videoObj, function(stream) {
            video.src = stream;
            video.play();
        }, errBack);
    }
    else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
        navigator.webkitGetUserMedia(videoObj, function(stream){
            video.src = window.webkitURL.createObjectURL(stream);
            video.play();
        }, errBack);
    }
    else if(navigator.mozGetUserMedia) { // Firefox-prefixed
        navigator.mozGetUserMedia(videoObj, function(stream){
            video.src = window.URL.createObjectURL(stream);
            video.play();
        }, errBack);
    }
    // Trigger photo take
    document.getElementById("snap").addEventListener("click", function() {
        context.drawImage(video, 0, 0, 640, 480);
        canvasToDataURLString = canvas.toDataURL();
        var blob = dataURItoBlob(canvasToDataURLString);
        base64result = canvasToDataURLString.split(',')[1];
        //console.debug(base64result);
        document.getElementById("base64result").innerHTML = base64result;

    });
}, false);
}

或者根本没有办法使用IE和safari访问网络摄像头?我知道Chrome有一些限制,因为网页必须从安全的来源访问

我想知道我是不是做错了。。。 我想知道getUserMedia是否还有其他替代品! 谢谢你,请客气一点,我已经尝试过谷歌搜索了,结果很多,我只是在寻找替代方法,如果真的不可能,那就好了。 谢谢大家!

IE:不,福格达布迪特。(好消息是,即使是旧版本的Windows现在也可以使用新的Edge,而就gUM和MediaRecorder而言,它是Chromium。)

Safari,移动和mac,是的。口香糖有效,但MediaRecorder很古怪

通过这些示例,您可以测试各种浏览器的功能,并且可以使用源代码为您的项目提供指导


首先,navigator.getUserMedia多年来一直被弃用。改用navigator.mediaDevices.getUserMedia。那么Safari从v11开始就支持mediaDevices.gUM。对于较旧的浏览器,当时唯一的方法是使用flash,但您可能不想支持这些。