代码之家  ›  专栏  ›  技术社区  ›  Fire Lancer

音频流类别需要多个Xaudio2实例?

  •  -1
  • Fire Lancer  · 技术社区  · 6 年前

    在较新的用于windows 8和10的xaudio2 api中, AUDIO_STREAM_CATEGORY 传递给 IXAudio2::CreateMasteringVoice .

    文档接着说明了如何将它们用于不同类型的音频。然而 IXAudio2 只允许一个主声音。这样做是完全分开的 ixAudio2 实例以及所需的所有关联接口,或者可以通过某种方式在音频图的其他位置指定类别?

    游戏应将其音乐流分类为 音频类别游戏媒体 因此,如果另一个应用程序在后台播放音乐,则游戏音乐会自动静音。音乐或视频应用程序应将其流分类为 音频类别媒体 音频类电影 所以他们会优先考虑 音频类别游戏媒体 溪流。用于游戏内电影或动画的游戏音频,当音频是预混料或出于创造性的原因应优先于背景音频时,也应归类为 媒体 电影 是的。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Chuck Walbourn    6 年前

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

    一般来说,你只需要一个就可以逃脱 AudioCategory_GameMedia 是的。

    我知道这个设计有点笨拙,但类别是在wasapi输出语音上设置的,这是xaudio2发送它掌握语音内容的地方。任何其他设计都需要在内部Xaudio音频图中注释类别数据,因为没有太多的价值,实现起来会非常复杂。相反,我们选择让应用程序一次激活多个音频图,每个音频图都有自己的主控语音,因此它是自己的类别。

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