Advertisement
  1. Code
  2. Android SDK
Code

Vidéo en streaming dans les applications Android

by
Difficulty:IntermediateLength:LongLanguages:

French (Français) translation by Abdelhalim Boujemaa (you can also view the original English article)

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

Nous allons également parcourir brièvement le processus de présentation de la vidéo en utilisant la classe MediaPlayer. Si vous avez terminé la série sur la création d'un lecteur de musique pour Android, vous pouvez utiliser ce que vous allez apprendre dans ce tutoriel pour l'améliorer davantage. Vous devriez être capable de compléter ce tutoriel si vous avez déjà développé au moins quelques applications Android.

1. Créer une nouvelle application

Étape 1

Vous pouvez utiliser le code de ce tutoriel pour améliorer une application existante sur laquelle vous êtes entrain de travailler ou bien vous pouvez créer maintenant une nouvelle application dans Eclipse ou Android Studio. Créez un nouveau projet Android, attribuez-lui le nom de votre choix, configurez les détails et enfin attribuez-lui une classe main initiale Activity et un layout.

Étape 2

Commençons d'abord par la configuration du manifeste du projet pour le streaming multimédia. Ouvrez le fichier "manifest" de votre projet et passez à l'édition XML dans votre IDE. Pour la diffusion multimédia, vous avez besoin d'un accès à Internet, ajoutez donc l'autorisation suivante dans l'élément manifest :

2. Ajouter VideoView

Étape 1

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

Si nécessaire, modifiez le layout parent en fonction de votre propre application. Nous donnons à l'instance VideoView un attribut id afin que nous puissions y faire référence plus tard. Vous devrez peut-être ajuster les autres propriétés de layout selon votre propre design.

Étape 2

Maintenant, récupérons une référence à l'instance VideoView dans le code. Ouvrez la classe main Activity de votre application et ajoutez les importations supplémentaires suivantes :

Votre classe Activity doit contenir déjà la méthode onCreate dans laquelle le "content view" est défini :

Après la ligne setContentView, obtenons une référence à l'instance VideoView comme suit, en utilisant l'id que nous avons défini dans layout XML :

3. Diffuser un fichier vidéo

Étape 1

Maintenant, nous pouvons diffuser un fichier vidéo dans l'application. Préparez l'URI pour l'endpoint comme suit :

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 devons "parser" la chaîne de caractère de l'adresse comme un URI afin que nous puissions le passer à l'objet VideoView :

Maintenant, vous pouvez simplement commencer la lecture :

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 des formats supplémentaires.

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

Les formats de fichiers audio auxquels vous pouvez vous attendre comprennent 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 à être en mesure d'en prendre le contrôle. Encore une fois, la plate-forme Android fournit des ressources pour gérer cela en utilisant une interaction familière via la classe MediaController.

Dans la méthode onCreate de la classe Activity, et avant la ligne dans laquelle vous faites appel à start dans VideoView, créez une instance de la classe :

Ensuite, définissez-le pour utiliser l'instance VideoView comme son "anchor" :

Finalement, définissez-le en tant que contrôleur de média pour l'objet VideoView :

Maintenant, lorsque l'application est lancée, l'utilisateur doit pouvoir contrôler la lecture de la vidéo, y compris les boutons d'avance rapide et de retour rapide, un bouton lecture/pause et un contrôleur de la barre de progression.

Le contrôleur de la barre de progression est accompagné de la longueur du fichier multimédia à droite, et de la position courante de la vidéo à gauche. En plus de pouvoir appuyer sur la barre de progression pour accéder à une position spécifique du fichier, le statut de diffusion est indiqué en utilisant le même type d'affichage auquel l'utilisateur sera habitué depuis des sites et des applications tels que YouTube.

Comme vous le verrez lorsque vous lancez l'application, le comportement par défaut est que les contrôleurs disparaissent après quelques instants, réapparaissant lorsque l'utilisateur touche l'écran. Vous pouvez configurer le comportement de l'objet MediaController de différentes manières. Voir la série sur la création d'une application de lecteur de musique pour Android pour un exemple de la façon de le faire. Vous pouvez également améliorer la lecture des médias en implémentant différents "listeners" pour configurer le comportement de votre application.

5. Utilisation de MediaPlayer

Étape 1

Avant que nous finissions, passons par une approche alternative pour le streaming vidéo en utilisant la classe MediaPlayer, 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 de la vidéo, dans un objet MediaPlayer à l'aide d'une "surface view". Par exemple, vous pouvez utiliser le layout suivant :

Nous ferons référence à SurfaceView dans l'implémentation de la classe Activity.

Étape 2

Dans votre classe Activity, ajoutez les interfaces suivantes :

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

Nous allons ajouter aux méthodes surfaceCreated et onPrepared.

Étape 3

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

Dans la méthode onCreate de la classe Activity, vous pouvez commencer à instancier ces variables à l'aide de l'objet SurfaceView que vous avez ajouté au loayout :

Étape 4

Dans la méthode surfaceCreated, définissez vos ressources de lecture multimédia :

Finalement, dans la méthode onPrepared, commencez la lecture :

Ainsi, votre vidéo doit être lue dans l'instance MediaPlayer lorsque vous lancez l'application.

Conclusion

Dans ce tutoriel, nous avons décrit les bases du streaming vidéo sur Android en utilisant les classes VideoView et MediaPlayer. Vous pouvez ajouter de nombreuses améliorations au code que nous avons implémenté ici, par exemple, en créant un support de vidéo ou du streaming multimédia dans l'application de lecteur de musique que nous avons créée. Vous pouvez également consulter les ressources associées pour Android  tel que le YouTube Android Player API.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.