即使我的设备没有连接麦克风,我也想进行 WebRTC 通话并听到声音。我用来加入 VOIP 通话的网络应用程序检测到我没有麦克风,并关闭了音频,因为它假定我想要呼入。
我注意到网络应用程序正在使用 navigator.mediaDevices.enumerateDevices
来确定我是否安装了用于通话的正确设备。有什么方法可以模拟它返回有效的 MediaDeviceInfo 对象,以欺骗网站认为我有一个有效的麦克风,这样我就可以继续通话?
编辑与重复答案相关的内容
我认为我不能只覆盖 navigator.enumerateDevices = function(){...}
返回值是 MediaDeviceInfo 对象的列表,您无法使用 MediaDeviceInfo 构造函数创建该对象。但我很想知道是否有人知道创建某种响应数组的方法,该数组可以满足页面上已解决 promise 的任何消费者。
最佳答案
navigator.mediaDevices.enumerateDevices
返回 promise 。尝试下面的代码片段。您可以添加 n 个设备。
var device1 = {
deviceId: "default",
kind: "audiooutput",
label: "",
groupId: "default"
}
device1.__proto__ = MediaDeviceInfo.prototype;
navigator.mediaDevices.enumerateDevices = function() {
return new Promise((res, rej)=>{res([device1])})
}
关于javascript - 模拟 navigator.mediaDevices.enumerateDevices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42462773/