अपने Android एप्लिकेशन में YouTube वीडियो कैसे चलाएं?


84

मैं YouTubeअपने एप्लिकेशन में वीडियो कैसे चलाऊं? मैं play videoइसे बिना डाउनलोड किए सीधे YouTube से स्ट्रीमिंग करके देखना चाहता हूं । इसके अलावा, वीडियो खेलते समय, मैं मेनू विकल्प प्रदान करना चाहता हूं। मैं डिफ़ॉल्ट इरादे से वीडियो चलाना नहीं चाहता। मैं यह कैसे कर सकता हूँ?



1
इसका सिर्फ 2 मिनट का काम, डेवलपर कंसोल से Youtube विकल्प को सक्षम करें, यूट्यूब प्लेयर जार फ़ाइल डाउनलोड करें, इसका उपयोग करना शुरू करें, इसका सरल संदर्भ इस पोस्ट feelzdroid.com/2017/01/…
Naruto

जवाबों:


59

यह btn क्लिक इवेंट है

btnvideo.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

    startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.youtube.com/watch?v=Hxy8BZGQ5Jo")));
    Log.i("Video", "Video Playing....");

    }
}); 

इस प्रकार यह यूट्यूबर के साथ एक अन्य पेज में खुलता है जहाँ आप अपना वीडियो दिखा सकते हैं


1
यह YouTube aap पर निर्भर करता है, अन्यथा यह नए वेबव्यू में वीडियो को खोलता है, मैं वीडियो व्यू को वेबव्यू में नहीं खेलना चाहता हूं .. किसी तरह से सुझाव दें plz।
आबिद ए। चौधरी

3
VideoViewवीडियो के पूर्ण URL की आवश्यकता होती है, जो YouTube के मामले में संभवतः उपलब्ध नहीं है।
अमन आलम

3
किसी भी कॉपी और पेस्टर्स के लिए, यदि आप भ्रम में हैं कि यह काम क्यों नहीं कर सकता है, तो newIntent में एक स्थान होना चाहिए। नई मंशा
OrhanC1

10
प्रश्न यह पसंद करता है "मैं डिफ़ॉल्ट इरादे से वीडियो नहीं चलाना चाहता।"
नरेश

18

कदम

  1. मेनू विकल्प के साथ अपने खिलाड़ी (फुलस्क्रीन) स्क्रीन के लिए एक नई गतिविधि बनाएं। अलग-अलग थ्रेड्स में मीडिएपलेयर और यूआई चलाएं।

  2. मीडिया चलाने के लिए - सामान्य रूप से ऑडियो / वीडियो चलाने के लिए एंड्रॉइड में मीडियाप्लेयर एपी है। FILE_PATH फ़ाइल का पथ है - url (youtube) स्ट्रीम या स्थानीय फ़ाइल पथ हो सकता है

     MediaPlayer mp = new MediaPlayer();
        mp.setDataSource(FILE_PATH);
        mp.prepare();
        mp.start();
    

इसे भी देखें: Android YouTube ऐप प्ले वीडियो इंटेंट ने पहले ही इस पर विस्तार से चर्चा की है।


8
FILE_PATH किसी YouTube वीडियो की ओर कैसे इशारा कर सकता है? एक यूट्यूब एक वेब पेज को लिंक करता है जो वीडियो चलाता है, न कि फ़ाइल का लिंक।
मार्टी मिलर

3
Youtube के पास कोई पूर्ण यूआरएल नहीं है। ओपी की मूल चिंता यही थी।
noob

1
@MartyMiller youtube से Url स्ट्रीम प्राप्त करना अलग प्रश्न है। यह यूट्यूब एपीआई के साथ चिंता करता है।
नरेश

11

YouTube Android प्लेयर API का उपयोग करें।

activity_main.xml:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context="com.example.andreaskonstantakos.vfy.MainActivity">

<com.google.android.youtube.player.YouTubePlayerView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:layout_centerHorizontal="true"
    android:id="@+id/youtube_player"
    android:layout_alignParentTop="true" />

<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="195dp"
android:visibility="visible"
android:id="@+id/button" />


</RelativeLayout>

MainActivity.java:

package com.example.andreaskonstantakos.vfy;


import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;



public class MainActivity extends YouTubeBaseActivity {

YouTubePlayerView youTubePlayerView;
Button button;
YouTubePlayer.OnInitializedListener onInitializedListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
     button = (Button) findViewById(R.id.button);


     onInitializedListener = new YouTubePlayer.OnInitializedListener(){

         @Override
         public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

            youTubePlayer.loadVideo("Hce74cEAAaE");

             youTubePlayer.play();
     }

         @Override
         public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

         }
     };

    button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

youTubePlayerView.initialize(PlayerConfig.API_KEY,onInitializedListener);
        }
    });
}
}

और PlayerConfig.java वर्ग:

    package com.example.andreaskonstantakos.vfy;

/**
 * Created by Andreas Konstantakos on 13/4/2017.
 */

