У меня проблема с MPMoviePlayerController на iOS, иногда воспроизводящее видео (загруженное из локального файла), а иногда просто терпящее молчание. тот же самый видеоролик, запущенный в начале приложения так же, как и каждый раз. Когда он терпит неудачу, он никоим образом не уведомляет меня, я просто вижу черный экран.MPMoviePlayerController случайно не воспроизводит фильм
Вот код, я использую для воспроизведения видео (это игра, основанная cocos2d-х и я придаю контроллер фильма игрок, как ребенок в EAGLView):
- (void)playVideo:(NSString*)filePath
{
NSURL* url = [NSURL fileURLWithPath:filePath];
_moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
EAGLView* view = [EAGLView sharedEGLView];
_moviePlayerController.view.frame = view.bounds;
_moviePlayerController.movieSourceType = MPMovieSourceTypeFile;
_moviePlayerController.fullscreen = YES;
_moviePlayerController.controlStyle = MPMovieControlStyleNone;
_moviePlayerController.shouldAutoplay = NO;
[view addSubview:_moviePlayerController.view];
[_moviePlayerController prepareToPlay];
}
- (void)videoFinished:(NSNotification*)notification
{
[_moviePlayerController.view removeFromSuperview];
[_moviePlayerController release];
}
- (void)videoLoadStateChanged:(NSNotification*)notification
{
if ((_moviePlayerController.loadState & MPMovieLoadStatePlayable) != 0)
{
[_moviePlayerController play];
}
}
Когда воспроизведение терпит неудачу , я получаю следующие уведомления:
MPMoviePlayerNowPlayingMovieDidChangeNotification
MPMovieSourceTypeAvailableNotification
И ничего больше. Когда воспроизведение работает, я получаю это:
MPMoviePlayerNowPlayingMovieDidChangeNotification
MPMovieSourceTypeAvailableNotification
(до здесь, так же, как когда он терпит неудачу)MPMovieMediaTypesAvailableNotification
MPMovieMediaTypesAvailableNotification
MPMovieDurationAvailableNotification
MPMoviePlayerLoadStateDidChangeNotification
MPMoviePlayerLoadStateDidChangeNotification
MPMoviePlayerPlaybackStateDidChangeNotification
MPMovieNaturalSizeAvailableNotification
MPMoviePlayerReadyForDisplayDidChangeNotification
MPMoviePlayerPlaybackStateDidChangeNotification
MPMoviePlayerPlaybackDidFinishNotification
Я попробовал несколько различных вариантов, в том числе с использованием MPMoviePlayerViewController, но каждый раз, когда я получаю такое же странное поведение. Есть идеи?
@ Сальмо «дублированные» линии, которые вы удалили, фактически были предназначены, поскольку некоторые из уведомлений поступают несколько раз. В списке показывались все уведомления, которые я получаю, в том порядке, в котором я их получаю. Возможно, я должен был использовать пронумерованный список ... Можете ли вы, пожалуйста, отменить свои изменения? – Mariano