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
:
<uses-permission android:name="android.permission.INTERNET" />
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 :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="#000000" tools:context=".MainActivity" > <VideoView android:id="@+id/myVideo" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerInParent="true" /> </RelativeLayout>
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 :
import android.net.Uri; import android.widget.MediaController; import android.widget.VideoView;
Votre classe Activity
doit contenir déjà la méthode onCreate
dans laquelle le "content view" est défini :
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
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 :
VideoView vidView = (VideoView)findViewById(R.id.myVideo);
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 :
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 devons "parser" la chaîne de caractère de l'adresse comme un URI afin que nous puissions le passer à l'objet VideoView
:
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 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 :
MediaController vidControl = new MediaController(this);
Ensuite, définissez-le pour utiliser l'instance VideoView
comme son "anchor" :
vidControl.setAnchorView(vidView);
Finalement, définissez-le en tant que contrôleur de média pour l'objet VideoView
:
vidView.setMediaController(vidControl);
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 :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <SurfaceView android:id="@+id/surfView" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </RelativeLayout>
Nous ferons référence à SurfaceView
dans l'implémentation de la classe Activity
.
Étape 2
Dans votre classe Activity, ajoutez les interfaces suivantes :
public class MainActivity extends Activity implements SurfaceHolder.Callback, OnPreparedListener
Votre IDE devrait vous inviter à ajouter ces méthodes non implémentées :
@Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder arg0) { //setup } @Override public void surfaceDestroyed(SurfaceHolder arg0) { // TODO Auto-generated method stub } @Override public void onPrepared(MediaPlayer mp) { //start playback }
Nous allons ajouter aux méthodes surfaceCreated
et onPrepared
.
Étape 3
Pour implémenter la lecture, ajoutez les variables d'instance suivantes à la classe :
private MediaPlayer mediaPlayer; private SurfaceHolder vidHolder; private SurfaceView vidSurface; String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
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 :
vidSurface = (SurfaceView) findViewById(R.id.surfView); vidHolder = vidSurface.getHolder(); vidHolder.addCallback(this);
Étape 4
Dans la méthode surfaceCreated
, définissez 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(); }
Finalement, dans la méthode onPrepared
, commencez la lecture :
mediaPlayer.start();
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.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post