javascript - 如何在 Safari 和 IE 中访问网络摄像头?是否有 getUserMedia 的替代方法?

标签 javascript html internet-explorer safari getusermedia

我目前正在使用 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 中存在限制,因为必须从安全来源访问该网页。

  1. 我想知道我是否做错了...
  2. 我想知道除了 getUserMedia 是否还有其他选择!

谢谢,请客气,我已经尝试谷歌搜索并搜索了很多,我只是在寻找替代方案,如果真的不可能,那就好吧。

最佳答案

最终用户应使用适用于 Safari 和 IE 的 Temasys WebRTC 插件在每个浏览器中启用 WebRTC https://skylink.io/plugin/ .

关于javascript - 如何在 Safari 和 IE 中访问网络摄像头?是否有 getUserMedia 的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38969080/

相关文章:

javascript - 如何使用javascript一键显示确认警报?

javascript - 删除/禁用 google.maps.Data 类中功能子集的事件监听器

javascript - 向 setTimeout() 传递回调参数在 IE 中不起作用?

javascript - SweetAlert2 不适用于 IE 11,未定义 Promise

javascript - 由于多种原因,AngularJS 应用程序无法在 IE 8 中正确呈现

javascript - 导出前的 Ag-grid Angular 格式数据

javascript - cljs 未在 LightTable 中定义

html - 将两个 div float 到彼此紧挨着

javascript - 开始 JavaScript - 在内部 HTML 中显示温度值

html - 大屏幕布局中网格模板列第二部分的空白区域