如何在SDL中同时播放多个MP3文件?

时间:2014-02-24 06:34:47

标签: c++ audio mp3 sdl sdl-mixer

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

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

Mix_PlayMusic(music, 0);

但是当我尝试播放另一张MP3和第一张MP3时,第一张MP3停止播放第二张MP3。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

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

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

  • 您必须通过跟踪用于播放声音的通道来自行管理暂停/音量/循环。不太难,但这是你必须编写的代码。
  • 声音不会流式传输,因此所有音乐曲目都将被解码并加载到未压缩的RAM中。这些天未压缩的音频不是 坏 - 要计算未压缩的大小,只需乘以num_channels * sample_rate * bit_rate * duration_in_seconds,其效果为2 * 44100 * 2 * 6010584000或~10mb /分钟立体声,44.1kHz 16位(即2字节)音频。在嵌入式或低端系统中需要注意的事项。

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