19

Mam klienta, który zawiera treści wideo dla sieci w formacie Flash. Moim zadaniem jest pomóc im pokazać filmy w aplikacji na iPhone'a.Plusy i minusy MPMoviePlayerController porównaniu uruchomienie UIWebView strumień film

Zdaję sobie sprawę, że pierwszy krok jest, aby te filmy do odpowiedniego formatu QuickTime dla iPhone.

Potem będę musiał pomóc postać klienta, jak i gdzie zorganizować te pliki. Jeśli to trudne, zakładam, że mogą być hostowane w YouTube.

Mój szef problemem jest jednak to, które podejście do podjęcia do strumienia wideo. Jakie są plusy i minusy MPMoviePlayerController w porównaniu do uruchamiania UIWebView z adresem URL strumienia? Czy jest jakaś różnica? Czy któryś z nich jest mniej lub bardziej wyrozumiały? Czy jedno z nich jest lepszym rozwiązaniem dla użytkowników? Jakieś gówno, na które mogę się spodziewać?

Jestem zakładając, gry wideo jest dość łatwo na iPhone. Czy rozsądnie jest wypróbować jedno i drugie, czy może to strata czasu? Próbuję trochę to zaplanować, dlatego chciałbym usłyszeć prawdziwe doświadczenia od każdego, kto to zrobił.

Odpowiedz

9

Aplikacja UIWebView nie może odtwarzać filmów wideo. Nawigowanie na stronę YouTube za pomocą interfejsu UIWebview spowoduje po prostu uruchomienie aplikacji YouTube na iPhonie. Wykonanie tego w określony sposób spowoduje przywrócenie kontroli nad aplikacją po odtworzeniu wideo. Zobacz tutaj: http://iphoneincubator.com/blog/tag/uiwebview

Polecam używanie kontrolera MPMoviePlayer, o ile tylko wykonujesz proste przesyłanie strumieniowe. Oto niektóre przykładowy kod, aby dostać się zaczęło:

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

OK. Tak więc moim prawdziwym wyborem jest aplikacja YouTube i MPMoviePlayerController. Dzięki - ten ostatni wybór rzeczywiście wygląda całkiem nieźle. Prawdopodobnie pójdę naprzód i spróbuję obu sposobów. – Nosredna

+0

Dan - Czy możesz edytować odpowiedź, aby dwie linie kodu były sformatowane jako "kod". Przynajmniej dla mnie w Firefoksie 3.5 Widzę linię NSString jako sformatowany kod, ale linia MPMoviePlayerController nie jest. To tylko sugestia, żeby wyglądała lepiej dla następnego faceta. –

25

EDIT: Mój oryginalny przykład w tej odpowiedzi zainicjowaniu webview z ramą CGRectZero. To działało na iOS 3.2. Począwszy od iOS 4, przeglądanie musi mieć niezerową ramkę lub wideo nie będzie odtwarzane. Poniżej edytowałem poniższy przykład, aby odzwierciedlić te zmiany.


Przyjęta tutaj odpowiedź nie jest dokładna. W rzeczywistości możesz używać UIWebView do streamowania filmów, a pod pewnymi względami jest lepszy niż MPMoviePlayerController. Jeśli powiesz UIWebView, aby zażądał pliku wideo (np. Mp4) za pośrednictwem loadRequest :, otworzy on nowe okno i przesyła strumieniowo wideo w Twojej aplikacji. W przeciwieństwie do MPMoviePlayerController, okno wideo utworzone przez UIWebView można obracać do orientacji poziomej lub pionowej. Po zakończeniu filmu użytkownik może zamknąć to okno i powrócić do swojej aplikacji.


EDIT 2: Ponieważ można teraz wdrożyć odtwarzacz wideo, który obraca się za pomocą MPMoviePlayerViewController, już nie mogę wymyślić powód, aby użyć UIWebView filmy z wykorzystaniem techniki opisanej w tej odpowiedzi.


Podpowiedź: Od UIWebView tworzy swoje własne okno, aby odtworzyć film, nie trzeba nawet dodawać UIWebView do widoku hierarchii. Możesz po prostu utworzyć obiekt UIWebView i wywołać metodę loadRequest: aby odtworzyć wideo bez przekazywania obiektu do funkcji 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]; 
+0

Znalazłem za pomocą interfejsu UIWebView najlepszą metodę wyświetlania wideo w orientacji pionowej. Jednak musiałem dodać UIWebView do hierarchii widoku podczas testowania w wersji sim v3.1.3. Mam problem z odtworzeniem pliku .mov, ale otwieram go w odtwarzaczu Quicktime i wykonanie "zapisz jako" dla iPhone'a dało mi użyteczną wersję .m4v. – Jason

+0

Mogę również dodać, że odtwarzacz filmów uruchomiony przez UIWebView nie obsługuje tak wielu formatów wideo jak MPMoviePlayerController. Na przykład filmy zakodowane w formacie JPEG, które są zapisywane w wielu aparatach cyfrowych, są przedstawiane tylko jako przycisk odtwarzania ze skrzyżowaną linią powyżej (wskazującą uszkodzony film). Jest to albo orientacja interfejsu, albo wszystkie formaty wideo. – alleus

+0

@cduhn: Czy możesz potwierdzić ten kod na 4.0? Dostaję "ustawienie ścieżki filmu: (null)" w ten sposób. Chociaż nadal działa w wersji 3.2 - bardzo mylące – scud

Powiązane problemy