【问题标题】:How to Play Multiple MP3 files simultaneously in SDL?如何在 SDL 中同时播放多个 MP3 文件?
【发布时间】: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 将被动态加载。

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2013-05-28
    • 2010-09-30
    • 2021-08-14
    相关资源
    最近更新 更多