2011-12-02 2 views
6

Sto utilizzando l'algoritmo di Matt Gallagher per eseguire lo streaming mp3 in iOS ma a volte quando si mette in pausa l'applicazione e, dopo qualche tempo, si riprende il messaggio pop-up: " Impossibile configurare il flusso di rete letto ". Ho analizzato il codice, ma non vedo come aggirare questo errore. Qualcuno è riuscito a far fronte meglio a questo errore?Audio Streamer di Matt Gallagher in iPhone - impossibile configurare il flusso di lettura della rete

Matt Gallagher's AudioStreamer code

+0

Qualche risposta che potresti condividere su questo? –

+0

Ho riscontrato questo problema in assenza di connettività Internet. Questo potrebbe essere un fattore? È quando ti sposti da o verso il wifi? – Jensen2k

risposta

5

ho sperimentato la stessa cosa con questo terzo app partito e non sono riuscito a trovare una soluzione per questo e AVPlayer nativo di Apple allora ho provato (non AVAudioPlayer) che vi dà la capacità di flusso con la funzione :initWithURL. ecco il riferimento di classe, tra l'altro: http://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVPlayer_Class/Reference/Reference.html

oltre Ecco il mio codice per la riproduzione di musica:

NSURL *url = [[NSURL alloc] initWithString:sourceURL]; 
      theItem = [AVPlayerItem playerItemWithURL:url]; 
      theItem addObserver:self forKeyPath:@"status" options:0 context:nil]; 
      theAudio = [AVPlayer playerWithPlayerItem:mainDelegate.theItem]; 

per catturare se il lettore viene readyto giocare si aggiunge l'osservatore al di sopra e poi si può controllare come :

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object 
         change:(NSDictionary *)change context:(void *)context { 
    if (object == theItem && [keyPath isEqualToString:@"status"]) { 
     if(theItem.status == AVPlayerStatusReadyToPlay)  
     { 
      [theAudio play]; 
      [theItem removeObserver:self forKeyPath:@"status"]; 
     } 
     else if(theItem.status == AVPlayerStatusFailed) { 
      NSLog(@"%@" , mainDelegate.theItem.error.description); 
     } 
     else if(theItem.status == AVPlayerStatusUnknown) 
      NSLog(@"unknown"); 
    } 
} 

Spero che questo aiuti.