YouTube Iframe no pudo cargar en Android -- android campo con youtube-api campo con youtube-javascript-api camp Relacionados El problema

Youtube iframe failed to load in Android


1
vote

problema

Español

Estoy tratando de jugar videos de YouTube en dispositivos Android usando WebView y YouTube Iframe API. Mientras pruebe los mismos en 4.2 dispositivos, funcionó en 4.2.2 Nexus 4. Pero cuando lo intenté en Sony Xpedia L, está mostrando el estado de búfer, pero el video nunca se carga (capturas de pantalla conectadas). ¿Qué podría ser una solución para esto? Cualquier sugerencia ...?!?!

al hacer clic en el botón de reproducción

cuando intenta buscar / saltar a un punto usando javascript

Mi código es el siguiente ...

código java

  self.tkimage = ImageTk.PhotoImage(image=img)2  

xml

  self.tkimage = ImageTk.PhotoImage(image=img)3  

html

  self.tkimage = ImageTk.PhotoImage(image=img)4  
Original en ingles

I am trying to play YouTube Videos on android devices using webview and youtube iframe api. While testing the same on 4.2 devices, it did work on 4.2.2 Nexus 4. But when I tried it on Sony Xpedia L, its showing the buffering status, but the video never gets loaded (Screen Shots attached). What could be a fix for this? Any suggestions...?!?!

When Clicking on Play Button

When trying to seek/jump to a point using Javascript

My code is as follows..

JAVA CODE

wvVideo = (WebView)findViewById(R.id.wvVideo); wvVideo.setWebChromeClient(new WebChromeClient()); WebSettings webSettings = wvVideo.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setMediaPlaybackRequiresUserGesture(false); wvVideo.addJavascriptInterface(new WebAppInterface(this), "Android"); wvVideo.loadUrl("http://test.com/iframeYouTube.html?videoid="+videoURL);  wvVideo.loadUrl("javascript:playVideo();");  

XML

<WebView android:id="@+id/wvVideo" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:background="#212121"></WebView> 

HTML

