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