无法使用 Agora Web SDK 在 Chrome 81、Firefox 和 Safari 上获取设备 ID



我注意到,在Chrome 81、Firefox和Safari中,我无法获取相机和麦克风的设备ID。

我使用getDevices方法,但它返回一个空响应。

const devices = AgoraRTC.getDevices(info => {
console.log("get device info!", info);
});

如何获取设备ID?

从Chrome 81开始,如果未授予使用设备的权限,则不会公开设备ID。此更改是为了保护用户隐私。

对于Agora Web SDK,如果您试图在Stream.init成功创建流之前获取设备信息,那么将应用隐私保护,并且不会正确返回设备ID。建议先初始化流,然后在用户接受设备权限后查询设备。

const audioStream = AgoraRTC.createStream({ audio: true, video: false});
const videoStream = AgoraRTC.createStream({ audio: false, video: true});
// Initialize the streams to trigger the device permissions
const audioPermissionGranted = new Promise(resolve => {
audioStream.init(() => resolve(null), (e) => resolve(e));
});
const videoPermissionGranted = new Promise(resolve => {
videoStream.init(() => resolve(null), (e) => resolve(e));
});
Promise.all([audioPermissionGranted, videoPermissionGranted]).then(res => {
if (res[0] !== null) {
console.warn("create audio stream failed!", res[0]);
}
if (res[1] !== null) {
console.warn("create video stream failed!", res[0]);
}
// After the permissions are granted, call getDevices to get device information
const devices = AgoraRTC.getDevices(info => {
console.log("get device info!", info);
});
});

最新更新