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