2016-08-05 233 views
1

我正在使用几行UIViewController s进行演示。在每一个屏幕上,我都需要播放视频。
这是我使用的每一个这些屏幕,用于播放视频的代码:使用AVPlayer播放视频 - 视频在某个点停止

NSURL *videoURL = [[NSBundle mainBundle]URLForResource:@"video" withExtension:@"mp4"]; 

AVPlayer *avPlayer = [[AVPlayer alloc]initWithURL:videoURL]; 
AVPlayerLayer *avPlayerLayer =[AVPlayerLayer playerLayerWithPlayer:avPlayer]; 

[avPlayerLayer setFrame:CGRectMake(0, 0, videoWidth, videoHeight)]; 

_videoView.layer.sublayers = nil; 
[_videoView.layer addSublayer:avPlayerLayer]; 

[avPlayer seekToTime:kCMTimeZero]; 
[avPlayer play]; 

首先屏幕的UIViewController这里用户可以选择其中一个方案。在主屏幕上,我还使用上面编写的代码显示视频。用户可以点击下一个按钮,然后我显示下一个屏幕。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 

HomeViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"home_vc"]; 

[self.navigationController pushViewController:vc animated:YES]; 

当场景完成后,我再次显示主屏幕,用户可以选择下一个场景。

经过几个屏幕我有视频问题。
在我应该看视频的地方,我只能看到一个黑屏。我猜这个问题与内存有关,但我找不到解决方案。

+0

你可能莫名其妙地保留您的控制器。请添加您在控制器中使用的代码。 – rkyr

回答

0

viewDidDisappear通话[avPlayer pause]方法,去除任何观察员和你avPlayeravPlayerLayer refrence设为零

+1

另外,当我添加这个仍然有同样的问题。 – subasa