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.

Author: ROMANIA_engineer, 2009-11-22

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.

 78
Author: Bryan Henry,
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:

Po prostu Poleć ten link

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).

 26
Author: Jimit,
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

 23
Author: hellozimi,
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.

LBYouTubeView

 13
Author: TPoschel,
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

 2
Author: D_D,
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]];
 1
Author: jjxtra,
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

 0
Author: arango_86,
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