Как воспроизвести несколько файлов 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-байтового) звука. Это то, что нужно остерегаться во встроенных или бюджетных системах.

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]