如何将 OGG 与 SDL_Mixer 一起使用?
How do I use OGG with SDL_Mixer?
我似乎无法 SDL_Mixer 在启用 OGG 支持的情况下进行初始化。我知道我必须 link 与 libogg、libvorbis 和 libvorbisfile 但它仍然不起作用。我有这三个库的 .dylib
s、.framework
s 和 .a
s,我都试过了。
我正在将 dylibs/frameworks 复制到构建阶段选项卡中应用程序包的 Frameworks 文件夹中。
我在构建设置选项卡中将 Runpath Search Paths
设置为 @executable_path/../Frameworks
。
但是Mix_Init(MIX_INIT_OGG)
一直返回错误OGG support not available
。
我正在使用所有提到的库的最新 Homebrew 版本。我不确定还能尝试什么。
我有一个完整的游戏,有 300MB 的 wav
音乐。
更新
我已经设法将一些 Objective C 与 C++ 混合并使用 AVAudioPlayer
播放一些声音,但这是可怕的代码。我必须转换为 void *
以确保我的音乐播放器 class 与我的 C++ 代码库兼容。垃圾收集器太烦人了。它所做的只是妨碍你。你必须用桥梁演员来对抗它。
我真的很想使用 SDL_Mixer 或一个简单的 C 库。
我完全实现了 Objective C 音乐播放器,但我受不了 Objective C。我找到了一个很棒的库,叫做 stb_vorbis. I’ve used a few of the other stb libraries,所以我知道这个库会很棒。从这个库中播放音频数据实际上非常简单。我真正需要做的就是在 SDL2 的音频回调中调用 stb_vorbis_get_samples_short_interleaved
。我不需要做任何混音,因为我只需要播放音乐。实现是如此简单,以至于我第一次 运行 它实际上完美地工作了!这是因为 stb_vorbis 和 SDL2 都是 C 库,所以它们才有意义(不像 Objective C 应该被烧毁)。
TL;DR
如果您只想播放音乐而不能使用 SDL_Mixer 或不想使用 SDL_Mixer,那么您可以只从 stb_vorbis into SDL2’s audio callback 提供数据。
我似乎无法 SDL_Mixer 在启用 OGG 支持的情况下进行初始化。我知道我必须 link 与 libogg、libvorbis 和 libvorbisfile 但它仍然不起作用。我有这三个库的 .dylib
s、.framework
s 和 .a
s,我都试过了。
我正在将 dylibs/frameworks 复制到构建阶段选项卡中应用程序包的 Frameworks 文件夹中。
我在构建设置选项卡中将 Runpath Search Paths
设置为 @executable_path/../Frameworks
。
但是Mix_Init(MIX_INIT_OGG)
一直返回错误OGG support not available
。
我正在使用所有提到的库的最新 Homebrew 版本。我不确定还能尝试什么。
我有一个完整的游戏,有 300MB 的 wav
音乐。
更新
我已经设法将一些 Objective C 与 C++ 混合并使用 AVAudioPlayer
播放一些声音,但这是可怕的代码。我必须转换为 void *
以确保我的音乐播放器 class 与我的 C++ 代码库兼容。垃圾收集器太烦人了。它所做的只是妨碍你。你必须用桥梁演员来对抗它。
我真的很想使用 SDL_Mixer 或一个简单的 C 库。
我完全实现了 Objective C 音乐播放器,但我受不了 Objective C。我找到了一个很棒的库,叫做 stb_vorbis. I’ve used a few of the other stb libraries,所以我知道这个库会很棒。从这个库中播放音频数据实际上非常简单。我真正需要做的就是在 SDL2 的音频回调中调用 stb_vorbis_get_samples_short_interleaved
。我不需要做任何混音,因为我只需要播放音乐。实现是如此简单,以至于我第一次 运行 它实际上完美地工作了!这是因为 stb_vorbis 和 SDL2 都是 C 库,所以它们才有意义(不像 Objective C 应该被烧毁)。
TL;DR
如果您只想播放音乐而不能使用 SDL_Mixer 或不想使用 SDL_Mixer,那么您可以只从 stb_vorbis into SDL2’s audio callback 提供数据。