Макет navigator.mediaDevices.enumerateDevices

Я хочу позвонить по WebRTC и услышать звук, хотя к устройству не подключен микрофон. Веб-приложение, которое я использую для присоединения к вызову VOIP, обнаруживает, что у меня нет микрофона, и отключает звук, поскольку предполагает, что я хочу позвонить.

Я заметил, что веб-приложение использует navigator.mediaDevices.enumerateDevices чтобы определить, установлены ли у меня подходящие устройства для вызова. Можно ли как-то посмеяться над тем, чтобы вернуть действительные объекты MediaDeviceInfo, чтобы заставить сайт думать, что у меня есть действующий микрофон, чтобы я мог оставаться на вызове?

Изменить относящийся к дублирующему ответу

Я не думаю, что могу просто переопределить navigator.enumerateDevices = function(){...}

Возвращаемое значение представляет собой список объектов MediaDeviceInfo, которые нельзя создать с помощью конструктора MediaDeviceInfo. Но я хотел бы знать, знает ли кто-нибудь о способе создания какого-либо массива ответов, который бы насытил любого потребителя этого решенного обещания на странице.

0 ответов

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])}) }

Вы можете попробовать что-то вроде этого:

var device1 = {
    deviceId: "default",
    kind: "audiooutput",
    label: "",
    groupId: "default"
}
device1.__proto__ = MediaDeviceInfo.prototype; 
navigator.mediaDevices.enumerateDevices = function() { 
    return [device1]
}
Другие вопросы по тегам