1

我想在 SDL 中播放多个 MP3 文件。使用SDL_Mixer,我可以播放一个 MP3 文件。

Mix_Music *music = Mix_LoadMUS("music.mp3");

Mix_PlayMusic(music, 0);

但是当我试图与第一个一起播放另一个 MP3 时,第一个停止并播放第二个。有人可以帮忙吗?

4

1 回答 1

1

SDL_mixer 是一个超级简单的音频库;单一音乐曲目是其局限性之一。

您可以将音乐播放为多种音效。虽然有一些缺点:

  • 您必须自己管理暂停/音量/循环,通过跟踪用于播放声音的通道。不是太难,但它是你必须编写的代码。
  • 声音不会被流式传输,因此您的所有音乐曲目都将被解码并加载到未压缩的 RAM 中。如今,未压缩的音频并没有那么糟糕 - 要计算未压缩的大小,只需简单地相乘num_channels * sample_rate * bit_rate * duration_in_seconds,即2 * 44100 * 2 * 6010584000分钟 10mb 的立体声 44.1kHz 16 位(即 2 字节)音频。在嵌入式或低端系统中需要注意这一点。

或者,您可以使用支持多个音乐频道的更高级的音频库。

于 2015-12-23T04:57:04.003 回答