如何以编程方式更改 Electron 中 Angular 中的音频输出设备?

How to programmatically change the audio output device in Angular inside Electron?

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

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

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

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

但是如您所见,我收到此错误消息:

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

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

您可以通过显式添加 setSinkId() 的类型定义来帮助 TypeScript。

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

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