У меня не получается заставить 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];
}