如何以编程方式更改 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');
我正在使用 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');