Chinese (People's Republic of China)  English  Français


Supinfo-Projects.com
Tous les projets des élèves ingénieurs de Supinfo



Projets
  Dernier Projet
  Les plus populaires
  Tous les Projets

123 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   1039 Visites
   Note INTERNET : 16.3
    (31 Votants)
   0 Commentaires

   Lire l'article

Evaluez cet article

20
18
16
14
12
10
8
6
4
2
0


Commentez cet article

Auteur :

Email :

Votre commentaire :



 
2004 - Note de Synthèse Stage
Intégration du multimédia à Java avec JMF
[30 mn de lecture - paru le 11/4/2003 - Public : Confirmé]

Auteur

lefevr_jJérôme LEFÈVRE
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2005

   Lui écrire
   Tous les projets de cet auteur
   Le mini-CV de cet auteur

1. Présentation, possibilités

1.1. Les possibilités

JMF permet de faire à peu près tout ce que l’on veut avec des « objets » multimédia… que cela soit lire des films, des mp3, acquérir des données avec une webcam ou un micro… voici une petite liste non exhaustive des utilisations possibles de JMF :

• Lire différents types de fichiers multimédias dans une application Java ou un applet. JMF supporte de nombreux formats tels que AU, AVI, MPEG, WAV… Le site de Sun propose une liste détaillée des formats supportés par l’API (http://java.sun.com/products/java-media/jmf/2.1.1/formats.html).
• Capturer des données audio et vidéo depuis une caméra ou une webcam puis les enregistrer dans différents formats
• Transmettre des flux audio et vidéo en temps réel sur le Net
• Lire des médias temps réel depuis le Net (à l’image de RealPlayer)
• Diffuser à de nombreux clients connectés des vidéos ou de la musique (exemple d’une radio online)
• …

1.2. Prédispositions matérielles

JMF ne prend pas en compte toutes les webcams. Sous Windows, votre webcam doit disposer des drivers VFW (Video For Windows) et sous Linux elle doit avoir des drivers Video4Linux. Une liste non exhaustive des webcams supportées est disponible sur le site de Sun (http://java.sun.com/products/java-media/jmf/2.1.1/formats.html#Capturers). A titre d’information, j’ai fait tous mes tests sous Windows XP avec une webcam QuickMessenger de chez Logitech (l’une des moins chères du marché) et elle a été reconnue sans problème lors de l’installation de JMF.

1.3. Comparaison avec un ensemble vidéo domestique


Pour expliquer le fonctionnement de JMF, on va le comparer à celui d’un ensemble vidéo domestique (télé, caméra, magnétoscope, enceintes). JMF recourt à 4 éléments principaux pour manipuler le multimédia, à savoir :
• Un ou plusieurs périphériques de capture, que nous pouvons assimiler à une caméra dans le cadre de notre comparaison.
• Une ou plusieurs sources de données, comparable à une cassette vidéo.
• Un lecteur (ou processeur, nous y reviendrons), que l’on peut comparer à un magnétoscope.
• Et une destination, qui peut être un fichier, un écran etc… Dans notre exemple cela correspondra à la télévision et aux haut-parleurs.

Vous pouvez facilement imaginer comment fonctionne l’ensemble vidéo décrit ci-dessus, nous allons voir comment fonctionne JMF.

Pour pouvoir présenter un média sur un périphérique de sortie tel qu’un écran ou des haut-parleurs, JMF doit créer un lecteur qui récupérera un ou plusieurs flux de données en entrée, effectuera certains traitements pour les rendre présentables sur un périphérique de destination. On peut créer un flux de données à partir d’un simple fichier multimédia, à partir d’une webcam ou de n’importe quel autre périphérique de capture ou bien même en récupérant le flux de sortie d’un processeur. Un processeur fonctionne à peu près de la même manière qu’un lecteur et permet de créer un nouveau flux de données à partir des flux de données d’entrées (utile pour ré-encoder un flux vidéo par exemple).


1.4. Architecture

Nous allons maintenant décrire un peu plus en détail les éléments essentiels de JMF. Nous en avons évoqué quelques uns précédemment lors de la comparaison à un ensemble vidéo sans toute fois en donner une description suffisante.

Voici les termes avec lesquels il faudra vous familiariser pour utiliser l’API :
• Source de données (DataSource)
• Périphérique de capture (CaptureDevice)
• Lecteur (Player)
• Processeur (Processor)
Datasink
Format
Manager

J’ai laissé les termes en anglais lorsqu’il n’était pas évident de trouver une traduction convaincante car lors du développement, ce sont des termes anglais qu’il faudra se rappeler. Nous allons maintenant décrire chaque élément de la liste.

Source de données (DataSource)
Il s’agit d’un flux de données qui encapsule un média. Une source de données peut contenir des données audio, vidéo ou même un mélange des 2. Une source de données peut être instanciée à partir d’un fichier local ou en réseau, d’un micro, d’un flux audio arrivant du Net etc. Elle contient la localisation du média (ex : adresse du fichier source…), le protocole et le logiciel utilisé pour délivrer le média. Une source de données peut être envoyée dans un lecteur pour pouvoir être présentée.

Périphérique de capture (CaptureDevice)
Il s’agit d’un dispositif matériel capable d’acquérir des données. Par exemple : webcam, micro, caméra…

Lecteur (Player)

Un lecteur est un objet qui prend en entrée un flux de données (audio et/ou vidéo) et effectue un traitement pour pouvoir présenter ces données sur un écran ou des haut-parleurs.

Mais avant de pouvoir présenter un média, un lecteur doit passer par différentes étapes pour se préparer à la lecture. On peut comparer ça au temps que prend un lecteur cd quand on insère un nouveau cd pour analyser la table des matières, la durée etc. Voyons les différents états d’un lecteur :

Unrealized (non créé) : Dans cet état, l’objet Player a été instancié mais il ne connaît encore rien du média qu’il aura à lire.
Realizing (en cours de création) : Le lecteur passe en état Realizing quand on appelle la méthode realize(). Le lecteur détermine alors les ressources dont il aura besoin.
Realized (créé) : A ce stade, le lecteur sait qu’elles sont les ressources nécessaires et détient les informations concernant le média qu’il aura à lire.
Prefetching (en préparation) : Le lecteur passe en état Prefetching quand on appelle la méthode prefetch(). Le lecteur précharge alors le média, s’assure d’avoir l’exclusivité sur les ressources matérielles (carte son…).
Prefetched (prêt) : Le lecteur est prêt à lire le média.
Started (démarré) : Passage en Started lors de l’appel à la méthode start(). La lecture démarre.


Processeur (Processor)

Comme dit plus haut, un processeur est une sorte de lecteur. D’ailleurs dans l’API, une interface Processor « extends » Player. Donc un processeur fonctionne à peu près de la même façon, la différence est que l’on contrôle le traitement effectué dans le processeur. Le flux sortant d’un processeur peut être récupéré par un autre processeur, ou par un lecteur.

Un processeur a aussi les 6 états du lecteur plus 2 : Configuring et Configured. Qui sont à placer entre les états Unrealized et Realizing.

Configuring (en cours de configuration) : Le processeur entre en état Configuring quand la méthode configure() est appelée. Un processeur a atteint cet état quand il a accès à la source de données, qu’il l’a démultiplexée et qu’il a accès aux informations concernant le format.
Configured (configuré) : Le processeur passe en état Configured quand il s’est connecté à la source de données et qu’il a fini de déterminer le format.


Datasink
Un Datasink récupère le média d’une source de données et le redirige vers une destination. Un Datasink permet par exemple d’enregistrer un média dans un fichier.

Format
Un objet format contient le format exact d’un media. Il ne contient pas de paramètres spécifiques d’encodage ou d’information sur la durée, il donne seulement le nom du format d’encodage et le type de données nécessaires.

Manager
Un manager est un objet un peu spécial qui permet de faire la jonction entre les différentes éléments vus ci-dessus. Il permet par exemple de créer un lecteur à partir d’une source de données. JMF fournit 4 managers :
Manager : Pour créer des lecteurs, processeurs, sources de données et DataSinks. Par exemple il peut créer un lecteur à partir d’une source de données.
PackageManager : Contient la liste des packages disponibles dans les classes de JMF, à savoir des lecteurs, processeurs, sources de données et DataSinks spécifiques.
CaptureDeviceManager : Permet de gérer la liste des périphériques de capture disponibles.
PlugInManager : Gère la liste des plug-ins pour JMF.



Articles de la même catégorie

 Pages : Top


570 Visites
0 Commentaires
Création d'un site dynamique en PHP avec Dreamweaver et MySQL
[15 mn de lecture - paru le 11/4/2003 - Public : Débutant]

En savoir plus


462 Visites
1 Commentaires
Synthèse vocale sous PocketPC
[20 mn de lecture - paru le 11/4/2003 - Public : Expert]

En savoir plus


491 Visites
0 Commentaires
Speech Application SDK : Ajoutez de la voix dans vos applications ASP.NET
[50 mn de lecture - paru le 11/4/2003 - Public : Confirmé]

En savoir plus

   Tous les Articles


SUPINFO Training Center peut vous proposer une formation ...

   Devenez Ingénieur Système Microsoft en 35 jours avec SUPINFO Training Center
   Devenez Certifiés Cisco en 13 jours avec SUPINFO Training Center
   Devenez Administrateur Système Microsoft avec SUPINFO Training Center
   Devenez Développeur Microsoft .NET en 13 jours avec SUPINFO Training Center



Powered by Campus-Booster Technology
Conditions d'utilisation & Copyright | Respect de la vie privée
© Copyright 1965-2006 Supinfo Paris, Paris Academy of Computer Science
Supinfo, Ecole Supérieure d'Informatique et Paris Academy Of Computer Science are trade marks.
23, rue de Château LANDON - 75010 PARIS - Phone : +33 (0) 153359 700 Fax : +33 (0) 153359 701

Web site autided by :