A way for enumerateDevices() to show audiooutput devices with labels when user has no cam or mic |
||
Issue descriptionCurrently, enumerateDevices() can only show 'audiooutput' devices with labels once we obtain mic permission via gUM. However, if the user does not have a mic, there is no way for us to obtain permission to enumerate their 'audiooutput' devices. In Hangouts Meet, we have a settings dialog with a drop down for picking a speaker. We'd like to have this functionality also work for users who don't have a mic but want to join the meeting to listen in.
,
Nov 20
Getting audio output labels without microphone permissions is also an important key blocker for being able to ship audio output switcher in web audio applications such at TIDAL, Spotify and SoundCloud. It's a really bad UX experience to worry the user with microphone permissions.
,
Dec 19
Besides the mentioned impact, this issue also causes problems for the web app of GoToMeeting.
Currently we need to run something similar to
navigator.mediaDevices.getUserMedia({audio: true}).then(console.log).catch(console.error)
to get access to an output device, which will return a DOMException unless you have a mic.
This however works perfectly fine with Firefox, which will open the premission prompt to grant the permission.
,
Dec 19
,
Dec 19
The reason we don't ask for mic permission when there are no microphones is that the spec says that if there are no devices, getUserMedia should immediately terminate with NotFoundError. Permission checks come later in the getUserMedia algorithm. See step 6 in https://w3c.github.io/mediacapture-main/#dom-mediadevices-getusermedia This said, we are planning to fix this issue by having a separate permission for output devices and having setSinkId() generate a prompt for audio output, if necessary. Unfortunately, no ETA on when this will be completed. |
||
►
Sign in to add a comment |
||
Comment 1 by guidou@chromium.org
, Jul 20Owner: guidou@chromium.org
Status: Assigned (was: Untriaged)