iphone caching mpmovieplayercontroller progressive-download

iphone - Contenido descargado de caché progresivo en MPMoviePlayerController



caching progressive-download (1)

Tengo un reproductor de música implementado en iphone (sdk 4) y funciona tanto con la transmisión de Mp3 (Transcodificado sobre la marcha) o la descarga progresiva sin formato.

¿Hay alguna forma de hacer que el contenido progresivo descargado (que no controlo directamente) se guarde en la memoria caché para que no se vuelva a descargar todo el contenido?

O ¿Hay una configuración de caché global para controlar? (En una nota al margen, utilicé las API ASIHTTP para contactar a mi servidor HTTP y acceder a los datos que permiten el almacenamiento en caché).

Gracias por adelantado.


Puede usar NSURLConnection para guardar el archivo y reproducirlo.

Ejemplo:

-(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]; }

A continuación está el código para la reproducción

//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];