首页 > 解决方案 > 如何以编程方式更改电子内部 Angular 中的音频输出设备?

问题描述

我正在使用 Angular 11 和 Electron 12 开发桌面应用程序。该应用程序必须能够发出声音,并且用户必须能够更改应用程序使用的音频输出设备。

因此,我尝试使用setSinkIdWebRTC 实验功能。Electron 使用支持此功能的 Chromium。所以,在 Electron 中webPreferences我启用了experimentalFeatures.

现在,问题在于 Typescript (v4.2.3) 无法识别该setSinkId功能。

我尝试在 Angular 组件中执行此操作:

音频初始化

但如您所见,我收到以下错误消息:

setSinkId 错误

我知道,可能 Typescript 还不支持这个功能。但是,如何在 Electron 中更改 Angular 中的音频输出设备?

标签: angulartypescriptelectronwebrtc

解决方案


尤其是在为 Electron TypeScript 的默认类型开发应用程序时,这里并不是很有帮助。setSinkId()在 Chromium 中受支持,因此在 Electron 中也可用。

您可以通过显式添加setSinkId().

const audio = <HTMLAudioElement & { setSinkId (deviceId: string): void }> new Audio();

audio.setSinkId('the-id-of-the-device');

推荐阅读