web-dev-qa-db-fra.com

Lisez des vidéos YouTube avec MPMoviePlayerController au lieu de UIWebView

J'essaie de diffuser certaines vidéos YouTube à l'aide de MPMoviePlayerController, mais j'ai des problèmes. Le code que j'utilise est assez simple et je peux lire des vidéos .m4v en transmettant une URL à initWithContentURL. Lorsque je lance le lecteur de film, celui-ci apparaît mais disparaît au bout de 20 secondes environ. Lorsque j'essaie dans le simulateur, un affichage d'alerte indique que le serveur n'est pas configuré correctement. Dois-je passer un argument avec l'URL pour obtenir un type spécifique de flux vidéo à partir de 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];

J'ai également essayé les URL suivantes http://www.youtube.com/watch?v=HGd9qAfpZio

J'ai aussi vu l'argument & format = 1 et j'ai essayé de l'ajouter à la fin des deux chaînes mais sans succès.

87
jmurphy

La seule façon de lire une vidéo youtube dans votre propre application est de créer une variable UIWebView avec la balise incorporée de Youtube pour le film que vous souhaitez lire en tant que contenu UIWebView's. UIWebView détectera que l'objet incorporé est un lien Youtube et le contenu de la vue Web sera l'aperçu youtube de la vidéo. Lorsque votre utilisateur clique sur l'aperçu, la vidéo apparaît dans un MPMoviePlayerController. C'est la technique décrite sur le lien fourni par Muxecoid ( comment lire des vidéos youtube dans une application ), et c'est (à ma connaissance) le seul moyen de lire une vidéo youtube dans une application. Vous pouvez toujours lancer l'application Youtube en passant l'URL youtube à -[UIApplication openURL:], mais bien sûr, cela ferme votre propre application, ce qui est souvent indésirable.

Malheureusement, il n’ya aucun moyen de lire directement une vidéo youtube avec MPMoviePlayerController car youtube n’expose pas de liens directs vers les fichiers vidéo.

78
Bryan Henry

Si vous utilisez Code:

- (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];  
  }

La source:

Il suffit de renvoyer ce lien

Assurez-vous de le tester sur l'appareil et non sur le simulateur. Comme le simulateur affichera toujours un point d’interrogation avec la boîte bleue (il n’a pas de lecteur Quick-Time).

26
Jimit

Comme je l'ai écrit plus haut dans mon commentaire, je devais le faire dans le cadre d'un projet sur lequel je travaillais. J'ai résolu ce problème et soumis le code sur github.

Vous pouvez vérifier la source et la bifurquer ici .

Fondamentalement, il faut une URL youtube et obtient toutes les URL de vidéos compatibles iOS.

J'espère que c'est pour vous aider!
À votre santé

23
hellozimi

Je suis tombé sur quelqu'un qui a pu placer une vidéo YouTube dans une MPMoviePlayerController. Cela semble possible maintenant.

LBYouTubeView

13
TPoschel

Pour lire vos vidéos sur le tube, vous devez extraire l’URL avant de la passer à MPMoviePlayer. Vous ne pouvez pas y jouer directement.

Mon repo github a une implémentation de démonstration de cela.

Voir:

https://github.com/DpzAtMicRO/IOSYoutubePlayer

Essayez-le, cela permet de charger et de lire une vidéo youtube directement dans MPMoviePlayer comme n'importe quelle autre vidéo et constitue également une bonne approche. 

EDIT: assurez-vous de lire attentivement le fichier Readme.md avant de l’utiliser dans votre projet

2
D_D

C'est aussi simple que de prendre l'élément src de l'iframe pour le nouveau code d'intégration et d'appeler 

[self.webView loadRequest:[NSURLRequest requestWithURL:self.url]];
1
jjxtra

Il existe un moyen officiel d'intégrer la vidéo YouTube dans l'application iOS fournie par Google.

Installez la bibliothèque via cocoapods: pod "youtube-ios-player-helper"

importer par: #import “YTPlayerView.h” Utilisez UIView et définissez la classe sur YTPlayerView ou créez un objet de YTPlayerView par programme.

Charger la vidéo: [self.playerView loadWithVideoId:@"M7lc1UVf-VE"];

Il existe également des méthodes playVideo et stopVideo disponibles. Pour plus d'informations, visitez ce lien

0
Ganpat

Vérifiez le lien suivant. Je pense que cela vous aidera.

https://mobiletechfeast.blogspot.in/2014/08/youtube-player-for-ios.html

0
arango_86