2011-02-28 14 views
6

Estoy tratando de incrustar videos de youtube en mi aplicación iphone. Estoy usando UIWebView y estoy cargando código de inserción de youtube como cadena html. Así que tengo un diseño con marcado HTML básico y estoy colocando allí este código.Incrustar video de youtube.com en la aplicación iphone

<embed id="yt" src="http://www.youtube.com/watch?v=L9szn1QQfas&fs=0" type="application/x-shockwave-flash" width="%width%" height="%height%"></embed> 

El problema es que el video siempre se abre en el modo de pantalla completa. Cambié la propiedad de mi vista web allowInlineMediaPlayback a YES _webview.allowsInlineMediaPlayback = YES; pero tampoco funciona. ¿Hay alguna manera de reproducir videos desde youtube sin pantalla completa?

También me trataron de incorporar como esto

<iframe title="YouTube video player" id="videoframe" width="%width%" height="%height%" src="http://www.youtube.com/embed/L9szn1QQfas?rel=0" frameborder="0"></iframe> 

y esto

<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/L9szn1QQfas" width="%width%" height="%height%"> 
<param name="movie" value="http://www.youtube.com/v/L9szn1QQfas" /> 
<param name="quality" value="high" /> 
<param name="allowFullScreen" value="false" /> 
<embed id="yt" src="http://www.youtube.com/v/L9szn1QQfas" type="application/x-shockwave-flash" width="%width%" height="%height%"></embed> 
</object> 

Gracias.

Respuesta

10

Hasta donde yo sé, la reproducción de medios en línea solo se admite en el iPad, no en el iPhone. Esto se debería a las limitaciones de tamaño de las pantallas.

Editar: IOS

[webView setAllowsInlineMediaPlayback:YES]; 
[webView loadHTMLString:@"<embed id=\"yt\" src=\"http://www.youtube.com/watch?v=L9szn1QQfas&fs=0\" type=\"application/x-shockwave-flash\" width=\"300\" height=\"300\"></embed>" 
        baseURL:nil]; 

que corrieron el mismo código exacto en tanto un iPhone y un iPad, tanto en ejecución 4.2.1:

I fijó un proyecto de prueba, con un UIWebView y el código .

El resultado fue que el iPhone solo reproducía el video en modo de pantalla completa, independientemente de establecer la reproducción de medios en línea en YES y el iPad reproducía el video en línea. Aquí hay una foto:

enter image description here

+0

Gracias por su respuesta. Lo he pensado, pero no encontré tal información en la documentación oficial. Solo hay una nota sobre el parámetro allowsInlineMediaPlayback que está establecido en NO de forma predeterminada en el iphone. –

+2

Sí, tienes razón, por lo que podría estar equivocado. Sí, recuerdo que se dijo que cuando se lanzó el iPad, la reproducción en línea solo se admitiría en el iPad ... eso puede haber cambiado con el lanzamiento del iPhone 4, la pantalla retina y iOS 4. Voy a acelerar un proyecto de prueba para ver. – Jasarien

+0

Eso sería genial. Gracias. He probado mi aplicación en el iphone 4 sin éxito. El video se reproduce en modo de pantalla completa después de tocar. –

4

Play YouTube vídeos en línea en el iPhone también. Es necesario establecer la propiedad de UIWebView

webView.allowsInlineMediaPlayaback=YES; 

Y es necesario agregar & playsinline = 1 a YouTube incrustación de código iframe.

<iframe webkit-playsinline width=\"200\" height=\"200\" src=\"https://www.youtube.com/embed/GOiIxqcbzyM?feature=player_detailpage&playsinline=1\" frameborder=\"0\"></iframe> 

Probado en iPhone 4S con iOS 6.1.2 funciona como un encanto.

+0

¿Podría publicar el código completo? De alguna manera, esto no funciona para mí en iOS7 – Cutetare

10

Ahora hay un parámetro no documentado "playsinline". Lo probé en el iPhone 4S (iOS 6.1.2).

player = new YT.Player('player', { 
    height: '390', 
    width: '640', 
    videoId: 'u1zgFlCw8Aw', 
    playerVars: { 
     'playsinline': 1 
    } 
}); 

Y también debe configurar la vista web.

[webView setAllowsInlineMediaPlayback:YES]; 
+0

Parece oficialmente documentado por Google por lo que he visto. Esta respuesta resolverá la pregunta original. –

+0

@MarcCharbonneau Solo está "documentado" [aquí] (https://code.google.com/p/gdata-issues/issues/detail?id=3007#c2) por un miembro del proyecto de gdata. – iForests

5

Si alguien todavía se enfrenta a este problema, a continuación es de lejos la mejor solución que he visto.Funciona como un encanto

 self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(10, 10,300, 200)]; 
     [self.webView setAllowsInlineMediaPlayback:YES]; 
     [self.webView setMediaPlaybackRequiresUserAction:NO]; 

     [self.view addSubview:self.webView]; 

     NSString* embedHTML = [NSString stringWithFormat:@"\ 
           <html>\ 
            <body style='margin:0px;padding:0px;'>\ 
             <script type='text/javascript' src='http://www.youtube.com/iframe_api'></script>\ 
             <script type='text/javascript'>\ 
              function onYouTubeIframeAPIReady()\ 
              {\ 
               ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})\ 
              }\ 
              function onPlayerReady(a)\ 
              { \ 
               a.target.playVideo(); \ 
              }\ 
             </script>\ 
             <iframe id='playerId' type='text/html' width='%d' height='%d' src='http://www.youtube.com/embed/%@?enablejsapi=1&rel=0&playsinline=1&autoplay=1' frameborder='0'>\ 
            </body>\ 
           </html>", 300, 200, @"JW5meKfy3fY"]; 
     [self.webView loadHTMLString:embedHTML baseURL:[[NSBundle mainBundle] resourceURL]]; 

Fuente: https://code.google.com/p/gdata-issues/issues/detail?id=5204

+0

Esto debe marcarse como respuesta aceptada. Probado IOS7. Lo único que sugeriría es crear la vista web en el storyboard y establecer las propiedades setAllowsInlineMediaPlayback = YES y setMediaPlaybackRequiresUserAction = NO en el inspector de atributos. –

+0

Creo que enablejsapi = 0 en lugar de enablejsapi = 1 .... –

+0

¿me pueden guiar si estoy agregando url de una matriz, cómo puedo lograr esto? – Shivaay

2

Si está desarrollando su aplicación para iOS versión 7 o superior, puede utilizar YTPlayerView clase esté disponible en Embed YouTube Videos in iOS Applications with the YouTube Helper Library. Es muy fácil de usar y también proporciona un control total del reproductor de video mediante el uso de su delegado YTPlayerViewDelegate. Espero que esto pueda ayudar a cualquiera.

Cuestiones relacionadas