webView和内存消耗中的简单视频

时间:2012-01-12 12:44:57

标签: iphone objective-c ios memory video

在网页浏览中播放视频并查看乐器时 - 我发现播放时内存占用率很高。 (总共大约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

1 个答案:

答案 0 :(得分: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];