我使用(https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)下面的代码:与getUserMedia火狐V41问题没有看到Chrome或Firefox V36
navigator.mediaDevices = navigator.mediaDevices || ((navigator.mozGetUserMedia || navigator.webkitGetUserMedia) ? {
getUserMedia: function(c) {
return new Promise(function(y, n) {
(navigator.mozGetUserMedia || navigator.webkitGetUserMedia).call(navigator, c, y, n);
});
}
} : null);
设置使用的麦克风。此作品在Chrome(V45)和Firefox(V36)大,但在Firefox(V41)我在控制台中出现以下错误:
Error: setting a property that has only a getter
[email protected]://fakewebsite.com/js/services/recorder.js:61:1
我可以做解决问题:
if (navigator.mozGetUserMedia || navigator.webkitGetUserMedia) {
navigator.mediaDevices.getUserMedia = function(c) {
return new Promise(function(y, n) {
(navigator.mozGetUserMedia || navigator.webkitGetUserMedia).call(navigator, c, y, n);
});
}
}
但这在Chrome或Firefox(v36)中不起作用。
- 在Chrome中,仅定义了navigator.webkitGetUserMedia。
- 在Firefox(v36)中,仅定义了navigator.mozGetUserMedia。
- 在Firefox(v41)中,navigator.mozGetUserMedia和 navigator.mediaDevices都已定义。
我不知道如何解决这个问题,而不会破坏其中一个浏览器。有任何想法吗?
这是一个有点hokey,但它的作品。感谢Cory! – JulieMarie
这段代码覆盖了拥有它的浏览器的原生'navigator.mediaDevices.getUserMedia'功能,这并不是很好。另外,请注意,“navigator.mediaDevices.getUserMedia”无法在Chrome中运行,正如https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia中所述。您应该使用[adapter.js](https://github.com/webrtc/adapter/blob/master/adapter.js)。 – jib