MPMoviePlayerController останавливается через четыре секунды - PullRequest
8 голосов
/ 20 марта 2012

Я пытаюсь настроить очень простой видеоплеер.(iOS 5.1, Xcode 4.3.1)

-(void)playMedia {
NSString *movieFile = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieFile]];

[moviePlayer prepareToPlay];
moviePlayer.view.frame = self.view.bounds;
moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
moviePlayer.movieSourceType = MPMovieSourceTypeFile;
moviePlayer.fullscreen = YES;
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
[self.view addSubview: moviePlayer.view];

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(playMediaFinished:) 
                                             name:MPMoviePlayerPlaybackDidFinishNotification 
                                           object:moviePlayer];
[moviePlayer play];
}

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

Чего мне не хватает?

Курт


Отредактированная версия воспроизводится нормально.

В файле интерфейса:

@property (nonatomic,strong) MPMoviePlayerController *myMovieController;

В файле .m:

-(void)playMedia {
NSString *movieFile = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieFile]];

[moviePlayer prepareToPlay];
moviePlayer.view.frame = self.view.bounds;
moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
moviePlayer.movieSourceType = MPMovieSourceTypeFile;
moviePlayer.fullscreen = YES;
moviePlayer.controlStyle = MPMovieControlStyleFullscreen;

self.myMovieController = moviePlayer;
[self.view addSubview: self.myMovieController.view];

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(playMediaFinished:) 
                                             name:MPMoviePlayerPlaybackDidFinishNotification 
                                           object:moviePlayer];
[self.myMovieController play];
}

Ответы [ 2 ]

19 голосов
/ 20 марта 2012

Если вы используете ARC, я думаю, вам нужно сохранить внешний проигрыватель moviePlayer. Я только назначил это новой собственности непосредственно. НТН

4 голосов
/ 22 мая 2013

Решение состоит в том, что игрок должен быть переменной экземпляра или свойством контроллера представления.т.е. мы должны использовать экземпляр MPMoviePlayerController

@ property (неатомное, сильное) MPMoviePlayerController * myMovieController;

...