1

を使って動画を再生していMPMoviePlayerViewControllerます。

MPMovieRepeatModeOneビデオがループで再生されるように、リピートモードがあります。

再生されたビデオの繰り返し回数を取得するために使用できる方法はありますか?

4

2 に答える 2

1

私の知る限り、MPMoviePlayerPlaybackDidFinishNotification繰り返しモードでは使用できません。これは、ビデオを繰り返した場合ではなく、ビデオから抜けた場合にのみトリガーされるためです。

繰り返しモードを使用すると、[=> PLAY (前のビデオの終わり)... PAUSED (前のビデオ)... PLAY (新しいビデオの始まり)] の変化のみが検出されます。MPMoviePlayerPlaybackStateDidChangeNotificationしかし、didFinishNotificationループにはなりません。

一見すると、プレーヤーの以前の状態を保存して、たとえば次のパターンに従う必要があります。

  1. [stateCurrentTime (PLAY)] > (playingDuration - 1 秒) ==> 動画の終わり

  2. [stateCurrentTime (PAUSED)] < 0.5 秒 ==> 前のビデオと新しいビデオの間の遷移状態

  3. [stateCurrentTime (PLAY)] < 1 秒 ==> 新しいビデオの始まり。

...そして、誰かが を使用して方法を見つけることに成功した場合MPMoviePlayerPlaybackDidFinishNotification、この通知の動作は繰り返しモードと一致しないため、私は間違いなくそれに興味があります。

于 2014-07-15T15:26:24.623 に答える
1

通知を追加できます。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(introMovieFinished:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:self.moviePlayerController];

次に、この通知を使用して、ビデオがループを終了したことを検出します。

- (void)introMovieFinished:(NSNotification *)notification
{
    if (notification.object == self.moviePlayerController) {
        NSInteger reason = [[notification.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue];
        if (reason == MPMovieFinishReasonPlaybackEnded)
        {
            NSLog(@"Video has looped!");
        }
    }
}
于 2014-07-04T07:26:12.463 に答える