Odtwarzaj filmy z YouTube za pomocą MPMoviePlayerController zamiast UIWebView
Próbuję streamować niektóre filmy z youTube za pomocą MPMoviePlayerController, ale mam pewne problemy. Kod, którego używam jest dość prosty i mogę grać .filmy m4v przekazując adres URL do initWithContentURL. Po uruchomieniu odtwarzacza filmu pojawia się odtwarzacz, ale po prostu odchodzi po około 20 sekundach. Kiedy próbuję go w symulatorze, dostaję widok alertu, który mówi, że serwer nie jest poprawnie skonfigurowany. Czy jest argument, który muszę przekazać z adresem URL, aby uzyskać określony typ wideo feed 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];
Próbowałem również następujących adresów 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 łańcuchów, ale bez powodzenia.
7 answers
Jedynym sposobem na odtwarzanie wideo z youtube wewnątrz własnej aplikacji jest utworzenie UIWebView
z tagiem osadzania z Youtube dla filmu, który chcesz odtworzyć jako zawartość UIWebView's
. UIWebView
wykryje, że osadzony obiekt jest linkiem do Youtube, a zawartość widoku internetowego będzie podglądem wideo w youtube. Gdy użytkownik kliknie podgląd, wideo zostanie wyświetlone w kontrolerze MPMoviePlayerController. Jest to technika opisana pod linkiem podanym przez Muxecoid ( Jak odtwarzać filmy z youtube w aplikacji), i jest to (o ile mi wiadomo) jedyny sposób, aby mieć odtwarzanie wideo youtube w aplikacji. Nadal możesz uruchomić aplikację Youtube, przekazując adres URL youtube do -[UIApplication openURL:]
, ale oczywiście zamyka to twoją własną aplikację, co często jest niepożądane.
Niestety, nie ma możliwości bezpośredniego odtwarzania wideo z youtube za pomocą MPMoviePlayerController
, ponieważ youtube nie udostępnia bezpośrednich linków do plików wideo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-11 11:52:25
Jeśli używasz Kod:
- (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:
Upewnij się, że testujesz go na urządzeniu, a nie na symulatorze. Ponieważ symulator zawsze wyświetli znak zapytania z Niebieskim polem (nie ma szybkiego odtwarzacza).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-11 20:29:25
Jak pisałem powyżej w 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 .
W zasadzie pobiera adres URL youtube i pobiera wszystkie adresy URL filmów kompatybilnych z iOS.
Mam nadzieję, że to jakaś pomoc!
Cheers
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-08 11:42:12
Właśnie natknąłem się na kogoś, kto był w stanie umieścić YouTube
wideo wewnątrz MPMoviePlayerController
. Teraz wydaje się to możliwe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-11 11:59:34
Aby odtwarzać filmy you tube, musisz wyodrębnić adres url przed przekazaniem go do MPMoviePlayer
. Nie możesz grać bezpośrednio.
Mój github repo ma implementację demo tego.
Zobacz:
Https://github.com/DpzAtMicRO/IOSYoutubePlayer
Spróbuj, to sprawia, że można załadować i odtworzyć wideo youtube bezpośrednio w MPMoviePlayer
jak każdy inny film i jest całkiem dobre podejście też.
EDIT: upewnij się, że przejdziesz przez Readme.md dobrze przed użyciem tego w Twoim projekcie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-05 13:07:54
To tak proste, jak pobranie elementu src iframe dla nowego kodu embed i wywołanie
[self.webView loadRequest:[NSURLRequest requestWithURL:self.url]];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-21 15:49:01
Sprawdź poniższy link. Myślę, że to ci pomoże.
Https://mobiletechfeast.blogspot.in/2014/08/youtube-player-for-ios.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-17 06:15:24