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