Сегодня мы поговорим о том, как воспроизвести звук или музыку на iOS.
Сделать это просто и для этого предложено много средств.
Начнем с самого простого – как воспроизвести звуковой файл:
AudioServices
SystemSoundID soundID; NSURL *url = [NSURL fileURLWithPath:@"path/to/sound/file"]; //путь к звуковому файлу AudioServicesCreateSystemSoundID((CFURLRef) url,&soundID); //создаем SoundID AudioServicesPlaySystemSound (soundID); //воспроизводим SoundID
Этот способ подходит для бесконтрольного проигрывания стандартных звуков или из звуковых файлов. Под бесконтрольным я подразумеваю отсутствие контроля над воспроизведением. Например, перемотка, накладывание различных эффектов и многое другое.
AVAudioPlayer
NSURL *url = [NSURL fileURLWithPath:@"path/to/sound/file"]; //путь к звуковому файлу AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err]; //создаем плеер, который будет воспроизводить определенный звуковой файл [player play]; //проигрываем плеер
AVAudioPlayer является мощным инструментом для работы со звуком и музыкой. С ним можно грамотно использовать память и полностью управлять воспроизведением. Например, менять громкость звучания, а также стерео эффект.
На GitHub уже давно лежит очень полезный класс для работы с воспроизведением звуков – SoundMaster.
Среди его возможностей:
- Плавное появление/затухание музыки
- Плавный переход между двумя музыкальными треками
- Проигрывание нескольких звуков одновременно
- Настройка относительной громкости звуков
- Пауза/Продолжение и зацикливание музыки
- Оптимальное использование памяти
- Предварительная загрузка музыки и звуков для лучшей производительности
Но для моей скоро выходящей в свет игры требуется наличие панорамного стерео-эффекта для различных звуков. Поэтому я сделал отдельную ветку для SoundMaster, где добавил управление стерео-эффектом “на лету” для звуков, также по пути исправил несколько крешей при неверном использовании SoundMaster.
Кому понравится – буду благодарен за репост ;)