2016-05-04 13 views
7

YouTube Android Player API sample code (संस्करण 1.2.2) का उपयोग करके, यदि मैं किसी भी वीडियो आईडी को एक से अधिक में बदलता हूं तो मैंने अपलोड किया है (उदाहरण के लिए "QVikru_w2hQ" या "u1n6E81rm80"), थंबनेल लोड खिलाड़ी, लेकिन खेल पर क्लिक करने पर, खिलाड़ी YouTubePlayer.ErrorReason.INTERNAL_ERROR के साथ ऑनर फ़ंक्शन पर जाता है। एक संदेश प्रदर्शित होता है कि "खेलते समय कोई समस्या थी। पुनः प्रयास करने के लिए टैप करें"। YouTube वेबसाइट या हमारे आईओएस ऐप पर इन वीडियो को चलाने में कोई समस्या नहीं है। मूल नमूना वीडियो मेरे डेवलपर कुंजी के साथ ठीक खेलता है।एकाधिक वीडियो के लिए YouTube एंड्रॉइड प्लेयर API INTERNAL_ERROR

मैं वर्तमान में 11.13.56 पर YouTube ऐप संस्करण के साथ अपने नेक्सस 5X (एंड्रॉइड 6.0.1) सहित कई डिवाइसों पर इस समस्या का सामना कर रहा हूं।

क्या किसी और ने भी इसी तरह का मुद्दा अनुभव किया है?

मैंने google data api issue tracker पर एक संभावित बग रिपोर्ट भी पोस्ट की है।

+0

क्या यह किसी भी डिवाइस पर काम कर रहा है? –

+0

@ विवेक मिश्रा: गैलेक्सी एस 4, 5.0.1, 11.10.60 - नहीं एचटीसी वन एम 8, 6.0, 11.10.60 - नहीं एचटीसी डिजायर 610, 4.4.2, 11.13.56 - नहीं। मैंने नहीं किया अभी तक एक पाया –

+0

मैंने नमूना कोड भी आजमाया और यह निश्चित रूप से आपके द्वारा प्रदान की गई वीडियो आईडी के साथ काम नहीं करता है लेकिन यह आपके द्वारा चुनी गई कई यादृच्छिक वीडियो आईडी के साथ काम कर रहा है और यह ठीक काम कर रहा है। मुझे लगता है कि यह सुलभता मुद्दे से संबंधित हो सकता है –

उत्तर

0

यह एक यूट्यूब बग प्रतीत होता है, मैंने एकत्र किए गए विवरणों के लिए YouTubeAndroidPlayerAPI can't play some videos देखें।

इस समय एकमात्र पास करने योग्य कार्यवाही यूट्यूब आधिकारिक ऐप में वीडियो को एक इरादे से खोलने या वेबव्यू के साथ खिलाड़ी के टुकड़े को प्रतिस्थापित करने के लिए प्रतीत होता है। मैंने यह दूसरा समाधान पसंद किया।

मानक वेबव्यू बहुत सीमित है और वीडियो को पूर्णस्क्रीन लाने के लिए बटन नहीं दिखाएगा। 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); 

अंत में, लोड:

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

यदि आप चाहते हैं करने के लिए

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); 
     } 
    } 
} 

और फिर WebView प्रारंभ: आप एक वर्ग है कि WebChromeClient विस्तार बनाने की जरूरत YouTube प्लेयर में वेबव्यू आयामों को अनुकूलित करें, आप यह कर सकते हैं:

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

क्या आपको इस विधि के साथ काम करने के लिए ऑटोप्ले मिला? मैंने अभी तक काम नहीं किया है। 'setMediaPlaybackRequiresUserGesture (false)' मदद नहीं करता है। –

+0

नहीं, आप इस सरल कोड के साथ वीडियो को ऑटोप्ले नहीं कर सकते ... उपयोगकर्ता को "play" बटन टैप करना होगा। – frabbe

2

वेबव्यू एक अच्छा समाधान प्रतीत होता है। क्योंकि मैं जल्दी में था और त्वरित सुधार की जरूरत है, मैं इस GitHub परियोजना से स्रोत कोड का प्रयोग किया:

https://github.com/theScrabi/NewPipe

इस कोड को यूट्यूब एपीआई पर निर्भर नहीं करता। यह शुद्ध वेब पार्सिंग है। मेरे सभी वीडियो समाधान के साथ ठीक काम कर रहे हैं, जितनी जल्दी पहले।

पूरी परियोजना एक कार्यात्मक ऐप है, लेकिन आप अंदर जा सकते हैं और आपको जो चाहिए वह ले सकते हैं। मैंने उस टुकड़े का उपयोग किया जो वीडियो थंबनेल और पूर्णस्क्रीन प्लेयर गतिविधि को एम्बेड करता है।

परियोजना के लेखक को कुडोस।

संबंधित मुद्दे