Technologieaustausch

Spielen Sie AAC mit den Audiodiensten der Audio Toolbox ab

2024-07-12

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

Spielen Sie AAC mit den Audiodiensten der Audio Toolbox ab

Spielen Sie AAC mit den Audiodiensten der Audio Toolbox ab

Hauptsächlich in 3 Schritte unterteilt:

  1. verwenden AudioServicesCreateSystemSoundID Erstellen Sie Systemsounds.
  2. verwenden AudioServicesAddSystemSoundCompletion Rückruf einstellen.
  3. verwenden AudioServicesPlaySystemSound Jetzt Spielen.

um AudioServicesPlaySystemSound Funktion:

Diese Funktion spielt einen kurzen Ton ab (Dauer 30 Sekunden oder weniger). Da der Ton mehrere Sekunden lang abgespielt werden kann, wird diese Funktion asynchron ausgeführt.Um herauszufinden, wann ein Ton zu Ende gespielt wurde, rufen Sie anAudioServicesAddSystemSoundCompletion Funktion zum Registrieren einer Rückruffunktion.

Auf einigen iOS-Geräten ist dies möglich AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) Vibration hervorrufen. Auf anderen iOS-Geräten hat der Aufruf dieser Funktion mit dieser Konstante keine Auswirkung.

Im Folgenden sind die Einschränkungen der Audiodateien aufgeführt, die mit dieser Funktion abgespielt werden können:

  • Nicht länger als 30 Sekunden
  • Im linearen PCM- oder IMA4-Format (IMA/ADPCM)
  • Verpackt in einem .caf, .aif, oder .wav Datei

Tatsächlich können AAC-Dateien aber auch normal abgespielt werden. Darüber hinaus weist diese Funktion viele Einschränkungen auf:

  • Der Ton wird mit der aktuellen Systemlautstärke abgespielt, ohne programmierte Lautstärkeregelung.
  • Der Ton wird sofort abgespielt.
  • Looping und Stereopositionierung werden nicht unterstützt.
  • Eine gleichzeitige Wiedergabe ist nicht möglich, es kann jeweils nur ein Ton abgespielt werden.
  • Der Ton wird lokal über die Lautsprecher des Geräts wiedergegeben und nutzt kein Audio-Routing.

Kerncode:

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

Projektadresse: https://github.com/UestcXiye/AudioToolboxSystemSound.