Partage de technologie

Lire l'AAC à l'aide des services audio d'Audio Toolbox

2024-07-12

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

Lire l'AAC à l'aide des services audio d'Audio Toolbox

Lire l'AAC à l'aide des services audio d'Audio Toolbox

Principalement divisé en 3 étapes :

  1. utiliser AudioServicesCreateSystemSoundID Créez des sons système.
  2. utiliser AudioServicesAddSystemSoundCompletion Définir le rappel.
  3. utiliser AudioServicesPlaySystemSound Commencer à jouer.

à propos AudioServicesPlaySystemSound fonction:

Cette fonction joue un son court (durée 30 s ou moins). Étant donné que le son peut durer plusieurs secondes, cette fonction est exécutée de manière asynchrone.Pour savoir quand un son a fini de jouer, appelezAudioServicesAddSystemSoundCompletion fonction pour enregistrer une fonction de rappel.

Sur certains appareils iOS, vous pouvez AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) pour invoquer la vibration. Sur les autres appareils iOS, appeler cette fonction avec cette constante n'a aucun effet.

Voici les limitations des fichiers audio que cette fonction peut lire :

  • Durée maximale de 30 secondes
  • Au format PCM linéaire ou IMA4 (IMA/ADPCM)
  • Emballé dans un .caf, .aif, ou .wav déposer

Mais en fait, les fichiers AAC peuvent également être lus normalement. De plus, cette fonction présente de nombreuses limitations :

  • Le son est diffusé au volume audio actuel du système, sans contrôle de volume programmé.
  • Le son est joué immédiatement.
  • La boucle et le positionnement stéréo ne sont pas pris en charge.
  • La lecture simultanée n'est pas possible, un seul son peut être joué à la fois.
  • Le son est diffusé localement sur les haut-parleurs de l'appareil et n'utilise pas de routage audio.

Code de base :

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

Adresse du projet : https://github.com/UestcXiye/AudioToolboxSystemSound.