2015-09-09 70 views
0

我使用tableview顯示視頻,並希望將URL /數據保存在緩存中,因此用戶在重播時不必再次下載相同的視頻。在桌面視圖中緩存和保存視頻

但是,我想保留他們,直到用戶退出應用程序。下次他打開應用程序時,他必須再次下載它們,所以我只需要將它們保存爲應用程序的活動生命週期。

我還應該做緩存還是有更有效的方法來做到這一點?

-(void)loadVideo:(NSString *)urlString { 


NSURL *url = [NSURL URLWithString:urlString]; 
NSString* cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString* file = [cachePath stringByAppendingPathComponent:@"/EGOCache.plist"]; 
NSDictionary *dict =[NSDictionary dictionaryWithContentsOfFile:file]; 

if ([dict objectForKey:urlString]) 
{ 
    NSData *data = [[EGOCache globalCache] dataForKey:urlString]; 
    data = [NSURLConnection sendSynchronousRequest: 
      [NSURLRequest requestWithURL:url] 
           returningResponse:nil 
              error:nil]; 
    NSLog(@"loading from cache %@",urlString); 

}else{ 
    NSData *data = [NSURLConnection sendSynchronousRequest: 
        [NSURLRequest requestWithURL:url] 
              returningResponse:nil 
                 error:nil]; 
    [[EGOCache globalCache] setData:data forKey:urlString]; 
    NSLog(@"saving cache %@",urlString); 

} 
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 10.0]; 
[self.videoPlayer setContentURL:[request URL]];} 

回答

0

AVFoundation允許流式傳輸磁盤上的視頻文件。 我建議你看看保存在文件夾或緩存文件夾中的視頻,並從那裏蒸汽到AVFoundation。然後當用戶退出應用程序時,applicationWillTerminate被調用,您可以從磁盤擦除視頻。

編輯

使用的MPMoviePlayerController:

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: URL-TO-FILE-ON-DISK]; 
[player prepareToPlay]; 
[player.view setFrame: myView.bounds]; // player's frame must match parent's 
[myView addSubview: player.view]; 
// ... 
[player play]; 
+0

我使用的MPMoviePlayerController。還有其他建議嗎? – durazno

+0

更新了我的回答 – bsarrazin

+0

我不明白你的意思是URL-TO-FILE-ON-DISK。更新了問題。 (順便說一句,我的代碼有問題,我認爲它不會保存在緩存中) – durazno