2010-08-11 4 views
2

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

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

Update: Я перешел к использованию 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

использование MPMoviePlayerViewController – Daniel

+0

Я переключился на MPMoviePlayerViewController. Еще не повезло. – Luke

ответ

5

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

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

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

+0

Это была большая помощь - ваше видео на американских горках работает. Я попытался возиться с настройками для видео, которое я использую, но все равно не повезло. У кого-то была аналогичная проблема с MPMoviePlayer? – Luke

+0

Предлагаю начать новый вопрос о форматах и ​​MPMoviePlayer. Название этого вопроса не обязательно привлечет внимание людей, которые знают о форматах. Еще одна мысль. Если вы используете iOS 4, вы пробовали использовать классы AVFoundation. AVPlayer и AVPlayerLayer позволяют отображать видео в слое Core Animation. –

+0

Я не в iOS 4, потому что мы на iPad. Могу ли я спросить, как вы сделали этот роллер? Мы пробовали разные конвертеры и до сих пор не повезло. – Luke

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