Compartir tecnología

Reproduzca AAC usando los servicios de audio de Audio Toolbox

2024-07-12

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

Reproduzca AAC usando los servicios de audio de Audio Toolbox

Reproduzca AAC usando los servicios de audio de Audio Toolbox

Dividido principalmente en 3 pasos:

  1. usar AudioServicesCreateSystemSoundID Crea sonidos del sistema.
  2. usar AudioServicesAddSystemSoundCompletion Establecer devolución de llamada.
  3. usar AudioServicesPlaySystemSound Empieza a jugar.

acerca de AudioServicesPlaySystemSound función:

Esta función reproduce un sonido corto (duración 30 segundos o menos). Dado que el sonido puede reproducirse durante varios segundos, esta función se realiza de forma asincrónica.Para saber cuándo terminó de reproducirse un sonido, llameAudioServicesAddSystemSoundCompletion función para registrar una función de devolución de llamada.

En algunos dispositivos iOS, esto es posible a través de AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) para invocar la vibración. En otros dispositivos iOS, llamar a esta función con esta constante no tiene ningún efecto.

Las siguientes son las limitaciones de los archivos de audio que esta función puede reproducir:

  • No más de 30 segundos de duración.
  • En formato PCM lineal o IMA4 (IMA/ADPCM)
  • Empaquetado en un .caf, .aif, o .wav archivo

Pero, de hecho, los archivos AAC también se pueden reproducir normalmente. Además, esta función tiene muchas limitaciones:

  • El sonido se reproduce al volumen de audio actual del sistema, sin control de volumen programado.
  • El sonido se reproduce inmediatamente.
  • No se admiten bucles ni posicionamiento estéreo.
  • La reproducción simultánea no es posible, sólo se puede reproducir un sonido a la vez.
  • El sonido se reproduce localmente en los parlantes del dispositivo y no utiliza enrutamiento de audio.

Código central:

- (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

Dirección del proyecto: https://github.com/UestcXiye/AudioToolboxSystemSound.