11

Mam odtwarzacz muzyki zaimplementowany w iphone (sdk 4) i działa zarówno z streaming Mp3 (transkodowane w locie) lub surowego pobierania progresywnego.Cache Progressive pobrane treści w MPMoviePlayerController

Czy istnieje sposób na zrobienie postępującego pobrania treści (której nie kontroluję bezpośrednio) do buforowania, aby ponownie pobrać całą zawartość?

Lub Czy istnieje globalne ustawienie pamięci podręcznej do sterowania? (Na marginesie użyłem interfejsów API ASIHTTP, aby skontaktować się z moim serwerem HTTP i uzyskać dostęp do danych, które pozwalają na buforowanie).

Z góry dziękuję.

Odpowiedz

1

Możesz użyć NSURLConnection, aby zapisać plik i odtworzyć go.

Przykład:

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

Poniżej znajduje się kod do odtwarzania

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

Czy testowanej to działa? – vaughan

+0

Witam, czy osiągnąłeś sukces dzięki temu rozwiązaniu? – Bkillnest

Powiązane problemy