2012-05-07 3 views
0

Кажется, что у меня проблема с repeatmodeone: он не повторяет видео.Режим повторения MPMoviePlayerController не работает в viewDidLoad

Это код для видео, которое я имею в реализации:

- (void)viewDidLoad{ 

    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Space Particle" ofType:@"mp4"]]; 


    MPMoviePlayerViewController *playerController = [[MPMoviePlayerViewController alloc]initWithContentURL:url]; 
    [self presentMoviePlayerViewControllerAnimated:playerController]; 
    [playerController.moviePlayer prepareToPlay]; 
    playerController.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
    playerController.moviePlayer.controlStyle = MPMovieControlStyleNone; 
    playerController.moviePlayer.scalingMode = MPMovieScalingModeAspectFill; 
    playerController.moviePlayer.repeatMode = MPMovieRepeatModeOne; 
    [MyView1 addSubview: playerController.view]; 


    [playerController.moviePlayer play]; 
    [playerController release];playerController=nil; 
} 

Он работает как анимированный фон с кнопками над ним. Видео воспроизводится, но когда оно заканчивается, оно не повторяется.

Я узнал, что, как IbAction, он повторяется, но как viewDidLoad это не так.

Обратите внимание, что розетка MyView соединена с пользовательской UIButton, и она находится в виде кнопки, где воспроизводится фильм.

Видео, которые я использую, невелики по размеру.

Моей целью является то, что фильм должен повторяться с использованием метода viewdidload для автоматического воспроизведения и повтора.

Пожалуйста, есть что-нибудь, что я делаю неправильно? Предложения о том, как его решить? Любая помощь будет оценена по достоинству.

+0

Для решения вы можете взглянуть на мой ответ для этого типа того же вопроса [здесь] (http://stackoverflow.com/a/18710826/2695503) –

ответ

0

Тот же выпуск. Я решил его следующие шаги: 1) Подписаться на уведомления конца воспроизведения

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackDidFinished:) 
               name:MPMoviePlayerPlaybackDidFinishNotification 
               object:self.moviePlayer]; 

2) Начать воспроизведение вручную moviePlayBackDidFinished метода

+0

Я действительно очень ценю вашу помощь очень. – miqueas1234567

+0

Но мне нужно видео в цикл (повторите автоматически после его завершения) – miqueas1234567

+0

Также я не знаю, как этот код будет использоваться – miqueas1234567

6

Попробуйте следующий код. Это прекрасно работает.

NSURL *fileUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Video" ofType:@"mp4"]]; 
    MPMoviePlayerViewController *moviePlayerController = [[MPMoviePlayerViewController alloc]initWithContentURL:fileUrl]; 
    [moviePlayerController.moviePlayer prepareToPlay]; 
    [moviePlayerController.moviePlayer setRepeatMode:MPMovieRepeatModeOne]; 
    [moviePlayerController.moviePlayer setControlStyle:MPMovieControlStyleEmbedded]; 
    [self.view addSubview:moviePlayerController.view]; 
2

Он был удален ARC после завершения функции viewDidLoad. Вы должны держать экземпляр MPMoviePlayerController в качестве члена класса. NSNotification также решает проблему, потому что она сохраняет объект. Создание переменной экземпляра сделает решение для уведомлений излишним.

+0

Спасибо! Я все время искал ответа. –

Смежные вопросы