Код MPMoviePlayerController воспроизводит видео на iPhone (работает под управлением 4.3), но не на iPodTouch (работает под управлением 4.2)

#iphone #objective-c #xcode

#iPhone #objective-c #xcode

Вопрос:

Я работаю над приложением панели вкладок, которое имеет три вида — один из видов представляет собой табличный вид, строки которого привязаны к видео на нашем сервере.

Я использую класс MPMoviePlayerController, чтобы попытаться их обслуживать. Моя проблема в том, что видео отлично запускается и воспроизводится на моем iPhone, но на моем iPodTouch все, что я получаю, это черный экран — ни элементов управления, ни видео.

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

 NSURL * url = [NSURL URLWithString:@"http://209.85.225.147/AbCoaster.mp4"];
            MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
            [self.view addSubview:moviePlayerController.view];
            moviePlayerController.fullscreen = YES;
            [moviePlayerController play];
  

Есть идеи, почему это отлично работает на одном устройстве, но не на другом?

Заранее спасибо.

Ответ №1:

После беглого взгляда кажется, что это должно сработать (и работает в 4.3). Я быстро поискал в Google MPMoviePlayerController iOS 4.2 и нашел эту ссылку, которая представляет собой журнал изменений для iOS 4.1-4.2.

http://developer.apple.com/library/ios/#releasenotes/General/iOS42APIDiffs/index.html

Если вы прокрутите вниз и посмотрите на изменения в MPMoviePlayerController, вы увидите, что в версии 4.2 Apple удалила метод [MPMoviePlayerController play]. Должно быть, функциональность была добавлена обратно в библиотеку в версии 4.3. Я бы попробовал установить для [MPMoviePlayerController shouldAutoPlay] значение true. Это свойство сообщит о запуске видео, как только в буфере будет достаточно буферизованного видео, чтобы обеспечить непрерывное воспроизведение.

Если это не сработает, возможно, вы не сможете указать автоматическое воспроизведение видео.

Удачи!

Комментарии:

1. Большое спасибо, что указали на CyberKnoy08 — это, безусловно, имеет смысл. Я попытался вызвать метод shouldAutoPlay, как вы предложили, но, похоже, все та же проблема.