0

ビデオをループできるように、再生終了通知を観察しようとしています。

@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 通知を受け取るのはなぜですか? また、ビデオをループするより簡単な方法はありますか?

4

0 に答える 0