如何使用 SDL_mixer 指定设备

How to specify device using SDL_mixer

我有一个程序可以使用 SDL_mixer 库 (http://www.libsdl.org/projects/SDL_mixer/) 播放一些声音。当我只使用 Mix_OpenAudio 打开与默认设备的连接时,它运行良好。但是,我需要针对特定​​的音频设备。我看到 SDL 库本身有一个名为 SDL_OpenAudioDevice 的方法可以满足我的需要,但我必须编写自己的混音器和所有这些东西。

有谁知道如何使用 SDL_mixer 打开特定的音频设备,或者打开支持此功能的 SDL 的不同混音器?我真的不想写我自己的混音器。我正在使用 C++ 在 Windows 7 上开发 Win32 应用程序。

您似乎无法使用 SDL_mixer 指定设备。 SDL_mixer 使用旧的 SDL 方法 SDL_OpenAudio,因此无法专门针对任何设备。我也研究了 SFML,但它也有同样的局限性。然后我检查了 PortAudio,但它也不会为你混音,所以它看起来好像与 SDL 处于同一级别。然而,事实证明,编写一个简单的混音器来播放按名称针对音频设备的循环声音并不难。

有关方法 SDL_OpenAudioDevice 和 SDL_MixAudioFormat,请参阅 SDL 站点上的文档。我还发现这些代码示例有助于学习如何正确加载我的 wav 文件以及如何循环播放示例:

http://www.libsdl.org/tmp/SDL/test/loopwave.c http://www.libsdl.org/release/SDL-1.2.15/docs/html/sdlconvertaudio.html

我知道这个帖子已经有 4.5 年了,但是对于那些关注这个帖子的人来说: SDL_mixer 2.0.2 现在具有以下功能:

Mix_OpenAudioDevice(int frequency,
                    Uint16 format,
                    int channels,
                    const char* device,
                    int allowed_changes);