javascript - 模拟 navigator.mediaDevices.enumerateDevices

标签 javascript google-chrome browser google-chrome-extension pulseaudio

即使我的设备没有连接麦克风,我也想进行 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/

相关文章:

javascript - JQuery 用 Base64 替换图像(html2canvas 无代理)

javascript - 如何让 HTML 文本框在空时显示提示?

javascript - 为什么 document.getElementsByClassName 不断返回未定义的数组?

internet-explorer - 在同一台计算机上运行 Internet Explorer 6、Internet Explorer 7 和 Internet Explorer 8

javascript - 如何打印带有背景图片的网页?

java - 如何在浏览器中过滤Java Applet Console的输出?

javascript - react.js 动态抓取对象导致未定义

javascript - 我如何将接口(interface)应用于 typescript 中的匿名回调函数

javascript - window.open 无法打开两个以上的链接

javascript - 有没有办法确定 blob URL 是否指向某些内容?