Tutorial: 通话前环境与设备检测

通话前环境与设备检测

浏览器环境检测

在开始音视频通话之前,建议您先使用avdEngine.checkBrowserSupport()接口检测 SDK 是否支持当前网页。如果 SDK 不支持当前浏览器,建议用户使用最新版的 Chrome 浏览器、Edge 浏览器、Safari 浏览器、Firefox 浏览器。

var browserSupport = avdEngine.checkBrowserSupport();
if(browserSupport){
    console.log("当前网页支持SDK.");
}else{
    console.log("不支持使用 SDK,引导用户使用最新版的 Chrome 浏览器。");
}

⚠️ avdEngine.checkBrowserSupport() 返回的检测结果为 false 时,可能是以下原因:

​ 当前浏览器不支持 WebRTC 相关能力,您需要引导用户使用推荐的浏览器 浏览器与应用环境信息

另外SDK提供了avdEngine.getBrowserDetect()接口, 可以返回SDK检测到的浏览器相关一些信息。

var detect = avdEngine.getBrowserDetect();
var output = 'navigator.userAgent:' + navigator.userAgent + '<br>';
output += '浏览器内核名称: ' + detect.browser.name + '<br>';
output += '内核版本: ' + detect.browser.fullVersion + '<br>';
output += '定制外壳: ' + detect.browser.isCustomized + '<br>';
output += '外壳名称: ' + detect.browser.shellName + '<br>';
output += '外壳版本: ' + detect.browser.shellFullVersion + '<br>';
output += '操作系统名称: ' + detect.osName + '<br>';
output += '是否支持webrtc的GetUserMedia: ' + detect.getUserMediaSupport + '<br>';
output += '是否支持webrtc的RTCPeerConnection: ' + detect.RTCPeerConnectionSupport + '<br>';
output += '是否支持webrtc的DataChannel: ' + detect.dataChannelSupport + '<br>';
output += '是否支持WebSocket: ' + detect.WebSocketSupport + '<br>';
output += '是否支持屏幕共享: ' + detect.screenSharingSupport + '<br>';
output += '是否支持ORTC: ' + detect.ORTCSupport + '<br>';
console.log("SDK检测到的浏览器相关信息:"+output);

音视频设备测试

为保证用户在使用AVDSDK 的过程中有更好的用户体验,我们建议您在用户加入 AVDRTC 房间之前,对用户设备进行检测并给出建议和引导。

//设备初始化
avdEngine.initDevice().then(function(result){
    if(avdEngine.hasCamera){
        console.log("当前有摄像头设备");
    }else{
    c onsole.log("当前没有摄像头设备");  
    }

    if(avdEngine.hasMicrophone){
        console.log("当前有麦克风设备");
    }else{
        console.log("当前没有麦克风设备");  
    }
}); 


if(avdEngine.isFirefox) {
    avdEngine.checkOpenVideoAndAudio(cameraId,microphoneId).then(showVideoAndAudio).otherwise(alertError);
} else {
    avdEngine.checkOpenVideo(cameraId).then(showVideo).otherwise(alertError);
    avdEngine.checkOpenAudio(microphoneId).then(showAudio).otherwise(alertError);
}

function showVideoAndAudio(stream) {
    checkVideo.srcObject = stream.videoStream;
    checkVideo.play();

    checkAudio.srcObject = stream.audioStream;
    checkAudio.play();

    var intervalMilis = 500;  //音量采购频率,毫秒
    avdEngine.checkAudioLevel(intervalMilis,showAudioLevel);
}

function showVideo(stream) {
    checkVideo.srcObject = stream;
    checkVideo.play();
}

function showAudio(stream) {
    checkAudio.srcObject = stream;
    checkAudio.play();

    var intervalMilis = 500; //音量采购频率,毫秒
    avdEngine.checkAudioLevel(intervalMilis,showAudioLevel);
}


function showAudioLevel(audioLevel) {
    console.log("音量值(阈值0-10):") + audioLevel;
}

avdEngine.checkCloseVideo(); //关闭设备检测中摄像头
avdEngine.checkCloseAudio(); //关闭设备检测中麦克风

应用层参考效果图:

c_1_1