当前我在WebRTC应用程序中有以下内容:
require('webrtc-adapter');
module.exports.getUserMedia = navigator.getUserMedia;
navigator.getusermedia在我的控制台上发出折旧警告。
现在使用module.exports.getUserMedia = navigator.mediaDevices.getUserMedia;
结果为以下错误:
typeError:'getusermedia'在无法实现的对象上调用 接口MediaDevices。
知道为什么Webrt-audapter此时不照顾它?
必须为 getUserMedia
编写我自己的包装器:
module.exports.getUserMedia = function(constraints, success, error){
if(_.isObject(navigator.mediaDevices) && _.isFunction(navigator.mediaDevices.getUserMedia)){
navigator.mediaDevices.getUserMedia(constraints).then((stream)=>{
success(stream);
}).catch((err)=>{
error(err);
})
} else if(_.isFunction(navigator.getUserMedia)){
navigator.getUserMedia(constraints, success, error);
} else {
error(new Error('Failed to request media permissions!'));
}
}
您也可以使用此优化代码。另外,使用Webkit支持所有浏览器上的GetuserMedia。
module.exports.getUserMedia = async function(constraints, success, error){
try {
const stream = await navigator.mediaDevices.getUserMedia(constraints);
success(stream);
} catch(err) {
if (navigator.getUserMedia) {
navigator.getUserMedia(constraints, success, error);
} else {
error(new Error('Failed to request media permissions!'));
}
}
}