Streaming vidéo dans les applications Android

La plate-forme Android fournit des bibliothèques que vous pouvez utiliser pour diffuser des fichiers multimédias, tels que des vidéos distantes, et les présenter pour les lire dans vos applications. Dans ce tutoriel, nous allons diffuser un fichier vidéo en l’affichant à l’aide du VideoView composant avec un MediaController objet permettant à l'utilisateur de contrôler la lecture.

Nous allons également passer brièvement en revue le processus de présentation de la vidéo à l'aide du logiciel Lecteur multimédia classe. Si vous avez terminé la série sur la création d’un lecteur de musique pour Android, vous pouvez utiliser ce que vous avez appris dans ce didacticiel pour l’améliorer. Vous devriez pouvoir suivre ce didacticiel si vous avez déjà développé au moins quelques applications Android..

Option Premium

Si vous souhaitez une solution prête à l'emploi, consultez YoVideo, un modèle d'application Android permettant de créer un magnifique lecteur vidéo mobile pour smartphone Android..

Les utilisateurs peuvent voir des vidéos, les suivre et les partager avec leurs amis sur Facebook. L'utilisation de ce modèle d'application vous fera économiser de l'argent et du temps pour la création d'une application de partage de vidéos..

YoVideo sur le marché Envato

Ou vous pouvez engager un développeur Android pour créer une solution personnalisée pour vous. Sinon, lisez la suite pour savoir comment le faire vous-même..

1. Créer une nouvelle application

Étape 1

Vous pouvez utiliser le code de ce didacticiel pour améliorer une application existante sur laquelle vous travaillez ou vous pouvez créer une nouvelle application maintenant dans Eclipse ou Android Studio. Créez un nouveau projet Android, nommez-le de votre choix, configurez les détails, puis donnez-lui un nom initial Activité classe et mise en page.

Étape 2

Commençons par configurer le manifeste du projet pour la diffusion multimédia en continu. Ouvrez le fichier manifeste de votre projet et passez en édition XML dans votre IDE. Pour le streaming multimédia, vous avez besoin d’un accès Internet. Vous devez donc ajouter l’autorisation suivante dans le manifeste élément:

2. Ajouter VideoView

Étape 1

La plate-forme Android fournit la VideoView classe dans laquelle vous pouvez lire des fichiers vidéo. Ajoutons-en un au fichier de disposition principal:

  

Modifiez la mise en page parent pour l'adapter à votre propre application si nécessaire. Nous donnons le VideoView par exemple un identifiant attribut afin que nous puissions y faire référence plus tard. Vous devrez peut-être ajuster les autres propriétés de mise en page pour votre propre conception..

Étape 2

Maintenant, récupérons une référence à la VideoView exemple en code. Ouvrez la fenêtre principale de votre application Activité classe et ajoutez les importations supplémentaires suivantes:

importer android.net.Uri; importer android.widget.MediaController; importer android.widget.VideoView; 

Votre Activité la classe devrait déjà contenir le onCreate méthode dans laquelle la vue de contenu est définie:

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

Après le setContentView ligne, obtenons une référence à la VideoView exemple comme suit, en utilisant le identifiant nous définissons dans la mise en page XML:

VideoView vidView = (VideoView) findViewById (R.id.myVideo);

3. Diffuser un fichier vidéo

Étape 1

Maintenant, nous pouvons diffuser un fichier vidéo sur l'application. Préparez l'URI du noeud final comme suit:

String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4"; Uri vidUri = Uri.parse (vidAddress); 

Vous devrez bien sûr utiliser l'adresse distante pour le fichier vidéo que vous souhaitez diffuser. L'exemple ici est un fichier vidéo du domaine public hébergé sur Internet Archive. Nous analysons la chaîne d’adresse en tant qu’URI afin de pouvoir la transmettre au VideoView objet:

vidView.setVideoURI (vidUri); 

Maintenant, vous pouvez simplement commencer la lecture:

vidView.start (); 

Le système d'exploitation Android prend en charge une gamme de formats vidéo et multimédia, chaque périphérique prenant souvent en charge d'autres formats..

Comme vous pouvez le constater dans le Guide du développeur, les formats de fichiers vidéo pris en charge incluent les formats 3GP, MP4, WEBM et MKV, en fonction du format utilisé et du niveau de plate-forme installé par l'utilisateur..

Les formats de fichiers audio auxquels vous pouvez vous attendre sont compatibles avec les formats MP3, MID, OGG et WAV. Vous pouvez diffuser du contenu multimédia sur Android via RTSP, HTTP et HTTPS (à partir d'Android 3.1).

4. Ajouter des contrôles de lecture

Étape 1

Nous avons implémenté la lecture vidéo, mais l’utilisateur s’attend à le maîtriser et s’y est habitué. Encore une fois, la plate-forme Android fournit des ressources pour gérer cela en utilisant une interaction familière via le MediaController classe.

Dans ton Activité la classe onCreate méthode, avant la ligne dans laquelle vous appelez début sur le VideoView, créer une instance de la classe:

MediaController vidControl = new MediaController (this); 

Ensuite, configurez-le pour utiliser le VideoView exemple comme son ancre:

vidControl.setAnchorView (vidView); 

Et enfin, définissez-le comme contrôleur de média pour le VideoView objet:

vidView.setMediaController (vidControl); 

Lorsque vous exécutez l'application maintenant, l'utilisateur devrait pouvoir contrôler la lecture de la vidéo en continu, y compris les boutons d'avance et de retour rapides, un bouton de lecture / pause et un contrôle de barre de recherche.

Le contrôle de barre de recherche est accompagné de la longueur du fichier multimédia à droite et de la position de lecture actuelle à gauche. En plus de pouvoir appuyer le long de la barre de recherche pour accéder à une position dans le fichier, l’état de la diffusion en continu est indiqué en utilisant le même type d’affichage auquel l’utilisateur sera habitué depuis des sites et des applications telles que YouTube..

Comme vous le verrez lors de l'exécution de l'application, le comportement par défaut est que les commandes disparaissent après quelques instants et réapparaissent lorsque l'utilisateur touche l'écran. Vous pouvez configurer le comportement du MediaController objet de différentes manières. Consultez la série sur la création d'une application de lecteur de musique pour Android pour savoir comment procéder. Vous pouvez également améliorer la lecture multimédia en implémentant différents écouteurs pour configurer le comportement de votre application..

5. Utilisation Lecteur multimédia

Étape 1

Avant de terminer, passons en revue une approche alternative pour le streaming vidéo en utilisant le Lecteur multimédia classe, puisque nous l’avons utilisé dans la série sur la création d’un lecteur de musique. Vous pouvez diffuser du contenu multimédia, y compris vidéo, vers un Lecteur multimédia objet en utilisant une vue de surface. Par exemple, vous pouvez utiliser la disposition suivante:

  

Nous nous référerons à la SurfaceView dans la mise en œuvre de la Activité classe.

Étape 2

Dans ton Activité classe, ajoutez les interfaces suivantes:

Classe publique MainActivity, Activity implémente SurfaceHolder.Callback, OnPreparedListener 

Votre IDE devrait vous inviter à ajouter ces méthodes non implémentées:

@Override public vide surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Stub de méthode générée automatiquement @Override public void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO Stub de méthode généré automatiquement @Override public void onPrepared (MediaPlayer mp) // démarrer la lecture 

Nous allons ajouter à la surfaceCréée et onPréparé les méthodes.

Étape 3

Pour implémenter la lecture, ajoutez les variables d'instance suivantes à la classe:

MediaPlayer privé mediaPlayer; SurfaceHolder privé vidHolder; SurfaceSpace privé vidSurface; String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";

dans le Activitéde onCreate méthode, vous pouvez alors commencer à instancier ces variables en utilisant le SurfaceView objet que vous avez ajouté à la mise en page:

vidSurface = (SurfaceView) findViewById (R.id.surfView); vidHolder = vidSurface.getHolder (); vidHolder.addCallback (this); 

Étape 4

dans le surfaceCréée méthode, configurez vos ressources de lecture multimédia:

try mediaPlayer = new MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (this); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC);  catch (Exception e) e.printStackTrace ();  

Enfin, dans le onPréparé méthode, démarrer la lecture:

mediaPlayer.start (); 

Votre vidéo devrait maintenant être lue dans Lecteur multimédia par exemple lorsque vous exécutez l'application.

Conclusion

Dans ce tutoriel, nous avons présenté les bases de la vidéo en streaming sur Android à l'aide de la VideoView et Lecteur multimédia Des classes. Vous pouvez ajouter de nombreuses améliorations au code que nous avons implémenté ici, par exemple, en créant un support vidéo ou multimédia en continu dans l'application de lecteur de musique que nous avons créée. Vous pouvez également consulter les ressources associées à Android, telles que l'API du lecteur Android de YouTube..