2016-05-19 29 views
6

Tôi đang sử dụng localhost và cố gắng sử dụng phương thức MediaDevices.getUserMedia trong Chrome. Tôi nhận được lỗi như là tiêu đề. Tôi hiểu rằng trong Chrome, chỉ có thể sử dụng chức năng này với nguồn gốc an toàn và localhost được coi là nguồn gốc an toàn. Ngoài ra, điều này hoạt động trong Firefox.Chrome: navigator.mediaDevices.getUserMedia không phải là chức năng

Đây là cách tôi đang sử dụng nó như hiển thị trên trang web Google Developers https://developers.google.com/web/updates/2015/10/media-devices?hl=en:

var constraints = window.constraints = { 
      audio: false, 
      video: true 
}; 


navigator.mediaDevices.getUserMedia(constraints).then(function(stream) { 
      callFactory.broadcastAssembly(stream); 
      ... 
}); 
+0

Tôi nghĩ bạn cần có HTTPS để làm cho nó hoạt động. – Tom

+0

@Tom Phục vụ qua localhost được cho phép cụ thể: https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins – Nateowami

+0

@Nateowami không phải lúc tôi viết nhận xét, mặc dù . – Tom

Trả lời

1

Sử dụng navigator.getUserMedia() để thay thế.

navigator.getUserMedia(constraints, successCallback, errorCallback); 
+1

Tôi đã hy vọng sử dụng MediaDevices.getUserMedia vì Navigator.getUserMedia được liệt kê là không được chấp nhận trên Mozilla. Tôi vẫn còn bối rối vì sao cái cũ không có tác dụng với tôi. – muninn9

+1

Bạn có thể sử dụng cái bạn muốn, nhưng bạn sẽ phải viết một số loại polyfill. –

5

Cố gắng tạo điều kiện cho: chrome: // flags/# enable-nghiệm-web-platform-tính năng

Làm việc cho tôi trong crom

+0

Làm việc cho tôi. Có phải 'navigator.mediaDevices.getUserMedia' được xác định trong Chrome chứ không phải Chromium? MDN [cảnh báo chống lại việc sử dụng] (https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia) từ chối 'navigator.getUserMedia', cảnh báo rằng" nó có thể bị ngắt bất cứ lúc nào ". Tôi đang cố gắng không sử dụng nó, nhưng 'navigator.mediaDevices.getUserMedia' không khả dụng trong Chromium mà không thay đổi cờ đó. EDIT: Trái ngược với những gì tôi đọc, nó [không xuất hiện cho đến khi Chrome 53] (https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) (Tôi đang sử dụng Chromium 52). – Nateowami

+1

Tôi tìm thấy câu trả lời trong chú thích trên MDN: 'Từ phiên bản 47 đến 52, giao diện dựa trên lời hứa chỉ có sẵn thông qua bộ chèn ghép adapter.js hoặc sử dụng cờ chrome: // flags/# enable-experiment-web- nền tảng-tính năng. Bắt đầu với phiên bản 53, giao diện dựa trên lời hứa được bật theo mặc định, mặc dù giao diện đó vẫn không có sẵn thông qua navigator.' – Nateowami

0

Tôi cũng gặp sự cố này và việc thay đổi cờ dường như không hoạt động. Tôi đã xem qua tiện ích mở rộng chrome này - Web Server for Chrome trong số WebRTC tutorial của Google có vẻ như đã thực hiện thủ thuật.

2

Trên một số trình duyệt mới nhất navigator.getUserMedia không hoạt động tốt. Vì vậy, hãy thử sử dụng navigator.mediaDevices.getUserMedia. Hoặc, tốt hơn bạn nên kiểm tra xem navigator.mediaDevices.getUserMedia có sẵn cho trình duyệt sử dụng navigator.mediaDevices.getUserMedia hoặc sử dụng khác navigator.getUserMedia hay không.

navigator.getWebcam = (navigator.getUserMedia || navigator.webKitGetUserMedia || navigator.moxGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); 
if (navigator.mediaDevices.getUserMedia) { 
    navigator.mediaDevices.getUserMedia({ audio: true, video: true }) 
    .then(function (stream) { 
        //Display the video stream in the video object 
    }) 
    .catch(function (e) { logError(e.name + ": " + e.message); }); 
} 
else { 
navigator.getWebcam({ audio: true, video: true }, 
    function (stream) { 
      //Display the video stream in the video object 
    }, 
    function() { logError("Web cam is not accessible."); }); 
} 

Hy vọng điều này sẽ giải quyết được sự cố của bạn.

Các vấn đề liên quan