0

在适用于 Windows 8 和 10 的较新 XAudio2 API 中,anAUDIO_STREAM_CATEGORY被传递给IXAudio2::CreateMasteringVoice.

文档继续说明如何将这些用于不同类型的音频。然而 anIXAudio2只允许一个主声音。要做到这一点是完全独立的IXAudio2实例以及所需的所有相关接口,还是可以通过某种方式在音频图中的其他地方指定类别?

游戏应将其音乐流分类为AudioCategory_GameMedia,以便在另一个应用程序在后台播放音乐时游戏音乐自动静音。音乐或视频应用程序应将其流分类为AudioCategory_MediaAudioCategory_Movie,以便它们优先于AudioCategory_GameMedia流。游戏内过场动画或过场动画的游戏音频,当音频被预混或出于创意原因应优先于背景音频时,也应归类为媒体电影

4

1 回答 1

2

您可以在一个流程中创建多个IXAudio2实例,以便每个实例都有自己的主声音。如果你想从一个进程中输出多个类别的音频,你需要创建多个IXAudio2实例。

通常,您可以只使用一个并始终使用AudioCategory_GameMedia.

我知道这种设计有点杂乱无章,但类别是在 WASAPI 输出语音上设置的,这是 XAudio2 将其掌握的语音内容发送到的地方。任何其他设计都需要在内部 XAudio 音频图中注释类别数据,这将非常复杂,因为没有太多价值。相反,我们选择让应用程序同时激活多个音频图,每个音频图都有自己的主控声音,因此它是自己的类别。

您选择如何支持 WASAPI 的音频类别功能取决于您,当然最佳用户体验取决于您的应用程序实际执行的操作。

于 2018-07-18T23:28:00.467 回答