ビデオをループできるように、再生終了通知を観察しようとしています。
@property (nonatomic, strong) MPMoviePlayerController *moviePlayer;
...
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:theURL];
self.moviePlayer.controlStyle = MPMovieControlStyleNone;
[self.moviePlayer prepareToPlay];
self.moviePlayer.shouldAutoplay = YES;
[[NSNotificationCenter defaultCenter] addObserver: self selector:@selector(moviePlayBackDidFinish:) name: MPMoviePlayerPlaybackStateDidChangeNotification
object: self.moviePlayer];
- (void)moviePlayBackDidFinish:(NSNotification *)note {
if (note.object == self.moviePlayer) {
NSInteger reason = [[note.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
if (reason == MPMovieFinishReasonPlaybackEnded) {
NSLog(@"THIS HAPPENS FOUR TIMES every time the movie ends");
[self.moviePlayer play];
}
}
}
コメントにあるように、動画が終了するたびにこの通知が 4 回届きます。プレーヤーはまだループしますが、4 回再生するように指示しているのは気に入りません。
また、MPMoviePlayerPlaybackStateDidChangeNotification の代わりに MPMoviePlayerPlaybackDidFinishNotification を使用すると、一度だけ通知が届きます。ただし、その場合、ムービーはループしません。これはすべて、以下がまったく機能しないためです。
self.moviePlayer.repeatMode = MPMovieRepeatModeOne;
私の質問は、映画が終了するたびに 4 つの MPMovieFinishReasonPlaybackEnded 通知を受け取るのはなぜですか? また、ビデオをループするより簡単な方法はありますか?