MPMoviePlayerViewController количество повторений

Я играю видео используя MPMoviePlayerViewController,

У меня есть режим повтора как MPMovieRepeatModeOne так что видео может воспроизводиться в цикле.

Есть ли способ, который я могу использовать, чтобы получить счетчик повторов проигрываемого видео.

2 ответа

Насколько мне известно, вы не можете использовать MPMoviePlayerPlaybackDidFinishNotification с режимом повтора, потому что он будет срабатывать, только если вы выходите из видео, а не если вы повторяете его.

Если вы используете режим повтора, у вас будет только изменение состояния [=> PLAY (конец предыдущего видео)... PAUSED (прежнее видео)... PLAY (начало нового видео)], обнаруженное благодаря MPMoviePlayerPlaybackStateDidChangeNotification но didFinishNotification не будет в курсе.

На первый взгляд, вы должны сохранить предыдущие состояния игрока, например, следуя этой схеме:

  1. [stateCurrentTime (PLAY)]> (PlayingDuration - 1 сек.) ==> конец вашего видео

  2. [stateCurrentTime (PAUSED)] < 0,5 сек ==> переходное состояние между прежним и новым видео

  3. [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!");
        }
    }
}
Другие вопросы по тегам