2013-02-13 10 views
5

Utilizzando il seguente esempio di codice dalla pagina degli sviluppatori di SoundCloud, AVAudioPlayer inizierà la riproduzione dopo che la risposta SCRequest è stata ricevuta. A seconda della dimensione del file richiesto, questo potrebbe richiedere del tempo.

L'API SoundCloud di iOS offre una soluzione pre-buffer, in modo che sia possibile avviare la riproduzione audio prima che tutti i dati siano stati ricevuti o devo implementare una propria soluzione con l'aiuto di NSURLConnection per raggiungere questo obiettivo?Avvia la riproduzione del flusso audio SoundCloud in iOS utilizzando un pre-buffer

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSDictionary *track = [self.tracks objectAtIndex:indexPath.row]; 
    NSString *streamURL = [track objectForKey:@"stream_url"]; 
    SCAccount *account = [SCSoundCloud account]; 

    [SCRequest performMethod:SCRequestMethodGET 
        onResource:[NSURL URLWithString:streamURL] 
       usingParameters:nil 
        withAccount:account 
     sendingProgressHandler:nil 
       responseHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
      NSError *playerError; 
      player = [[AVAudioPlayer alloc] initWithData:data error:&playerError]; 
      [player prepareToPlay]; 
      [player play]; 
     }]; 
} 
+0

Avete una soluzione per questo problema? –

+0

qualsiasi soluzione ho anche bloccato sullo stesso problema. –

risposta

1

afaik al momento non è disponibile una soluzione di pre-buffer. Se vuoi contribuire alla nostra API di SoundCloud, saremmo lieti di esaminare una richiesta di pull da te relativa a questa funzione.

Questo avrà probabilmente effetto su CocoaSoundCloudAPI e OAuth2Client.

Happy Coding!

+0

c'è una soluzione ora? –

+0

qualsiasi soluzione ho anche bloccato sullo stesso problema. –

3

per lo streaming di brani da SoundCloud, tutto quello che dovete fare è passare l'URL AVPlayer con l'id cliente:

NSString *urlString = [NSString stringWithFormat:@"%@?client_id=%@", track.streamURL, self.clientId]; 
player = [[AVPlayer alloc] initWithURL:[NSURL URLWithString:urlString]]; 
[player play]; 

Ci vorrà un po 'di lavoro in più per renderlo un download progressivo. Spero possa aiutare.

+0

Se davvero volessero anche loro dovrebbero usare qualcosa come STKAudioPlayer e ottenere i buffer prima di essere riprodotti e avere i buffer del formato PCM su un file. – kezi

+0

Grazie. Questo è molto più semplice delle richieste GET con 'allow_redirects = False' come descritto nella guida API per gli altri SDK di SoundCloud. – blwinters

Problemi correlati