2016-12-24 2 views
5

En utilisant ce qui suit, nous pouvons demander à l'utilisateur de sélectionner leur appareil d'entrée média préféré des contraintes sources audio et vidéo (actuellement uniquement intéressés à l'appui Chrome). Quelqu'un sait-il s'il existe une API exposée pour détecter si le périphérique d'entrée sélectionné par l'utilisateur est actuellement coupé ou non? Le périphérique d'entrée est un microphone intégré, un micro externe ou un microphone défini par logiciel qui s'affiche dans le système en tant que périphérique matériel.Vérifiez si le microphone sélectionné est coupé ou non avec api audio web

Répondre

3

Vous pouvez vérifier la propriété .mutedBoolean valeur de chaque MediaStreamTrack par itérer le tableau retourné par MediaStream méthode .getAudioTracks(), ou en sélectionnant l'MediaStreamTrack par index du tableau.

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

Vous pouvez également utiliser mute et unmuteMediaStreamTrack événements.

+1

Cela ne semble pas refléter l'état réel mis en sourdine du microphone dans Chrome 57 (Windows 10), même lors de la sélection d'un microphone spécifique non 'Default' par 'deviceId'. –

+1

@ChrisHunt La propriété 'volume' de' contraints' peut également être définie. Voir [Capacités, contraintes et paramètres] (https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/applyConstraints). Comment le micro était-il coupé? Pouvez-vous décrire comment reproduire le cas? Avez-vous joint des événements 'onmute',' onunmute' à 'MediaStreamTrack'? – guest271314

+2

Microphone activé pour la première identification sous Plateau> Menu contextuel de l'icône Son> Périphériques d'enregistrement> Audio. Utilisez 'navigator.mediaDevices.enumerateDevices()' pour identifier le 'deviceId' de l'appareil avec la même étiquette. Utilisez 'navigator.mediaDevices.getUserMedia ({audio: {deviceId: '...'}})' pour sélectionner le périphérique. Vérifiez 'track = stream.getTracks() [0]' correspond au périphérique et vérifie 'track.muted'. Coupez le microphone via l'onglet "Niveaux" du périphérique spécifique dans la boîte de dialogue "Périphériques d'enregistrement". Vérifiez 'track.muted' et voyez qu'il n'a pas changé. –