2012-01-12 101 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