首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟navigator.mediaDevices.enumerateDevices

模拟navigator.mediaDevices.enumerateDevices
EN

Stack Overflow用户
提问于 2017-02-26 07:15:43
回答 2查看 2K关注 0票数 1

即使设备上没有连接麦克风,我也想进行WebRTC呼叫并听到声音。我用来加入VOIP呼叫的web应用程序检测到我没有麦克风,并关闭我的音频,因为它假设我想要呼叫。

我注意到web应用程序正在使用navigator.mediaDevices.enumerateDevices来确定我是否安装了合适的设备来进行通话。我有什么办法可以模拟返回有效的MediaDeviceInfo对象来欺骗站点,让他们认为我有一个有效的麦克风,这样我就可以继续通话了吗?

编辑与重复答案相关的内容

我不认为我可以直接重写navigator.enumerateDevices = function(){...}

返回值是不能用MediaDeviceInfo构造函数创建的MediaDeviceInfo对象列表。但是我很想知道是否有人知道一种方法,可以创建某种响应数组,以满足任何消费者对页面上已解决的承诺的需求。

EN

回答 2

Stack Overflow用户

发布于 2020-05-04 22:04:48

navigator.mediaDevices.enumerateDevices返回promise。试试下面的代码片段。您可以添加n个设备。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2020-02-05 21:23:55

您可以尝试如下所示:

代码语言:javascript
复制
var device1 = {
    deviceId: "default",
    kind: "audiooutput",
    label: "",
    groupId: "default"
}
device1.__proto__ = MediaDeviceInfo.prototype; 
navigator.mediaDevices.enumerateDevices = function() { 
    return [device1]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42462773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档