Node.js/WebRTC: webrtc-adapter does not handle mediaDevice.g



当前我在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!'));
        }
    }
}

最新更新