Почему MPMoviePlayerController работает в симуляторе, а не на устройстве? - PullRequest
2 голосов
/ 11 августа 2010

У меня проблемы с настройкой MPMoviePlayerController для работы на устройстве.Он отлично работает в симуляторе, проигрывая пятисекундное видео и затем отправляя соответствующий обратный вызов (myMovieFinishedCallback:) в контроллер представления.Когда он запускается на устройстве, фильм никогда не появляется, хотя я могу проследить через [player play] без проблем.myMovieFinishedCallback: никогда не вызывается и ошибок нет.Все нужные ресурсы копируются.Есть идеи, что происходит?

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

Обновление: я переключился на использование MPMoviePlayerViewController.На устройстве фильм по-прежнему не воспроизводится, просто крутится колесо прогресса бесконечно.Элементы управления также кратковременно мигают, хотя я установил для проигрывателя MPMovieControlStyleNone - кто-нибудь знает, как я могу это исправить?Фильм занимает пять секунд и около 1,5 МБ, если это имеет какое-либо значение.

Обновление: другие файлы фильмов работают, но я не могу понять, как заставить мою работу работать.Я пробовал это как .mov и .mp4, и настройки кажутся правильными.Любая идея, что заставило бы MPMoviePlayer вечно показывать колесо прогресса только на устройстве?

- (void) playMovie
{
    NSString *url = [[NSBundle mainBundle] 
                     pathForResource:@"myMovie" 
                     ofType:@"mp4"];

MPMoviePlayerViewController *playerViewController = 
[[MPMoviePlayerViewController alloc] 
 initWithContentURL:[NSURL fileURLWithPath:url]];

playerViewController.moviePlayer.controlStyle = MPMovieControlStyleNone;
playerViewController.moviePlayer.scalingMode = MPMovieScalingModeFill;

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

playerViewController.view.frame = movieView.frame;

[movieView addSubview:playerViewController.view];

//---play movie---
MPMoviePlayerController *player = [playerViewController moviePlayer];
[player play];
}   

1 Ответ

5 голосов
/ 12 августа 2010

Ваш код отлично работает для меня, поэтому на ум приходят две возможности (могут быть и другие):

  1. Вы movieView не были правильно инициализированы или для него не был установлен кадр, чтобы он был видимым.
  2. Формат видео, которое вы отображаете, не поддерживается на устройстве.

Я бы попробовал использовать другое видео. Может быть, тот, который вы можете подтвердить, что вы играли на устройстве раньше. Вот небольшой демонстрационный проект, который я создал вместе: http://www.cimgf.com/files/PlayMovie.zip

...