Dear Apple:
I have a Website with a HTML Video Element. It is a Videochat. I want to change the speaker device but this currently does not work. I've fixed it locally via .setSinkId(sinkId) already (can be simulated via audioff addon) but ran into a major problem on macOS. The user that changes the desired speaker cannot change the volume via volume keys on macOS.
Problem: So I can fully mute my macbook and the website keeps screaming at me!
Reason: Just the default device gets muted which is not necessarily what the user selected as Output device for the html video/audio element via .setSinkId(sinkId).
Steps to reproduce:
Use Firefox (Safari doesn't even support HTMLMediaElement API: setSinkId)
Install and activate the addon audioff (you can setSinkId on a different audio output device per website, similar to how I would fix the bug)
You need a element that plays sound. I use a hallosophia.com account and created a meeting link and join twice. You can use this Link where anyone can join: https://www.hallosophia.com/waiting-room/724c6fb2-7261-4133-a3e6-66dfd4a0263f/inkognito - speaker doesn't apply so set it to MacBook but will not apply and still be in your AirPod.
Have one AirPod in the ear and go to the website with the sound playing element and right click on the page to "Audio output select" via audioff (which you could also do as the website itself via .setSinkId(sinkId)) and change the speaker from AirPod to MacBook.
-> As expected you will have the sound on your MacBook speakers but you cannot change the volume via Volume keys. Even if your MacBook is muted the website can "scream at you"
I can verify that macOS has the default behaviour of changing just the default speaker volume by installing the non verified app MultiSoundChanger. With this app installed everything works as expected and it changes all audio devices volume at the same time. But it is not even a verified app.
So I would say what needs to change is the default behaviour in macOS that it changes the volume of all speakers and not just the default speaker. And that Safari starts to support .setSinkId(sinkId).
I use a MacBook Air 2020 on Sonoma 14.2.1 with Firefox 122.0