<!DOCTYPE html> <html style="height:100%;margin:0;padding:0;width:100%"> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head>   <body style="background:#212121;height:100%;margin:0;padding:0">  <!-- 1. The <iframe> (and video player) will replace this <div> tag. --> <div id="player" style="margin:0;padding:0"></div>  <script>      var Query = function () {      var query_string = {};     var query = window.location.search.substring(1);     var vars = query.split("&");     for (var i=0;i<vars.length;i++) {     var pair = vars[i].split("=");      if (typeof query_string[pair[0]] === "undefined") {       query_string[pair[0]] = pair[1];      } else if (typeof query_string[pair[0]] === "string") {       var arr = [ query_string[pair[0]], pair[1] ];       query_string[pair[0]] = arr;      } else {       query_string[pair[0]].push(pair[1]);     }     }       return query_string;     } ();      var tag = document.createElement('script');      tag.src = "https://www.youtube.com/iframe_api";     var firstScriptTag = document.getElementsByTagName('script')[0];     firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);      var player;     function onYouTubeIframeAPIReady() {     player = new YT.Player('player', {     height:'100%',width:'100%',      videoId: Query.videoid,     playerVars: { 'autoplay': 0, 'controls': 0, 'showinfo':0, 'modestbranding':1},     events: {      'onReady': onPlayerReady,     'onStateChange': onPlayerStateChange      }     });     }    function onPlayerReady(event) {   cueCheck();   timerFunction();   videoLength();   }    var done = false;    function onPlayerStateChange(event) {     Android.playState(event.data+"");      if (event.data == YT.PlayerState.PLAYING && !done) {       done = true;     }   }    function cueCheck()   {     Android.playState("cued");   }    function timerFunction(){   console.log("function");   Android.updateTimer(player.getCurrentTime()+"");   setTimeout(timerFunction, 20);  }   function videoLength(){   Android.getVideoLength(player.getDuration()+"");  }    function seekTo(val) {   player.seekTo(val);   // player.playVideo();   }    function pauseVideo(){   player.pauseVideo()   }    function playVideo(){   player.playVideo()   }        </script>    </body> </html> 
        
 
 

Lista de respuestas

0
 
vote
  module:function(Args)0  
 
String html = getHTML(url); MainActivity.webview.getSettings().setJavaScriptEnabled(true); MainActivity.webview.getSettings().setPluginState(PluginState.ON); final String mimeType = "text/html"; final String encoding = "UTF-8"; MainActivity.webview.setWebViewClient(new WebViewClient()); MainActivity.webview.setWebChromeClient(new WebChromeClient()); webview.loadDataWithBaseURL("", html, mimeType,                 encoding, "");  public static String getHTML(String str) {      String html = "<iframe class=\"youtube-player\" style=\"overflow:hidden; width: 100%; height: 95%; scrolling=\"no\" padding:0px; margin:0px\" id=\"ytplayer\" type=\"text/html\" src=\"http://www.youtube.com/embed/"             + str             + "?html5=1&autoplay=1 & fs=0\" frameborder=\"0\" >\n"             + "</iframe>\n ";      return html; } 
 
 
     
     
0
 
vote

Me enfrenté con el mismo problema y lo único que puedo decir es que el error está relacionado con la versión de Android. Particularmente, como publiqué Aquí :

  • en las versiones de Android 4, no se puede reproducir automático. El usuario tiene que presionar el botón de reproducción en el iframe para comenzar a reproducir el video. Particularmente:

    • en Android 4.1 Reproducción del audio pero no la imagen.
    • en Android 4.3 He probado en dispositivos que pueden reproducir audio pero no Video y dispositivos que no pueden reproducir nada.
    • en Android 4.4 no reproduce nada
  • de Android 5 y + Todo funciona bien.

Paso tantas veces tratando de hacerlo, no encuentro el camino: (

 

I faced with the same issue and the only thing that i can say is that the error is related with the Android version. Particularly, as I posted here :

  • In Android 4 versions, can't autoplay. The user has to press play button into the iframe to start play the video. Particularly:

    • In Android 4.1 it reproduces the audio but not the image.
    • In Android 4.3 i tested in devices which can reproduce audio but no video and devices that can't reproduce anything.
    • In Android 4.4 don't reproduce anything
  • From Android 5 and + everything works fine.

I spend so many time trying to do it i don't find the way :(

 
 

Relacionados problema

0  Start YouTube Video de Chrome Extension Fondo Script  ( Start youtube video from chrome extension background script ) 
Estoy tratando de jugar video de YouTube del script de fondo de Chrome Extension como a continuación, pero no parece funcionar: chrome.tabs.executeScript(t...

0  Incrustar la lista de reproducción de YouTube con JSON - dejó de funcionar  ( Embedding youtube playlist with json stopped working ) 
Tuve el siguiente código que creo que utiliza la API de YouTube en desuso en desuso, para recuperar y mostrar una lista de reproducción. Estaba trabajando dur...

5  ¿Es posible buscar subtítulos de YouTube?  ( Is it possible to search youtube subtitles ) 
Supongamos que quiero encontrar la lista de videos que tienen la frase "Elección presidencial francesa" en su subtítulo. ¿Puedo hacer esto usando API de You...

-1  Cómo obtener videocategoryid de API de YouTubube de Videoid  ( How to get videocategoryid from videoid youtubube api ) 
Enlace del sitio web Si desea saber cómo funciona, https://nerdtube.000webhostapp.com/ home.html Estoy construyendo un sitio donde solo los videos de la c...

15  Cómo convertir la duración de la API de YouTube (duración ISO 8601 en el formato PT # M # S) a segundos  ( How to convert youtube api duration iso 8601 duration in the format ptms to ) 
¿Cómo puedo manipular una fecha de fecha en el formato PT # M # S con JavaScript? Por ejemplo: PT5M33S Me gustaría emitir como hh:mm:ss . ...

7  Mostrar una imagen personalizada antes de que comience un video de YouTube  ( Show a custom picture before a youtube video starts ) 
Estoy tratando de mostrar una imagen en el DIV "Player", y luego, después de que el visitante haga clic en el botón, reemplácelo con un video (reemplace el di...

1  WordPress jQuery Ajax Solicitud ReadyState siempre 0  ( Wordpress jquery ajax request readystate always 0 ) 
No puedo encontrar una respuesta a este problema. Estoy tratando de obtener el título de video de YouTube (formulario WordPress, por supuesto, pero quiero h...

0  Youtube API de JavaScript, pjax, cómo volver a onYouTubeIframeAPIReady ();  ( Youtube javascript api pjax how to reload onyoutubeiframeapiready ) 
Tengo un problema con la API de JavaScript de YouTube. Llamo a este código JS: function onYouTubeIframeAPIReady() { var podcast = document.getElementBy...

0  API de la miniatura de YouTube  ( Youtube thumbnail api ) 
Quiero recuperar videos en miniatura de YouTube llamando a la API de YouTube (GDATA) usando Java? ¿Alguien me puede guiar? ...

1  Cómo jugar varias partes de un video incrustado de YouTube  ( How to play multiple parts of a youtube embedded video ) 
Estoy usando el Cuevideobyid de API de YouTube y se preguntaba si hay una manera de poder especificar múltiples "Startsegunds" y "FinksiConds" para un video i...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos