2016-05-08 40 views
11

- Aggiornamento 09/05/2016 17:10 - Il problema sembra correlato alla data di pubblicazione del video ... Nell'ultima settimana di aprile ho postato molti video su YouTube, quelli pubblicati fino alle 19:00 del 27 aprile funzionano correttamente, mentre quelli caricati dalle 21:15 dello stesso giorno hanno discusso il problema, come se tra il 19 e il 21 del 27 aprile fossero stati introdotti alcuni aggiornamenti o modifiche al video di YouTube. Ho provato a caricare un nuovo video ora e anche questo ha lo stesso problema.YouTubeAndroidPlayerAPI non è possibile riprodurre alcuni video


Ho un problema strano con YouTubeAndroidPlayerAPI .. Ho usare YouTubePlayerSupportFragment (ma ho lo stesso problema con YouTubePlayerFragment) per riprodurre i video nella mia app, alcuni video riprodurre perfettamente, altro show l'errore "C'è stato un problema durante la riproduzione. Tocca per riprovare. ".

Quando questo accade nel monitor Android vedo l'errore API di YouTube:

05-08 11:25:22.145 20521-20521/? E/YouTubeAndroidPlayerAPI: fmt.noneavailable 
oae: Video not supported/available 
at oab.a(SourceFile:212) 
at nvl.a(SourceFile:383) 
at nvl.a(SourceFile:706) 
at nvr.a(SourceFile:1144 
at nsn.onPostExecute(SourceFile:2102) 
at android.os.AsyncTask.finish(AsyncTask.java:651) 
at android.os.AsyncTask.-wrap1(AsyncTask.java) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5443) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

Se si tocca l'icona di YouTube nel video per riprodurlo in YouTube, il video viene riprodotto correttamente nel ufficiali app.

Se il video ha la monetizzazione attiva, il video dell'annuncio viene mostrato normalmente, alla fine viene visualizzato l'errore.

ho provato:

  • Uso YouTubePlayerFragment invece di YouTubePlayerSupportFragment
  • Utilizzo di attività invece di AppCompatActivity
  • incorporare il video in una pagina HTML, funziona correttamente
  • monetizzazione Disattiva, non cambia nulla
  • Tasti diversi, uno per il debug e uno per la versione

Grazie mille per l'aiuto!


Aggiornamento 2016/11/05 Sembra essere un bug di YouTube; l'unica soluzione accettabile in questo momento sembra essere aprire il video nell'app ufficiale di YouTube con un intento o sostituire il frammento del giocatore con una WebView. La WebView standard è molto limitata e non mostrerà il pulsante per portare il video a schermo intero. È necessario creare una classe che estende WebChromeClient:

public class MyWebChromeClient extends WebChromeClient { 

    FrameLayout.LayoutParams LayoutParameters = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); 

    @Override 
    public void onShowCustomView(View view, CustomViewCallback callback) { 
     if (mCustomView != null) { 
      callback.onCustomViewHidden(); 
      return; 
     } 
     mContentView = (LinearLayout) findViewById(R.id.scheda_video_activity); 
     mContentView.setVisibility(View.GONE); 
     mCustomViewContainer = new FrameLayout(SchedaVideoActivity.this); 
     mCustomViewContainer.setLayoutParams(LayoutParameters); 
     mCustomViewContainer.setBackgroundResource(android.R.color.black); 
     view.setLayoutParams(LayoutParameters); 
     mCustomViewContainer.addView(view); 
     mCustomView = view; 
     mCustomViewCallback = callback; 
     mCustomViewContainer.setVisibility(View.VISIBLE); 
     setContentView(mCustomViewContainer); 
    } 

    @Override 
    public void onHideCustomView() { 
     if (mCustomView == null) { 
      return; 
     } else { 
      mCustomView.setVisibility(View.GONE); 
      mCustomViewContainer.removeView(mCustomView); 
      mCustomView = null; 
      mCustomViewContainer.setVisibility(View.GONE); 
      mCustomViewCallback.onCustomViewHidden(); 
      mContentView.setVisibility(View.VISIBLE); 
      setContentView(mContentView); 
     } 
    } 
} 

e poi inizializzare il WebView:

WebView myWebView = (WebView)findViewById(R.id.webview); 
MyWebChromeClient mWebChromeClient = new MyWebChromeClient(); 
myWebView.setWebChromeClient(mWebChromeClient); 
myWebView.setWebViewClient(new WebViewClient(){ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     return false; 
    } 
}); 
WebSettings webSettings = myWebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 

Infine, caricare il video nel WebView:

myWebView.loadUrl("https://www.youtube.com/embed/"+youtube_id); 

Se si desidera adattare le dimensioni di WebView al lettore YouTube, è possibile eseguire questa operazione:

Point size = new Point(); 
getWindowManager().getDefaultDisplay().getSize(size); 
myWebView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int)Math.round(size.x/1.77))); 
+0

Alcuni aggiornamenti: ho downgrade down l'app YouTube alla versione 11.10.60 (vedi le risposte sotto) ma il problema rimane; quindi ho eseguito il downgrade a tge factory version, 10.28.60 e non riesco a vedere alcun video, ricevo l'errore DEVELOPER_KEY_INVALID. – frabbe

+0

Non so se può essere d'aiuto ma ho questo problema solo con i video recenti caricati su Youtube. Forse un recente cambio di formato può causare questo? –

+1

Sì, il problema sembra correlato alla data di pubblicazione del video ... Nell'ultima settimana di aprile ho pubblicato molti video su YouTube, quelli pubblicati fino alle 19:00 del 27 aprile funzionano correttamente, mentre quelli caricati da 21: 15 nello stesso giorno hanno discusso il problema, come se tra il 19 e il 21 del 27 aprile fossero stati introdotti alcuni aggiornamenti o modifiche ai video di YouTube. Ho provato a caricare un nuovo video ora e anche questo ha lo stesso problema. – frabbe

risposta

0

Prova ad aggiornare la tua app YouTube alla versione 11.19.56.