WebRTC 扬声器选择如何工作 - 推进 WebRTC

主要观点:讨论扬声器选择相关话题,包括不同浏览器中扬声器选择的工作方式、权限滥用问题、如何在所有浏览器中实现扬声器选择等。
关键信息

  • Firefox 支持 navigator.mediaDevices.selectAudioOutput() API 进行扬声器选择,仅需一个按钮,可传入之前使用的 deviceId 跳过提示,且遵循相关隐私设计原则。
  • 其他浏览器情况不同,Safari 依赖操作系统级扬声器选择,Chrome 曾通过麦克风漏洞暴露所有扬声器,后需开启麦克风才能选择扬声器。
  • 存在麦克风漏洞,部分设备既是扬声器又是麦克风,在枚举设备时需同时暴露,这不适用于扬声器选择。
  • 推荐网站进行特性检测,用新 API 作为 fallback 到旧 API 来实现扬声器选择在所有浏览器中工作。
    重要细节
  • 以不同浏览器在桌面端的操作示例说明扬声器选择,如 Firefox 中按下按钮弹出扬声器选择器等。
  • 提及 Firefox 存在的 bug,即更改操作系统默认扬声器时不会触发 devicechange 事件。
  • 说明 Firefox 140+ 版本因兼容性原因通过麦克风访问暴露所有扬声器。
  • 提供了在所有浏览器中实现扬声器选择的代码示例,包括 HTML 和 JavaScript 部分。
阅读 8
0 条评论