主要观点:讨论扬声器选择相关话题,包括不同浏览器中扬声器选择的工作方式、权限滥用问题、如何在所有浏览器中实现扬声器选择等。
关键信息:
- Firefox 支持
navigator.mediaDevices.selectAudioOutput()
API 进行扬声器选择,仅需一个按钮,可传入之前使用的deviceId
跳过提示,且遵循相关隐私设计原则。 - 其他浏览器情况不同,Safari 依赖操作系统级扬声器选择,Chrome 曾通过麦克风漏洞暴露所有扬声器,后需开启麦克风才能选择扬声器。
- 存在麦克风漏洞,部分设备既是扬声器又是麦克风,在枚举设备时需同时暴露,这不适用于扬声器选择。
- 推荐网站进行特性检测,用新 API 作为 fallback 到旧 API 来实现扬声器选择在所有浏览器中工作。
重要细节: - 以不同浏览器在桌面端的操作示例说明扬声器选择,如 Firefox 中按下按钮弹出扬声器选择器等。
- 提及 Firefox 存在的 bug,即更改操作系统默认扬声器时不会触发
devicechange
事件。 - 说明 Firefox 140+ 版本因兼容性原因通过麦克风访问暴露所有扬声器。
- 提供了在所有浏览器中实现扬声器选择的代码示例,包括 HTML 和 JavaScript 部分。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。