获取navigator.getUserMedia()不再适用于不安全的起源

时间:2015-12-14 09:36:40

标签: javascript html5

我正在使用navigator.getUserMedia捕获html5中的网络摄像头图像。直到上周工作正常。现在获取像getUserMedia()这样的消息不再适用于不安全的起源并从网络摄像头中捕获图像。我在web上搜索了getUserMedia,发现它已被弃用,浏览器将来不支持它。是否有适用于所有浏览器的getUserMedia的替代功能。

我的HTML代码是

  <video id="video" width="640" height="480" autoplay></video>
  <button id="snap" class="sexyButton">Snap</button>
   <canvas id="canvas" width="640" height="480"></canvas>

和脚本功能是

         <script>
    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); 
            };
        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) { // WebKit-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);
        });
    }, false);

         </script>

2 个答案:

答案 0 :(得分:1)

Chrome现在(截至47岁以上)执行新的安全规则,必须通过HTTPS提供使用getUserMedia的网页。这是为了降低恶意演员使用相机或麦克风设备监视用户的风险。它已经宣布超过4个月。

至于你的其他评论&#34; getUserMedia在网上发现它已被弃用,浏览器不支持它未来&#34; - 这完全是错误的。

答案 1 :(得分:0)

Chrome 47,getUserMedia()不再适用于不安全的来源 几天前,Chrome 47已经发布。

如果没有HTTPS,WebRTC将无法运行。 根据内部安全政策,自版本47以来,Chrome浏览器不支持针对不安全页面的getUserMedia()。因此,如果您的网页不是HTTPS,则无法使用麦克风。

http://flashphoner.com/getusermedia-no-longer-works-on-insecure-origins/