11

Ho un lettore musicale implementato in iphone (sdk 4) e funziona sia con lo streaming di Mp3 (Transcoded al volo) che con il download progressivo raw.Cache Contenuto scaricabile progressivo in MPMoviePlayerController

Esiste comunque la possibilità di rendere memorizzato il contenuto progressownownloaded (che non ho il controllo diretto) in modo da non scaricare di nuovo l'intero contenuto?

Oppure C'è una impostazione della cache globale da controllare? (A proposito, ho usato le API ASIHTTP per contattare il mio server HTTP e accedere ai dati che consentono la memorizzazione nella cache).

Grazie in anticipo.

risposta

1

È possibile utilizzare NSURLConnection per salvare il file e riprodurlo.

Esempio:

-(void)downloadFileAtPath:(NSString *)path 
{ 
    NSURL *url     = [NSURL URLWithString:path];  
    NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url]; 
     NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:req delegate:self]; 
    [connection start]; 
} 

-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response 
{ 
    //NSLog(@"%s", __PRETTY_FUNCTION__); 
    [[NSFileManager defaultManager] createFileAtPath:pathForCurrentFile contents:nil attributes:nil]; 
    currentFile = [NSFileHandle fileHandleForUpdatingAtPath:pathForCurrentFile]; 
    if (currentFile) 
    { 
     [currentFile seekToEndOfFile]; 
    } 
} 

-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data 
{ 
    //NSLog(@"%s", __PRETTY_FUNCTION__); 
    if(currentFile != nil){ 
     if (currentFile) { 
      [currentFile seekToEndOfFile]; 
     } 
     [currentFile writeData:data]; 
    } 
} 

-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error 
{ 
    NSLog(@"%s, %@", __PRETTY_FUNCTION__, error); 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    [currentFile closeFile]; 
} 

Di seguito è il codice per la riproduzione

//Playback 
NSString *loopFilePath = [[self applicationDocumentsDirectory].path stringByAppendingPathComponent:vidFileName]; 

NSURL *vidURL = [NSURL fileURLWithPath:vidFilePath]; 

self.vidController = [[MPMoviePlayerController alloc] initWithContentURL:vidURL]; 
self.vidController.view.frame = CGRectMake(0, 0, 640, 480); 
self.vidController.controlStyle = MPMovieControlStyleDefault; 
[self.view addSubview:self.vidController.view]; 
[self.vidController prepareToPlay]; 
[self.vidController play]; 
+0

Avete testato questo funziona? – vaughan

+0

Ciao, hai successo con questa soluzione? – Bkillnest