如何在 SDL 中同时播放多个 MP3 文件?
Posted
技术标签:
【中文标题】如何在 SDL 中同时播放多个 MP3 文件?【英文标题】:How to Play Multiple MP3 files simultaneously in SDL? 【发布时间】:2014-02-24 06:34:46 【问题描述】:我想在 SDL 中播放多个 MP3 文件。使用SDL_Mixer
,我可以播放一个MP3文件。
Mix_Music *music = Mix_LoadMUS("music.mp3");
Mix_PlayMusic(music, 0);
但是当我尝试与第一个 MP3 一起播放另一个 MP3 时,第一个停止并播放第二个。有人可以帮忙吗?
【问题讨论】:
不确定 mp3,但似乎可以使用 channels 同时播放波形文件。也许您可以将您的 MP3 转换为 WAV,然后再使用它们? 根据我的要求,我只需要播放 mp3。 mp3 将被动态加载。 【参考方案1】:SDL_mixer 是一个超级简单的音频库;单一音乐曲目是其限制之一。
您可以将音乐播放为多种音效。不过也有一些缺点:
您必须自己管理暂停/音量/循环,方法是跟踪用于播放声音的通道。不是太难,但它是你必须编写的代码。 声音不会被流式传输,因此您的所有音乐曲目都将被解码并加载到未压缩的 RAM 中。现在未压缩的音频还不错那么 - 要计算未压缩的大小,只需将num_channels * sample_rate * bit_rate * duration_in_seconds
相乘,即为2 * 44100 * 2 * 60
或10584000
或每分钟约10mb 的立体声,44.1kHz 16 位(即 2 字节)音频。在嵌入式或低端系统中需要注意这一点。
或者,您可以使用支持多个音乐频道的更高级的音频库。
【讨论】:
以上是关于如何在 SDL 中同时播放多个 MP3 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AVAudioPlayer 中循环播放多个音频文件?