1

我似乎无法让 SDL_Mixer 在启用 OGG 支持的情况下进行初始化。我知道我必须与 libogg、libvorbis 和 libvorbisfile 链接,但它仍然不起作用。我有这三个库的.dylibs、.frameworks 和.as,我都试过了。

我将 dylibs/frameworks 复制到构建阶段选项卡中应用程序包的 Frameworks 文件夹中。

我已在构建设置选项卡中设置Runpath Search Paths为。@executable_path/../Frameworks

Mix_Init(MIX_INIT_OGG)不断返回错误OGG support not available

我正在使用所有提到的库的最新 Homebrew 版本。我不确定还能尝试什么。

我已经完成了一个以 300MB 的wavs 为音乐的游戏。

更新

我设法将一些 Objective C 与 C++ 混合在一起,并获得了一些声音,AVAudioPlayer但这是可怕的代码。我必须强制转换void *以确保我的音乐播放器类与我的 C++ 代码库兼容。垃圾收集器太烦人了。它所做的只是妨碍你。你必须用桥牌来对抗它。

我真的很想使用 SDL_Mixer 或一个简单的 C 库。

4

1 回答 1

0

我完全实现了 Objective C 音乐播放器,但我无法忍受 Objective C。我找到了一个名为stb_vorbis的出色库。我已经使用了一些其他stb 库,所以我知道这个会很棒。播放这个库中的音频数据实际上非常简单。我真正需要做的就是stb_vorbis_get_samples_short_interleaved在 SDL2 的音频回调中调用。我不需要做任何混音,因为我只需要播放音乐。实现非常简单,以至于我第一次运行它时它实际上运行良好!这是因为 stb_vorbis 和 SDL2 都是 C 库,所以它们才有意义(不像应该刻录的 Objective C)。

TL;博士

如果您只想播放音乐并且不能使用 SDL_Mixer 或不想使用 SDL_Mixer,那么您可以将 stb_vorbis 中的数据输入SDL2 的音频回调中。

于 2018-01-26T08:48:26.070 回答