2016-12-24 1 views
5

Используя следующее, мы можем предложить пользователю выбрать предпочтительное устройство ввода мультимедиа с ограничениями на аудио и видео источник (в настоящее время интересуется только поддержкой Chrome).Проверьте, отключен ли выбранный микрофон или нет с веб-аудио. Api

navigator.mediaDevices.getUserMedia({audio: true}) 
    .then((stream) => { 
    console.log(stream); 
    }); 

Кто-нибудь знает, есть ли открытый API для обнаружения, если выбранное пользователем устройство ввода в настоящее время отключено или нет? Устройство ввода будет либо встроенным микрофоном, либо микрофоном, либо программным микрофоном, который отображается в системе как аппаратное устройство.

ответ

3

Вы можете проверить свойству .mutedBoolean значения каждого MediaStreamTrack итерации массива, возвращаемый MediaStream.getAudioTracks() метода, или путем выбора MediaStreamTrack индексом из массива.

navigator.mediaDevices.getUserMedia({audio: true}) 
    .then(stream => { 
    console.log("MediaStreamTrack muted:", stream.getAudioTracks()[0].muted); 
    }) 
    .catch(err => console.log(err)); 

Вы можете также использовать mute и unmuteMediaStreamTrack события.

+1

Это, похоже, не отражает фактическое приглушенное состояние микрофона в Chrome 57 (Windows 10) даже при выборе конкретного микрофона 'Default' с помощью 'deviceId'. –

+1

@ChrisHunt Свойство 'volume'' contraints' также может быть установлено. См. [Возможности, ограничения и настройки] (https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/applyConstraints). Как был отключен микрофон? Можете ли вы описать, как воспроизвести дело? Вы прикрепляли события 'onmute',' onunmute' к 'MediaStreamTrack'? – guest271314

+2

Сначала определите включенный микрофон под лотком> контекстное меню значка звука> устройства записи> аудио. Используйте 'navigator.mediaDevices.enumerateDevices()' для идентификации 'deviceId' для устройства с той же меткой. Используйте 'navigator.mediaDevices.getUserMedia ({audio: {deviceId: '...'}})', чтобы выбрать устройство. Убедитесь, что 'track = stream.getTracks() [0]' соответствует устройству и проверяет 'track.muted'. Отключите микрофон через вкладку «Уровни» для конкретного устройства в диалоговом окне «Устройства записи». Проверьте «track.muted» и убедитесь, что он не изменился. –

Смежные вопросы