我想在 SDL 中播放多个 MP3 文件。使用 SDL_Mixer
,我可以播放一个 MP3 文件。
Mix_Music *music = Mix_LoadMUS("music.mp3");
Mix_PlayMusic(music, 0);
但是当我尝试在播放第一个 MP3 的同时播放另一个 MP3 时,第一个停止并播放第二个。有人可以帮忙吗?
最佳答案
SDL_mixer 是一个 super 简单的音频库;单一音乐轨道是其局限性之一。
您可以将音乐播放为多种音效。不过也有一些缺点:
- 您必须自己管理暂停/音量/循环,方法是跟踪用于播放声音的 channel 。不太难,但这是您必须编写的代码。
- 声音不会流式传输,因此您的所有音乐轨道都将被解码并加载到 RAM 中,并且未压缩。如今,未压缩的音频并不那么糟糕 - 要计算未压缩的大小,只需乘以
num_channels * sample_rate * bit_rate * duration_in_seconds
,结果为2 * 44100 * 2 * 60
或10584000
或每分钟约 10mb 的立体声、44.1kHz 16 位(即 2 字节)音频。在嵌入式或低端系统中需要注意这一点。
或者,您可以使用支持多个音乐 channel 的更高级的音频库。
关于c++ - 如何在 SDL 中同时播放多个 MP3 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21980507/