11

Tengo un reproductor de música implementado en iphone (sdk 4) y funciona tanto con transmisión de Mp3 (Transcodificado sobre la marcha) como descarga progresiva sin formato.Caché Contenido descargado progresivamente en MPMoviePlayerController

¿Hay alguna forma de hacer que el contenido progresivo descargado (que no controlo directamente) se almacene 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 de antemano.

Respuesta

1

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 se muestra 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]; 
+0

¿Ha probado esto funciona? – vaughan

+0

Hola, ¿has tenido éxito con esta solución? – Bkillnest

Cuestiones relacionadas