Как воспроизвести несколько файлов MP3 одновременно в SDL?

Я хочу воспроизвести несколько файлов MP3 в SDL. С помощью SDL_MixerЯ могу воспроизвести один файл MP3.

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

Mix_PlayMusic(music, 0);

Но когда я пытаюсь воспроизвести другой MP3 вместе с первым, первый останавливается и воспроизводит второй. Может ли кто-нибудь помочь в этом?

1 ответ

SDL_mixer предназначен для очень простой аудио библиотеки; одна музыкальная дорожка является одним из ее ограничений.

Вы можете воспроизводить музыку как несколько звуковых эффектов. Есть несколько минусов:

  • Вам придется самостоятельно управлять паузой / громкостью / зацикливанием, отслеживая каналы, используемые для воспроизведения звуков. Не слишком сложно, но это код, который вы должны написать.
  • Звуки не будут передаваться, поэтому все ваши музыкальные треки будут декодированы и загружены в оперативную память без сжатия. В наши дни несжатый звук не так уж и плох - для расчета несжатого размера просто умножьте num_channels * sample_rate * bit_rate * duration_in_seconds, который работает, чтобы быть 2 * 44100 * 2 * 60 или же 10584000 или ~10 МБ / мин стерео, 44,1 кГц 16-битного (т.е. 2-байтового) звука. Это то, что нужно остерегаться во встроенных или бюджетных системах.

Кроме того, вы можете использовать более продвинутую аудио библиотеку, которая поддерживает несколько музыкальных каналов.

Другие вопросы по тегам