即使我没有连接到设备的麦克风,我也想进行WebRTC通话并听到声音。我用来加入VOIP呼叫的网络应用程序检测到我没有麦克风并关闭我的音频,因为它假设我想要呼入。
我注意到该网络应用正在使用navigator.mediaDevices.enumerateDevices
来确定我是否安装了正确的设备以进行通话。有什么方法可以模仿它来返回有效的MediaDeviceInfo对象,以欺骗网站认为我有一个有效的麦克风,所以我可以保持通话?
我认为我不能覆盖navigator.enumerateDevices = function(){...}
返回值是MediaDeviceInfo对象的列表,您无法使用MediaDeviceInfo构造函数创建这些对象。但我很想知道是否有人知道如何创建某种响应数组,以满足页面上已解决的承诺的任何消费者。
答案 0 :(得分:1)
navigator.mediaDevices.enumerateDevices
返回承诺。尝试以下代码段。您可以添加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])})
}
答案 1 :(得分:0)
您可以尝试以下操作:
var device1 = {
deviceId: "default",
kind: "audiooutput",
label: "",
groupId: "default"
}
device1.__proto__ = MediaDeviceInfo.prototype;
navigator.mediaDevices.enumerateDevices = function() {
return [device1]
}