MPMoviePlayerViewController количество повторений
Я играю видео используя MPMoviePlayerViewController
,
У меня есть режим повтора как MPMovieRepeatModeOne
так что видео может воспроизводиться в цикле.
Есть ли способ, который я могу использовать, чтобы получить счетчик повторов проигрываемого видео.
2 ответа
Насколько мне известно, вы не можете использовать 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!");
}
}
}