Обмен технологиями

Воспроизведение AAC с помощью аудиослужб Audio Toolbox

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Воспроизведение AAC с помощью аудиослужб Audio Toolbox

Воспроизведение AAC с помощью аудиослужб Audio Toolbox

В основном разделен на 3 этапа:

  1. использовать AudioServicesCreateSystemSoundID Создание системных звуков.
  2. использовать AudioServicesAddSystemSoundCompletion Установите обратный звонок.
  3. использовать AudioServicesPlaySystemSound Начните играть.

о AudioServicesPlaySystemSound функция:

Эта функция воспроизводит короткий звук (длительностью 30 секунд или меньше). Поскольку звук может воспроизводиться несколько секунд, эта функция выполняется асинхронно.Чтобы узнать, когда звук закончился, позвонитеAudioServicesAddSystemSoundCompletion функция для регистрации функции обратного вызова.

На некоторых устройствах iOS вы можете AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) вызвать вибрацию. На других устройствах iOS вызов этой функции с этой константой не имеет никакого эффекта.

Ниже приведены ограничения аудиофайлов, которые может воспроизводить эта функция:

  • Продолжительность не более 30 секунд.
  • В формате линейной PCM или IMA4 (IMA/ADPCM)
  • Упаковано в .caf, .aif, или .wav файл

Но на самом деле файлы AAC тоже можно нормально воспроизводить. Кроме того, эта функция имеет множество ограничений:

  • Звук воспроизводится с текущей громкостью системы, без запрограммированной регулировки громкости.
  • Звук воспроизводится сразу.
  • Зацикливание и стереопозиционирование не поддерживаются.
  • Одновременное воспроизведение невозможно, одновременно может воспроизводиться только один звук.
  • Звук воспроизводится локально на динамиках устройства и не использует маршрутизацию звука.

Основной код:

- (void)btnClick:(UIButton *)sender
{
    self.mButton.hidden = YES;
    NSURL *audioUrl = [[NSBundle mainBundle] URLForResource:@"music" withExtension:@"aac"];
    SystemSoundID soundID;
    // create a system sound object
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)audioUrl, &soundID);
    // register a callback function that is invoked when a specified system sound finishes playing
    AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, &playCallback, (__bridge void *_Nullable)(self));
    // play a system sound object
    AudioServicesPlaySystemSound(soundID);
}

void playCallback(SystemSoundID ssID, void  *clientData)
{
    ViewController *vc = (__bridge ViewController *)clientData;
    vc->_mButton.hidden = NO;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Адрес проекта: https://github.com/UestcXiye/AudioToolboxSystemSound.