1

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

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

4

2 回答 2

5

我知道这个线程有 4.5 年的历史,但是对于那些过来看看这个的人: SDL_mixer 2.0.2 现在具有以下功能:

Mix_OpenAudioDevice(int frequency,
                    Uint16 format,
                    int channels,
                    const char* device,
                    int allowed_changes);
于 2019-08-02T20:59:35.480 回答
0

看来您不能使用 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

于 2015-01-29T17:29:33.887 回答