2012-01-12 143 views
5
網頁視圖內的視頻,看着儀器時

- 我看到內存使用的高峯玩的時候。 (總共大約兩個23 MB)簡單的視頻播放

在我離開的看法(它是在一個UINavigation視圖)所有內存被清除,因爲它應該。 (使用ARC)

重要:我從DISK加載視頻,而不是從服務器加載它!

問題:播放視頻時是否有減少內存的方法?

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 
// 

NSURLRequest *request = [[NSURLRequest alloc] initWithURL: videoURL cachePolicy: NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval: 10.0]; 
[webView loadRequest: request]; 
[webView setOpaque:NO]; 

enter image description here

+0

有多大的視頻文件?你使用什麼編解碼器? – Luke 2012-01-16 08:50:41

+0

MP4格式,不同的編解碼器(每次有一個不同的視頻加載這樣的編解碼器可能會改變),大小爲4MB什麼每個視頻文件20MB – chewy 2012-01-17 10:01:39

回答

1

從你的代碼,在我看來,你試圖使用一個UIWebView作爲視頻播放器,沒有在同一時間顯示在任何其他HTML內容。

即使這是完全可能的,它是,正如你所觀察到的,沒有特別有效的 - 一個UIWebView將加載,因爲它是用於顯示網頁製作它的所有內容到內存中。

更好的解決方案是使用Apple的MediaPlayer框架,即MPMoviePlayerController和/或MPMoviePlayerViewController

如果您只需要播放全屏視頻,則應該使用MPMoviePlayerViewController。使用它很簡單:

MPMoviePlayerViewController *vc = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL]; 
[self presentMoviePlayerViewControllerAnimated:vc]; 
[vc release]; 

這將呈現一個模態視圖控制器包含您的剪輯。 如果你想定製的任何部分,你可以使用moviePlayer屬性。

如果您寧願在另一個視圖內顯示視頻,則應該查看MPMoviePlayerController。 使用這個類涉及到更多的樣板,也爲您提供了更多的控制:

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
[player prepareToPlay]; 
player.view.frame = contentView.bounds; //The Player View's Frame must match the Parent View's 
// ... 
[player play]; 
+0

謝謝你的回答,但我指的是內存使用哪個更或者在使用MediaPlayer時相同。我已經嘗試過,而且內存消耗非常高(播放時爲20MB) – chewy 2012-01-19 09:03:28