public class PlayerConfig {

PlayerConfig(){}

public static final String API_KEY = 
"xxxxx";
}

"Hce74cEAAaE" को https://www.youtube.com/watch?v=Hce74cEAAaE से अपनी वीडियो आईडी से बदलें । Console.developers.google.com से अपना API_KEY प्राप्त करें और इसे PlayerConfig.API.KEY पर बदलें। किसी भी अन्य जानकारी के लिए आप निम्न ट्यूटोरियल चरण का अनुसरण कर सकते हैं: https://www.youtube.com/watch?v=3LiubyYEEEk


अगर मैं डायनेमिक वीडियो-आईडी का उपयोग करना चाहता हूं, तो मुझे "YouTubeAndroidPlayerAPI: एम्‍बेड कॉन्‍फ़िगर करना RemoteEmbeddedPlayer में समर्थित नहीं है।" त्रुटि और इसके मेरे वीडियो को नहीं चला रहा है। क्या आप मेरी मदद कर सकते हैं ... अग्रिम धन्यवाद।
अमित पंड्या

youTubePlayerView.initialize मौजूद नहीं है, शायद निकाल दिया गया है?
अल्बर्टो एम

5

मैं नहीं चाहता था कि YouTube ऐप डिवाइस पर मौजूद हो, इसलिए मैंने इस ट्यूटोरियल का उपयोग किया:

http://www.viralandroid.com/2015/09/how-to-embed-youtube-video-in-android-webview.html

... मेरे कोड में इस कोड का उत्पादन करने के लिए:

WebView mWebView; 

@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.video_webview);
    mWebView=(WebView)findViewById(R.id.videoview);

    //build your own src link with your video ID
    String videoStr = "<html><body>Promo video<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/47yJ2XCRLZs\" frameborder=\"0\" allowfullscreen></iframe></body></html>";

    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
        }
    });
    WebSettings ws = mWebView.getSettings();
    ws.setJavaScriptEnabled(true);
    mWebView.loadData(videoStr, "text/html", "utf-8");

}

//video_webview
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="0dp"
    android:layout_marginRight="0dp"
    android:background="#000000"
    android:id="@+id/bmp_programme_ll"
    android:orientation="vertical" >

   <WebView
    android:id="@+id/videoview" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />  
</LinearLayout>     

यह वही काम करता है जो मैं चाहता था। यह ऑटोप्ले नहीं करता है, लेकिन मेरे ऐप के भीतर वीडियो स्ट्रीम करता है। वर्थ यह देखते हुए कि कुछ प्रतिबंधित वीडियो एम्बेडेड होने पर नहीं चलेंगे।


1
हाँ, आप सही तरीके से YouTube के बिना अपने ऐप के साथ वेबव्यू के साथ एम्बेडेड हैं। ऐप के भीतर वीडियो लोड करने का अच्छा तरीका है धन्यवाद JanB
Ajay Pandya

YouTube Android प्लेयर API जैसी API कुंजी के लिए साइन अप करने के लिए महान आसान समाधान की आवश्यकता नहीं है । मेरे लिए काम किया!
माइकल ओसोफस्की

3

आप https://developers.google.com/youtube/iframe_api_reference में वर्णित iframe का उपयोग कर सकते हैं

मैं ठीक से सलाह नहीं दे रहा हूं लेकिन यह वह कोड है जिसका मैं उपयोग कर रहा हूं और यह ठीक काम कर रहा है

public class CWebVideoView {

    private String url;
    private Context context;
    private WebView webview;
    private static final String HTML_TEMPLATE = "webvideo.html";

    public CWebVideoView(Context context, WebView webview) {
        this.webview = webview;
        this.context = context;
        webview.setBackgroundColor(0);
        webview.getSettings().setJavaScriptEnabled(true);
    }

    public void load(String url){
        this.url = url;
        String data = readFromfile(HTML_TEMPLATE, context);
        data = data.replace("%1", url);
        webview.loadData(data, "text/html", "UTF-8");
    }

    public String readFromfile(String fileName, Context context) {
        StringBuilder returnString = new StringBuilder();
        InputStream fIn = null;
        InputStreamReader isr = null;
        BufferedReader input = null;
        try {
            fIn = context.getResources().getAssets().open(fileName, Context.MODE_WORLD_READABLE);
            isr = new InputStreamReader(fIn);
            input = new BufferedReader(isr);
            String line = "";
            while ((line = input.readLine()) != null) {
                returnString.append(line);
            }
        } catch (Exception e) {
            e.getMessage();
        } finally {
            try {
                if (isr != null)
                    isr.close();
                if (fIn != null)
                    fIn.close();
                if (input != null)
                    input.close();
            } catch (Exception e2) {
                e2.getMessage();
            }
        }
        return returnString.toString();
    }

    public void reload() {
        if (url!=null){
            load(url);
        }
    }
}

