Узнайте, если MPMoviePlayerController в настоящее время играет - PullRequest
10 голосов
/ 26 апреля 2011

У меня есть одна небольшая проблема, связанная с MPMoviePlayerController, у меня есть ссылка, которая воспроизводит фильм, когда я нажимаю на кнопку этого фильма, однако, когда я нажимаю на другую кнопку, происходит сбой приложения, мне нужно найти способ определить, какой фильм воспроизводится, или получить любой ответ

Ответы [ 6 ]

21 голосов
/ 26 апреля 2011

Чтобы расширить ответ @ Saurabh, вы можете проверить, воспроизводится ли видео по

if(player.playbackState == MPMoviePlaybackStatePlaying)
{
// is Playing
}

, где MPMoviePlaybackState определяется как

enum {
   MPMoviePlaybackStateStopped,
   MPMoviePlaybackStatePlaying,
   MPMoviePlaybackStatePaused,
   MPMoviePlaybackStateInterrupted,
   MPMoviePlaybackStateSeekingForward,
   MPMoviePlaybackStateSeekingBackward
};
typedef NSInteger MPMoviePlaybackState;
5 голосов
/ 26 апреля 2011

Есть две части, обычно используемые в комбинации;

Зарегистрируйтесь для регистрации MPMoviePlayerPlaybackStateDidChangeNotification, например как это:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(MPMoviePlayerPlaybackStateDidChange:) 
                                                 name:MPMoviePlayerPlaybackStateDidChangeNotification 
                                               object:nil];

В обработчике уведомлений вы можете подробно проверить фактическое состояние - например, как это:

- (void)MPMoviePlayerPlaybackStateDidChange:(NSNotification *)notification
{
  //are we currently playing?
  if (movieController_.playbackState == MPMoviePlaybackStatePlaying)
  { //yes->do something as we are playing...
  }
  else 
  { //nope->do something else since we are not playing
  }
}

Вы, конечно, также можете использовать свойство playState, не обрабатывая уведомление о его изменениях. Тем не менее, в большинстве случаев это подходящее место для этого.

При удалении / уничтожении воспроизведения фильма не забудьте удалить обработчик уведомлений, например, как это:

[[NSNotificationCenter defaultCenter] removeObserver:self 
                                                name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:nil];
2 голосов
/ 08 июня 2015

Быстро способ реализации @ ZKV7 ответит:

if(player.playbackState == MPMoviePlaybackState.Playing)
{
  // is Playing
}

, где перечисление MPMoviePlaybackState:

enum MPMoviePlaybackState : Int {
   case Stopped
   case Playing
   case Paused
   case Interrupted
   case SeekingForward
   case SeekingBackward
}

См. apple docs для получения дополнительной информации о контроллере MPMoviePlayerController.

2 голосов
/ 26 апреля 2011

Вы можете проверить playbackState свойство MPMoviePlayerController. Ссылка эта ссылка -

http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html

0 голосов
/ 14 ноября 2017
typedef NS_ENUM(NSInteger, AVPlayerTimeControlStatus) {
    AVPlayerTimeControlStatusPaused,
    AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate,
    AVPlayerTimeControlStatusPlaying
} NS_ENUM_AVAILABLE(10_12, 10_0);


if(self.player.timeControlStatus == AVPlayerTimeControlStatusPlaying)
{
  // is Playing
}
0 голосов
/ 10 мая 2016

чтобы проверить, что видеоплеер находится в состоянии воспроизведения или нет в SWIFT

@IBAction func btnPressPlay(sender: AnyObject) {
        if videoPlayerViewController.moviePlayer.playbackState == MPMoviePlaybackState.Playing
        {
            self.videoPlayerViewController.moviePlayer.stop()
        }
        else {
            self.videoPlayerViewController.moviePlayer.play()
        }
    }
...