2014-01-24 2 views
0

У меня проблема с 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, но каждый раз, когда я получаю такое же странное поведение. Есть идеи?

+0

@ Сальмо «дублированные» линии, которые вы удалили, фактически были предназначены, поскольку некоторые из уведомлений поступают несколько раз. В списке показывались все уведомления, которые я получаю, в том порядке, в котором я их получаю. Возможно, я должен был использовать пронумерованный список ... Можете ли вы, пожалуйста, отменить свои изменения? – Mariano

ответ

0

Моя проблема в конечном итоге быть абсолютно не связаны с симптомами ...

Это, кажется, какое-то ошибка с Crittercism работает на прошивке 7. При просмотре в сообщение отладки в нашей консоли ("(webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return after waiting 10 seconds") мы пришли по этому вопросу: iOS 7 UIWebView not rendering, что предполагает установку обновленной версии Crittercism. После этого наша проблема с воспроизведением видео кажется исправленной.

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