2012-06-26 177 views
0

我正在使用iOS中的視頻和圖像緩存。我已經實現了圖像緩存。現在,在相同的緩存我想存儲視頻我也有以下用於存儲圖像和視頻到緩存代碼:視頻緩存不工作

-(void)cacheFromURL:(Food*)foodForUrl 
{ 
AppDelegate *app=[[UIApplication sharedApplication]delegate]; 
[app.imageCache setCountLimit:50]; 
NSURL *imageUrl=[NSURL URLWithString:foodForUrl.image]; 
NSURL *videoUrl=[NSURL URLWithString:foodForUrl.video]; 
UIImage* newImage = [cache objectForKey:imageUrl.description]; 

if(!newImage) 
{ 
    NSError *err = nil; 

    if(imageUrl!=Nil) 
    { 
     newImage=[UIImage imageWithData:[NSData dataWithContentsOfURL:imageUrl options:0 error:&err]]; 
    } 

    if(videoUrl!=Nil) 
    { 
     moviePlayer=[[MPMoviePlayerController alloc]initWithContentURL:videoUrl]; 
     [app.imageCache setObject:moviePlayer forKey:videoUrl.description]; 
     NSLog(@"video caching....%@",videoUrl.description); 
    } 

    if(newImage) 
    { 
     [app.imageCache setObject:newImage forKey:imageUrl.description]; 
     NSLog(@"caching...."); 
    } 
    else 
    { 
    } 
} 
} 

我已經從緩存中檢索下面的代碼。它正在爲圖像工作,但它不適用於視頻:

- (IBAction)playButton:(id)sender 
{ 
    AppDelegate *app=[[UIApplication sharedApplication]delegate]; 
    NSURL *url=[[NSURL alloc]initWithString:food.video]; 
    NSLog(@"cached for:%@",url.description); 
    moviePlayerController=[[MPMoviePlayerController alloc]init]; 
// moviePlayerController=[[MPMoviePlayerController alloc]initWithContentURL:[NSURL URLWithString:food.video]]; 
    moviePlayerController=[app.imageCache objectForKey:url.description]; 
    moviePlayerController.scalingMode=MPMovieScalingModeAspectFill; 
    moviePlayerController.view.frame=CGRectMake(320,200, 320,200); 
    [self.view addSubview:moviePlayerController.view]; 
    [moviePlayerController play]; 

} 

這種情況下播放視頻的問題是什麼?任何答案和建議將是有價值的

回答

0

您的方法是開放的許多關鍵的錯誤。

  1. 您使用內存緩存來緩存媒體。如果緩存變滿,會發生什麼情況?如果您使用NSCache,則在訪問視頻之前可能會刪除該視頻。

  2. 您是否知道一次只能播放一個視頻?閱讀here

  3. 這是沒有意義的,你在做什麼。您創建一個MPMoviePlayerController,然後將其保留,直到稍後。我建議你分析你的應用資源使用情況,我想你會發現這不是最輕的操作。這可能會導致間接的錯誤。

對我來說,你似乎正在嘗試做一些不太有用的事情。如果您可以編輯問題來解釋您正在嘗試做什麼,那麼我們可能會提供更多幫助。否則,問題就是要求我們解決一個設計很差的實現錯誤。你會得到一個不好的答案(就像這個),你不會接受,你的接受率會下降,你不會得到未來的答案。我希望這對你有所幫助,我知道它一開始很難,但是試着解釋一下:

  1. 你的問題是什麼? (大圖)
  2. 你試過了嗎?
  3. 出了什麼問題?

對於這個問題,你似乎已經錯過了第1步

+0

我正在從web.I一些圖像和視頻希望通過網絡數據加載到高速緩存中的背景和檢索的要求。它的工作圖像緩存?然後什麼是視頻緩存錯誤。我應該使用新的緩存進行視頻嗎? –

+0

您沒有緩存視頻。您正在保存一個指針MPMoviePlayerController。 –

+0

但同樣適用於圖像 –