提交工单
咨询集成、功能及报价等问题
产品 / 插件:实时音视频 / 实时语音 / 低延迟直播
平台 / 框架:Web
更新时间:2021-09-09 19:57
在 Chrome 81 浏览器上调用 enumDevices 接口,获取到的 “deviceID” 为空。
在 Safari 浏览器和 Firefox 浏览器上也可能遇到该问题,问题原因和解决方案同下。
为了保护用户隐私,从 Chrome 81 版本起,如果浏览器没有获得使用媒体设备的权限,将无法获取设备 ID(deviceID) 信息。
在 ZEGO Express Web SDK 中,如果在调用 creatStream 接口成功之前调用 enumDevices接口,则获得的 “deviceID” 可能为空。
您可以通创建临时的流采集音视频,触发媒体设备权限申请,以获得完整的设备信息。
创建临时的音频流和视频流分别用于采集音频和视频,触发麦克风和摄像头的权限申请。
采集完音视频流后,调用 enumDevices 接口即可获得完整的设备信息。
如果您没有麦克风或者摄像头,或者这些设备被禁用了,采集可能会失败。此时采集音视频的目的是获取使用媒体设备的权限,只要确保采集失败不影响整个流程即可。
如果发生采集失败的情况,获取到的设备列表中可能会存在 “deviceId” 和 “deviceName” 为空的设备。
// zg = new ZegoExpressEngine(appID, server);
let tempAudioStream: mediaStream,tempVideoStream: mediaStream;
try{
tempAudioStream = await zg.createStream({ camera:{ audio: true, video: false } });
tempVideoStream = await zg.createStream({ camera:{ audio: false, video: true } });
}catch(err){
console.warn("create stream failed!", err);
}
// 音视频采集完成后,调用 enumDevices 获取 deviceName 和 deviceID
const devices = await zg.enumDevices();
console.log("get device info!", devices);
});
联系我们
文档反馈