1

我正在使用MPMoviePlayerViewController.

我有重复模式,MPMovieRepeatModeOne以便视频可以循环播放。

有什么方法可以用来获取播放视频的重复次数。

4

2 回答 2

1

据我所知,您不能将MPMoviePlayerPlaybackDidFinishNotification与重复模式一起使用,因为只有在您退出视频时才会触发它,而不是在您重复时触发。

如果您使用重复模式,由于MPMoviePlayerPlaybackStateDidChangeNotificationdidFinishNotification不会在循环中。

乍一看,您应该存储播放器以前的状态以遵循这种模式,例如:

  1. [stateCurrentTime (PLAY)] > (playingDuration - 1 sec) ==> 视频结束

  2. [stateCurrentTime (PAUSED)] < 0.5 秒 ==> 旧视频和新视频之间的过渡状态

  3. [stateCurrentTime (PLAY)] < 1 sec ==> 新视频的开头。

...如果有人成功找到使用 的方法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 回答