Плюсы и минусы MPMoviePlayerController против запуска UIWebView для потоковой передачи фильма - PullRequest
19 голосов
/ 10 июня 2009

У меня есть клиент, у которого есть видео для Интернета в формате Flash. Моя задача - помочь им показать видео в приложении для iPhone.

Я понимаю, что первый шаг - перевести эти видео в соответствующий формат Quicktime для iPhone.

Тогда мне нужно помочь клиенту выяснить, как и где разместить эти файлы. Если это сложно, я предполагаю, что они могут быть размещены на YouTube.

Однако меня больше всего беспокоит, какой подход выбрать для потоковой передачи видео. Каковы плюсы и минусы MPMoviePlayerController по сравнению с запуском UIWebView с URL-адресом потока? Есть ли разница? Один из них более или менее прощающий? Один из них - лучший пользовательский опыт? Есть какие-нибудь ошибки, с которыми я мог бы столкнуться?

Я предполагаю, что на iPhone довольно легко воспроизводить видео. Разумно ли попробовать оба варианта и иметь их в качестве запасного варианта, или это будет пустой тратой времени? Я пытаюсь наметить это немного, поэтому я хотел бы услышать реальный опыт от любого, кто это сделал.

Ответы [ 2 ]

25 голосов
/ 15 октября 2009

РЕДАКТИРОВАТЬ: Мой оригинальный пример в этом ответе инициализировал веб-просмотр с рамкой CGRectZero. Это работало до iOS 3.2. Начиная с iOS 4, веб-просмотр должен иметь ненулевой кадр, иначе видео не будет воспроизводиться. Я отредактировал мой пример ниже, чтобы отразить это изменение.


Принятый ответ здесь не точный. Фактически вы можете использовать UIWebView для потоковой передачи видео, и в некоторых отношениях это лучше, чем MPMoviePlayerController. Если вы скажете UIWebView запросить видеофайл (например, mp4) через loadRequest:, он откроет новое окно и начнет потоковую передачу видео в вашем приложении. В отличие от MPMoviePlayerController, видеоокно, созданное UIWebView, можно повернуть в альбомную или портретную ориентацию. Когда видео заканчивается, пользователь может закрыть это окно и вернуться в ваше приложение.


РЕДАКТИРОВАТЬ 2: Теперь вы можете реализовать видеопроигрыватель, который вращается с использованием MPMoviePlayerViewController, я больше не могу думать о причине использования UIWebView для видео, используя технику, описанную в этом ответе.


Подсказка: поскольку UIWebView создает свое собственное окно для воспроизведения видео, вам даже не нужно добавлять UIWebView в иерархию представлений. Вы можете просто создать объект UIWebView и вызвать loadRequest: для воспроизведения видео, даже не передавая объект в addSubview:.

self.webView = [[[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
NSURL *url = [NSURL URLWithString:@"http://www.jonathancoulton.com/music/thingaweek/CodeMonkey.mp3"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
9 голосов
/ 10 июня 2009

UIWebView не может воспроизводить видео. Переход на страницу Youtube с UIWebview просто запустит приложение Youtube для iPhone. Это определенным образом вернет управление вашему приложению после воспроизведения видео. Смотрите здесь: http://iphoneincubator.com/blog/tag/uiwebview

Я бы рекомендовал использовать контроллер MPMoviePlayer, если вы выполняете только простую потоковую передачу. Вот пример кода, с которого можно начать:

NSString *url = @"http://www.example.com/path/to/movie.mp4";
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc]
                                        initWithContentURL:[NSURL URLWithString:url]];
[moviePlayer play];
...