を使って動画を再生していMPMoviePlayerViewController
ます。
MPMovieRepeatModeOne
ビデオがループで再生されるように、リピートモードがあります。
再生されたビデオの繰り返し回数を取得するために使用できる方法はありますか?
を使って動画を再生していMPMoviePlayerViewController
ます。
MPMovieRepeatModeOne
ビデオがループで再生されるように、リピートモードがあります。
再生されたビデオの繰り返し回数を取得するために使用できる方法はありますか?
私の知る限り、MPMoviePlayerPlaybackDidFinishNotification
繰り返しモードでは使用できません。これは、ビデオを繰り返した場合ではなく、ビデオから抜けた場合にのみトリガーされるためです。
繰り返しモードを使用すると、[=> PLAY (前のビデオの終わり)... PAUSED (前のビデオ)... PLAY (新しいビデオの始まり)] の変化のみが検出されます。MPMoviePlayerPlaybackStateDidChangeNotification
しかし、didFinishNotification
ループにはなりません。
一見すると、プレーヤーの以前の状態を保存して、たとえば次のパターンに従う必要があります。
[stateCurrentTime (PLAY)] > (playingDuration - 1 秒) ==> 動画の終わり
[stateCurrentTime (PAUSED)] < 0.5 秒 ==> 前のビデオと新しいビデオの間の遷移状態
[stateCurrentTime (PLAY)] < 1 秒 ==> 新しいビデオの始まり。
...そして、誰かが を使用して方法を見つけることに成功した場合MPMoviePlayerPlaybackDidFinishNotification
、この通知の動作は繰り返しモードと一致しないため、私は間違いなくそれに興味があります。
通知を追加できます。
[[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!");
}
}
}