У меня есть одна небольшая проблема с MPMoviePlayerController, у меня есть ссылка, которая воспроизводит фильм, когда я нажимаю на эту кнопку, однако, когда я нажимаю на другую кнопку, приложение терпит крах, мне нужно найти, как определить, что фильм играет или получение какого-либо ответа
Узнайте, играет ли сейчас MPMoviePlayerController
Ответ 1
Чтобы расширить ответ на @Saurabh, вы можете проверить, воспроизводится ли видео с помощью
if(player.playbackState == MPMoviePlaybackStatePlaying)
{
// is Playing
}
где MPMoviePlaybackState
определяется как
enum {
MPMoviePlaybackStateStopped,
MPMoviePlaybackStatePlaying,
MPMoviePlaybackStatePaused,
MPMoviePlaybackStateInterrupted,
MPMoviePlaybackStateSeekingForward,
MPMoviePlaybackStateSeekingBackward
};
typedef NSInteger MPMoviePlaybackState;
Ответ 2
Есть две части, обычно используемые в комбинации;
Зарегистрировать для 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
}
}
Вы также можете использовать свойство playbackState без обработки уведомления, которое сигнализирует об изменениях. Тем не менее, в большинстве случаев это подходящее место для этого.
При удалении/убийстве воспроизведения фильма не забудьте удалить обработчик уведомлений, например. например:
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
Ответ 3
Вы можете проверить свойство playbackState
свойства MPMoviePlayerController. Ссылка на эту ссылку -
Ответ 4
В быстром способе реализовать ответ @ZKV7:
if(player.playbackState == MPMoviePlaybackState.Playing)
{
// is Playing
}
где перечисление MPMoviePlaybackState
:
enum MPMoviePlaybackState : Int {
case Stopped
case Playing
case Paused
case Interrupted
case SeekingForward
case SeekingBackward
}
Подробнее о MPMoviePlayerController см. apple docs.
Ответ 5
, чтобы проверить, что видеопроигрыватель находится в состоянии воспроизведения или нет в SWIFT
@IBAction func btnPressPlay(sender: AnyObject) {
if videoPlayerViewController.moviePlayer.playbackState == MPMoviePlaybackState.Playing
{
self.videoPlayerViewController.moviePlayer.stop()
}
else {
self.videoPlayerViewController.moviePlayer.play()
}
}
Ответ 6
typedef NS_ENUM(NSInteger, AVPlayerTimeControlStatus) {
AVPlayerTimeControlStatusPaused,
AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate,
AVPlayerTimeControlStatusPlaying
} NS_ENUM_AVAILABLE(10_12, 10_0);
if(self.player.timeControlStatus == AVPlayerTimeControlStatusPlaying)
{
// is Playing
}