-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Selecting audio output in case device info permission is not granted #83
Comments
Currently obtaining deviceID is possible outside gUM, with enumerateDevices. However, the devices are not specified since the label attribute is missing, given that enumerateDevices provides deviceID but without gUM the device label is empty. In my understanding, by reading #2 and #71, there is still a question of how to obtain the label to provide the user with a meaningful list of device names, without the gUM. Therefore, do you mean how the output device labels should be obtained outside gUM/enumerateDevices? |
Hmm I see that Safari does not set the deviceID either. Nevertheless, this issue seems to be benefited by what is being discussed in mediacapture-main#612. Introducing a permission prompt in enumerateDevices would allow the user to authorize the access to the label and deviceID. Additionally, that authorization could be further used to enable the setSinkId; which means that the device-info permission of an output device will be granted by the enumerateDevices prompt and setSinkId will be based on that permission. This will remove the need for gUM on playback only scenarios. |
The need for gUM in playback-only scenarios in Chrome is a bug due to the lack of a speaker permission (which exists in the permission spec, but is not implemented in Chrome). See crbug.com/865799. |
Adding a prompt might be be difficult to implement, in particular the message to convey to users.
|
Regarding the already known devices and the specific behavior devices, having specific values as device IDs could be a useful approach. However, a form of authorization is still required in case that the selected device is not the system default one. Otherwise, access is still allowed to devices without user permission. On a minor note, implementing behavior-specific device IDs could be tricky among the different platforms. Defining an API which triggers a device picker also makes sense and would be a good idea. An additional thought would be to embody this functionality to the setSinkId directly. |
Something related to this is which volume setting on a phone is applied to the audio element output. |
I can't quite figure out what the stuff is trying to accomplish here, or how. |
There are applications which do not need access to the camera/microphone but which do need to select the output device. An example is an online course or a company meeting application. If the participant is not asking a question there is no need for access to the camera/microphone (and requesting that access could appear creepy). Yet, there may be a need to select the output device (e.g. play via a headset rather than speakers so as not to interfere with other students/employees). |
It should be made clear that prompting should not be required when switching to the system default device, which is always authorized. |
Agreed with @aboba. Another case is that you initially deny camera access, and later grants
The headset might actually be the default output, or the default output used by the browser. |
Another option:
|
I believe #86 closed this |
Currently, selecting audio output is difficult to implement if camera/microphone access is not granted. This is a limitation that we should try to overcome.
This might be solvable by investigate ways to discover output device IDs outside of enumerateDevices.
The text was updated successfully, but these errors were encountered: