web-dev-qa-db-fra.com

Comment lire une vidéo YouTube dans mon application Android?

Comment lire les vidéos YouTube dans mon application? Je veux play video en le diffusant directement depuis YouTube sans téléchargement. Aussi, lors de la lecture de vidéos, je veux fournir des options de menu. Je ne veux pas lire la vidéo en utilisant l'intention par défaut. Comment puis-je faire ceci?

77
user446366

C'est l'événement btn click

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....");

    }
}); 

ce type, il a ouvert dans une autre page avec le youtube où vous pouvez montrer votre vidéo

58
Parag Chauhan

Découvrez la version officielle YouTube Android API du lecteur .

22
Nirvana Tikku

Pas

  1. Créez une nouvelle activité pour votre lecteur (plein écran) avec des options de menu. Exécutez le lecteur multimédia et l'interface utilisateur dans différents threads.

  2. Pour lire des médias - En général, pour lire de l'audio/de la vidéo, il existe une api mediaplayer dans Android. FILE_PATH est le chemin du fichier - peut être un flux d'URL (youtube) ou un chemin de fichier local

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

Vérifiez également: Intention de l'application vidéo Play Video pour l'application YouTube YouTube en avons déjà discuté en détail.

15
Naresh

Utilisez YouTube Android API du lecteur.

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

et la classe 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";
}

Remplacez le "Hce74cEAAaE" par votre ID vidéo provenant de https://www.youtube.com/watch?v=Hce74cEAAaE . Obtenez votre API_KEY auprès de Console.developers.google.com et remplacez-la également sur le PlayerConfig.API_KEY. Pour toute information complémentaire, vous pouvez suivre pas à pas le didacticiel suivant: https://www.youtube.com/watch?v=3LiubyYpEUk

9

Vous pouvez jeter un oeil à l'application Android-Youtube-Player qui peut être trouvée ici .
Dans cet exemple d'application, les vidéos youtube sont lues dans une vidéo plutôt que dans une vue Web.

5
androidCoder

J'espère que ce lien vous aidera http://Android-coding.blogspot.in/2011/03/simple-example-using-videoview-to-play.html

Pour convertir une vidéo youtube en rtsp, utilisez ceci code github - youtube-url2rtsp

4
Arjun

Vous pouvez utiliser l'iframe comme décrit dans https://developers.google.com/youtube/iframe_api_reference

Je ne suis pas les conseils de Google à la lettre, mais c’est le code que j’utilise et qui fonctionne très bien.

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

dans/assets J'ai un fichier appelé 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>

et maintenant je définis une vue Web dans ma mise en page principale

<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" />

et j'utilise CWebVideoView dans mon activité

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

Google possède une YouTube Android API) qui vous permet d'intégrer une fonctionnalité de lecture vidéo à vos Android applications. L'API elle-même est très facile à utiliser et fonctionne bien, par exemple, voici comment créer une nouvelle activité pour lire une vidéo à l’aide de l’API.

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

Voir this pour plus de détails.

2
Sapan Diwakar

Je ne voulais pas que l'application YouTube soit présente sur l'appareil. J'ai donc utilisé ce tutoriel:

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

... pour produire ce code dans mon application:

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>     

Cela a fonctionné exactement comme je le voulais. Il ne lit pas automatiquement, mais les flux vidéo au sein de mon application. Il est à noter que certaines vidéos restreintes ne peuvent pas être lues lorsqu'elles sont intégrées.

2
JanB

Cette réponse pourrait être très tardive, mais utile.

Vous pouvez lire des vidéos youtube dans l'application elle-même en utilisant Android-youtube-player .

Quelques extraits de code:

Pour lire une vidéo youtube comportant un identifiant de vidéo dans l'URL, il vous suffit d'appeler le OpenYouTubePlayerActivity intent

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

où v est l'id de la vidéo.

Ajoutez les autorisations suivantes dans le fichier manifeste:

<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"/>

et déclarer également cette activité dans le fichier manifeste:

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

Des informations supplémentaires peuvent être obtenues à partir des premières parties du fichier de code this .

J'espère que ça aide n'importe qui!

vous pouvez utiliser this project pour lire n'importe quelle vidéo You Tube, dans votre Android app. Maintenant, pour une autre vidéo ou un identifiant vidéo ... vous pouvez le faire - https://gdata.youtube.com/feeds/api/users/eminemvevo/uploads/ eminemvevo = channel .

après avoir trouvé, id vidéo, vous pouvez mettre cet identifiant dans cueVideo("video_id")

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

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

Et spécialement pour mieux lire video_id open this, et tout ça au format xml [1st_file] dans votre bureau après avoir créé un nouveau fichier XML dans votre project ou téléchargez ce fichier [1st_file] fichier enregistré dans votre projet, cliquez avec le bouton droit de la souris sur celui-ci et ouvrez-le avec le fichier xml_editor. Vous y trouverez l'id de la vidéo en question.

enter image description here

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