如何将OGG与SDL_Mixer一起使用?

时间:2018-01-26 01:30:45

标签: xcode sdl-2 sdl-mixer oggvorbis

我似乎无法在启用OGG支持的情况下初始化SDL_Mixer。我知道我必须链接libogg,libvorbis和libvorbisfile,但它仍然无法正常工作。我有这三个库的$.unique()个,.dylib个和.framework个,我已经尝试了所有这些。

我正在将构建阶段选项卡中的dylibs / frameworks复制到app包的Frameworks文件夹中。

我在构建设置标签中将.a设置为Runpath Search Paths

@executable_path/../Frameworks不断返回错误Mix_Init(MIX_INIT_OGG)

我正在使用所有提到的库的最新自制版本。我不知道还有什么可以尝试的。

我有一个完成的游戏,有300MB OGG support not available s作为音乐。几个星期以来,我一直在推迟这个问题。我不知道该怎么做。

更新

我已经设法将一些Objective C与C ++混合在一起并使用wav播放声音,但这是可怕的代码。我必须转向AVAudioPlayer以确保我的音乐播放器类与我的C ++代码库兼容。垃圾收集器太烦人了。它所做的只是阻碍你。你必须用桥牌演员来对抗它。目标C令人作呕。

如果有人能帮助我,我真的很想使用SDL_Mixer或简单的C库。

1 个答案:

答案 0 :(得分:0)

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

<强> TL; DR

如果您只想播放音乐并且无法使用SDL_Mixer或者不想使用SDL_Mixer,那么您只需将stb_vorbis中的数据提供给SDL2’s audio callback即可。