Condivisione della tecnologia

Riproduci AAC utilizzando i servizi audio di Audio Toolbox

2024-07-12

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

Riproduci AAC utilizzando i servizi audio di Audio Toolbox

Riproduci AAC utilizzando i servizi audio di Audio Toolbox

Diviso principalmente in 3 fasi:

  1. utilizzo AudioServicesCreateSystemSoundID Crea suoni di sistema.
  2. utilizzo AudioServicesAddSystemSoundCompletion Imposta la richiamata.
  3. utilizzo AudioServicesPlaySystemSound Inizia a giocare.

Di AudioServicesPlaySystemSound funzione:

Questa funzione riproduce un breve suono (durata 30 secondi o meno). Poiché il suono può essere riprodotto per diversi secondi, questa funzione viene eseguita in modo asincrono.Per sapere quando termina la riproduzione di un suono, chiamaAudioServicesAddSystemSoundCompletion funzione per registrare una funzione di callback.

Su alcuni dispositivi iOS ciò è possibile tramite AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) per invocare la vibrazione. Su altri dispositivi iOS, richiamare questa funzione con questa costante non ha alcun effetto.

Di seguito sono riportate le limitazioni dei file audio che questa funzione può riprodurre:

  • Non più lungo di 30 secondi di durata
  • In formato PCM lineare o IMA4 (IMA/ADPCM)
  • Confezionato in un .caf, .aif, O .wav file

Ma in realtà i file AAC possono anche essere riprodotti normalmente. Inoltre, questa funzione presenta molte limitazioni:

  • Il suono viene riprodotto al volume audio del sistema corrente, senza controllo del volume programmato.
  • Il suono viene riprodotto immediatamente.
  • Il looping e il posizionamento stereo non sono supportati.
  • La riproduzione simultanea non è possibile, è possibile riprodurre solo un suono alla volta.
  • L'audio viene riprodotto localmente sugli altoparlanti del dispositivo e non utilizza il routing audio.

Codice principale:

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

Indirizzo del progetto: https://github.com/UestcXiye/AudioToolboxSystemSound.