/ आस्तियों में मेरे पास webvideo.html नामक एक फ़ाइल है

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <style>
            iframe   { border: 0; position:fixed; width:100%; height:100%; bgcolor="#000000"; }
            body     { margin: 0; bgcolor="#000000"; }
        </style>        
    </head>
    <body>
        <iframe src="%1" frameborder="0" allowfullscreen></iframe>
    </body>
</html>

और अब मैं अपने मुख्य लेआउट के अंदर एक वेबव्यू को परिभाषित करता हूं

<WebView
    android:id="@+id/video"
    android:visibility="gone"
    android:background="#000000"
    android:layout_centerInParent="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

और मैं अपनी गतिविधि के अंदर CWebVideoView का उपयोग करता हूं

videoView = (WebView) view.findViewById(R.id.video);
videoView.setVisibility(View.VISIBLE);
cWebVideoView = new CWebVideoView(context, videoView);
cWebVideoView.load(url);

आपके उत्तर के लिए धन्यवाद। क्या आप एक स्क्रीनशॉट डाल सकते हैं ताकि हम कोड का परिणाम भी देख सकें?
सईद जसानी

2

यह उत्तर वास्तव में देर से हो सकता है, लेकिन इसका उपयोगी है।

आप एंड्रॉइड-यूट्यूब-प्लेयर का उपयोग करके ऐप में ही यूट्यूब वीडियो चला सकते हैं ।

कुछ कोड स्निपेट:

एक YouTube वीडियो चलाने के लिए जिसका url में एक वीडियो आईडी है, आप बस OpenYouTubePlayerActivityइरादे को बुलाते हैं

Intent intent = new Intent(null, Uri.parse("ytv://"+v), this, 
            OpenYouTubePlayerActivity.class);
startActivity(intent);

जहां v वीडियो आईडी है।

मेनिफ़ेस्ट फ़ाइल में निम्न अनुमतियाँ जोड़ें:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

और इस गतिविधि को घोषणा फ़ाइल में भी घोषित करें:

<activity 
        android:name="com.keyes.youtube.OpenYouTubePlayerActivity"></activity>

इस कोड फ़ाइल के पहले भागों से अधिक जानकारी प्राप्त की जा सकती है ।

आशा है कि किसी की मदद करता है!


2

Google के पास एक YouTube Android प्लेयर API है जो आपको अपने Android एप्लिकेशन में वीडियो प्लेबैक कार्यक्षमता शामिल करने में सक्षम बनाता है। एपीआई स्वयं का उपयोग करना बहुत आसान है और अच्छी तरह से काम करता है। उदाहरण के लिए, यहां एपीआई का उपयोग करके वीडियो चलाने के लिए एक नई गतिविधि बनाने का तरीका बताया गया है।

Intent intent = YouTubeStandalonePlayer.createVideoIntent(this, "<<YOUTUBE_API_KEY>>", "<<Youtube Video ID>>", 0, true, false);   
startActivity(intent);

अधिक जानकारी के लिए इसे देखें ।


1

आप किसी भी ट्यूब वीडियो को चलाने के लिए इस परियोजना का उपयोग कर सकते हैं , अपने एंड्रॉइड ऐप में। अब अन्य वीडियो, या वीडियो आईडी के लिए ... आप यह https://gdata.youtube.com/feeds/api/users/eminemvevo/uploads/ जहाँ eminemvevo = चैनल कर सकते हैं ।

वीडियो आईडी खोजने के बाद, आप उस आईडी को डाल सकते हैं cueVideo("video_id")

src -> com -> examples -> youtubeapidemo -> PlayerViewDemoActivity

  @Override
  public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player , boolean wasRestored) {
    if (!wasRestored) {
      player.cueVideo("wKJ9KzGQq0w");
    }
  }

और विशेष रूप से एक बेहतर तरीके से कि video_id पढ़ने के लिए खोलने के एक एक्सएमएल [के रूप में इस है, और यह 1st_fileअपने डेस्कटॉप में] फ़ाइल यह एक नया बनाने के बाद Xml फ़ाइल अपने में projectया कि [अपलोड 1st_fileअपने प्रोजेक्ट में] सहेजी गई फ़ाइल, और उस में right_click, और इसे xml_editor फ़ाइल के साथ खोलें, यहां आपको विशेष वीडियो की वीडियो आईडी मिलेगी।

यहाँ छवि विवरण दर्ज करें


1
MediaPlayer mp=new MediaPlayer(); 
mp.setDataSource(path);
mp.setScreenOnWhilePlaying(true);
mp.setDisplay(holder);
mp.prepare();
mp.start();

-6
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watchv=cxLG2wtE7TM"));
startActivity(intent);

वास्तव में? "मैं डिफ़ॉल्ट इरादे का उपयोग करके वीडियो नहीं खेलना चाहता।", दूसरी पंक्ति में।
Squirrelkiller

यह इस मौजूदा जवाब का सिर्फ एक दोहराव है ।
पैंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.