Próbuję przesyłać strumieniowo niektóre filmy z YouTube za pomocą MPMoviePlayerController, ale mam pewne problemy. Kod, którego używam, jest dość prosty i mogę odtwarzać filmy .m4v, przekazując adres URL do initWithContentURL. Kiedy uruchamiam odtwarzacz filmów, odtwarzacz pojawia się, ale po około 20 sekundach znika. Kiedy próbuję to w symulatorze, pojawia się widok alertu, który mówi, że serwer nie jest poprawnie skonfigurowany. Czy jest jakiś argument, który muszę przekazać z adresem URL, aby pobrać określony typ kanału wideo z Google?
NSURL *videoURL = [NSURL URLWithString:@"http://www.youtube.com/v/HGd9qAfpZio&hl=en_US&fs=1&"];
MPMoviePlayerController *moviePlayer;
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
[moviePlayer play];
Wypróbowałem również następujący adres URL http://www.youtube.com/watch?v=HGd9qAfpZio
Widziałem również argument & format = 1 i próbowałem dodać go na końcu obu ciągów, ale bez powodzenia.
Odpowiedzi:
Jedynym sposobem na odtworzenie wideo z YouTube we własnej aplikacji jest utworzenie
UIWebView
z tagiem embed z YouTube filmu, który chcesz odtworzyć jakoUIWebView's
zawartość.UIWebView
wykryje, że osadzony obiekt to link do YouTube, a zawartość widoku internetowego będzie podglądem wideo w YouTube. Gdy użytkownik kliknie podgląd, wideo zostanie wyświetlone w MPMoviePlayerController. Jest to technika opisana pod linkiem, który udostępnił Muxecoid ( jak odtwarzać filmy z YouTube'a w aplikacji ) i jest to (o ile wiem) jedyny sposób na odtwarzanie wideo z YouTube w aplikacji. Nadal możesz uruchomić aplikację YouTube, przekazując adres URL YouTube do-[UIApplication openURL:]
, ale oczywiście powoduje to zamknięcie własnej aplikacji, co często jest niepożądane.Niestety nie ma możliwości bezpośredniego odtwarzania wideo z
MPMoviePlayerController
YouTube, ponieważ youtube nie ujawnia bezpośrednich linków do plików wideo.źródło
Jeśli używasz kodu:
- (void)embedYouTube:(NSString*)url frame:(CGRect)frame { NSString* embedHTML = @"\ <html><head>\ <style type=\"text/css\">\ body {\ background-color: transparent;\ color: white;\ }\ </style>\ </head><body style=\"margin:0\">\ <embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \ width=\"%0.0f\" height=\"%0.0f\"></embed>\ </body></html>"; NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height]; if(videoView == nil) { videoView = [[UIWebView alloc] initWithFrame:frame]; [self.view addSubview:videoView]; } [videoView loadHTMLString:html baseURL:nil]; }
Źródło:
Po prostu odeślij ten link
Upewnij się, że testujesz to na urządzeniu, a nie na symulatorze. Ponieważ symulator zawsze będzie wyświetlał znak zapytania z niebieskim pudełkiem (nie ma odtwarzacza quick time).
źródło
Jak napisałem powyżej w swoim komentarzu, musiałem to zrobić w projekcie, nad którym pracowałem. Rozwiązałem ten problem i przesłałem kod na github.
Możesz sprawdzić źródło i rozwidlić je tutaj .
Zasadniczo pobiera adres URL YouTube i pobiera wszystkie adresy URL wideo zgodne z iOS.
Mam nadzieję, że to pomoże!
Twoje zdrowie
źródło
Właśnie natknąłem się na kogoś, kto był w stanie umieścić
YouTube
wideo w plikuMPMoviePlayerController
. Obecnie wydaje się to możliwe.LBYouTubeView
źródło
Aby odtwarzać filmy z tuby, musisz wyodrębnić adres URL przed przekazaniem go do
MPMoviePlayer
. Nie możesz grać bezpośrednio.Moje repozytorium github ma wersję demonstracyjną tego.
Widzieć:
https://github.com/DpzAtMicRO/IOSYoutubePlayer
Wypróbuj, to umożliwia ładowanie i odtwarzanie wideo z YouTube bezpośrednio,
MPMoviePlayer
jak każdy inny film i jest również całkiem dobrym podejściem.EDYCJA: Upewnij się, że dobrze przeczytałeś plik Readme.md, zanim użyjesz go w swoim projekcie
źródło
Jest to tak proste, jak pobranie elementu src elementu iframe dla nowego kodu osadzania i wywołanie
[self.webView loadRequest:[NSURLRequest requestWithURL:self.url]];
źródło
Sprawdź poniższy link. Myślę, że to ci pomoże.
https://mobiletechfeast.blogspot.in/2014/08/youtube-player-for-ios.html
źródło
Istnieje oficjalny sposób osadzania filmów z YouTube'a w aplikacji na iOS dostarczanej przez Google.
Zainstaluj bibliotekę przez cocoapods: pod "youtube-ios-player-helper"
import przez:
#import “YTPlayerView.h”
UżyjUIView
i ustaw klasęYTPlayerView
lub utwórz obiektYTPlayerView
programowo.Załaduj wideo:
[self.playerView loadWithVideoId:@"M7lc1UVf-VE"];
Jest też
playVideo
istopVideo
metody dostępne. Aby uzyskać więcej informacji, odwiedź ten linkźródło