MPMoviePlayerViewController неожиданно завершает работу

Я пытаюсь воспроизвести видео с моего сервера на устройстве iPhone. Я использую для этого следующий метод, однако он работает только в симуляторе; и на моем iPhone 4. Не работает на iPhone 3G?

Если я вызову этот метод на iPhone 3G, он откроет модальный экран видео, начнет загружать видео, а затем резко закроет модальный экран. Ошибки в консоли не отображаются.

На iPhone 3G установлена ​​версия 4.0. Мой iPhone 4 имеет версию 4.1.

Кто-нибудь еще испытал это?

-(IBAction)playMedia{

NSString* url = [self.data objectForKey:@"url"];    

//initialize the movie player
self.moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:url]];

//show a background image while the user waits
moviePlayerViewController.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
moviePlayerViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;


//show the movie
[self presentMoviePlayerViewControllerAnimated:moviePlayerViewController];

[moviePlayerViewController release];

}

person Chadams    schedule 13.09.2010    source источник
comment
Можете ли вы заставить iPhone 3G с iOS 4 воспроизводить удаленное видео через другие приложения? У нескольких человек (включая меня) было много проблем с запуском iOS 4 на устройстве 3G. Если у вас проблемы со стабильностью в других приложениях, попробуйте перезагрузить устройство и повторить попытку?   -  person pix0r    schedule 14.09.2010


Ответы (2)


Хорошо, я получил видео для работы как на iPhone 4, так и на iPhone 3G. В основном проблема была в формате файла. Я воспроизводил файл .mov. Когда я изменил формат на .mp4, теперь он работает на обоих устройствах. Никаких изменений в коде.

Надеюсь, это поможет другим с той же проблемой.

person Chadams    schedule 15.09.2010
comment
Я изменил его на файл .m4v с помощью Quicktime, и он работал хорошо. Откройте видео в QT10, нажмите «Файл» -> «Сохранить как» и выберите iPhone для вывода. Затем измените код, чтобы отразить изменение расширения. Работал как шарм! - person Adrian Sarli; 12.05.2011

Я бы сделал вышеописанное немного по-другому:

-(IBAction)playMedia{ 

NSString* url = [self.data objectForKey:@"url"];     

//initialize the movie player 

MPMoviePlayerViewController *tmpPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:url]];
self.moviePlayerViewController = tmpPlayer; 

//show a background image while the user waits 
UIColor *tmpColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]];
self.moviePlayerViewController.view.backgroundColor = tmpColor;

self.moviePlayerViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile; 

//show the movie 
[self presentMoviePlayerViewControllerAnimated:self.moviePlayerViewController]; 

[tmpPlayer release]; 
[tmpColor release];
}
person No one in particular    schedule 13.09.2010