2016-08-05 18 views
1

私はプレゼンテーションのために行内にUIViewControllerをほとんど使用していません。これらの画面のすべてで、私はビデオを再生する必要があります。
これは私がビデオを再生するためにそれらの画面のすべての上使用していますコードです: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

にごavPlayeravPlayerLayer refrenceを設定します。コントローラで使用するコードを追加してください。 – rkyr

答えて

0

viewDidDisappearコール[avPlayer pause]方法では、任意のオブザーバーを削除し、あなたはおそらく何らかの形であなたのコントローラを保持しているゼロ

+1

また、これを追加するときにも同じ問題があります。 – subasa