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

141 Visiteurs
3168 Projets


My Supinfo-Projects

   Connectez-vous
   Créez un Compte


Synopsis

   1046 Visites
   Note INTERNET : 16.5
    (15 Votants)
   6 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 - Pérennisation
Les bases du Protocole RTP en Java
[30 mn de lecture - paru le 5/11/2004 7:42:41 AM - Public : Confirmé]

Auteur

thirio_rRenaud THIRION
Elève-Ingénieur Supinfo Paris
Promotion SUPINFO 2005

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

4. Réception du RTP

Il existe différentes manières de réceptionner un flux. On n’est pas forcé d’utiliser un RTPManager, mais ce dernier offre une fois de plus de réels avantages.

4.1. A l'aide d'un MediaLocator

On peut réceptionner un flux sans utiliser de RTPManager. Pour cela, il suffit de créer un MédiaLocator sur l’adresse source et de créer un Player réalisé sur ce MédiaLocator.
Dans le cas d’un flux vidéo, on ajoute le composant visuel du Player (à l’aide de la méthode getVisualComponent()) dans une Fenêtre.
Enfin on démarre le Player.
Néanmoins, le gros défaut de ne pas utiliser de RTPManager est que dans ce cas, il faut absolument que la source aie commencé à émettre le flux lorsque l on lance le client.

//Adresse de la Source

String SourceAddress = "rtp://192.168.3.6:22224/video/1";

             

//Creation du MediaLocator avec l'adresse de la Source

MediaLocator SourceLocator = new MediaLocator(SourceAddress);

             

//Verification que la source existe

//dans le cas contraire, arret du programme

if(SourceLocator == null)

{

       System.out.println("no Source");

       System.exit(-1);

}

else

{

       System.out.println("Connected");

}

             

//Declaration du Player

Player player;

             

try

{

       //Creation du player réalisé à partir du Médialocator

       //de la source

       player = Manager.createRealizedPlayer(SourceLocator);

       //Demarrage du Player

       player.start();

                    

       //Creation d'une JFrame

       JFrame fenetre = new JFrame("Player");

       fenetre.setSize(160,140);

       //Ajout du Composant visuel du Player dans la fenetre

       //     (pour un flux vidéo)

       fenetre.getContentPane().add(player.getVisualComponent());

       fenetre.setVisible(true);

                    

}

catch (NoPlayerException e)

{

}

catch (IOException e)

{

}

catch (CannotRealizeException e)

{

}

4.2. Emploi du RTPManager

On peut aussi utiliser un RTPManager. Dans ce cas, on peut aussi utiliser l’évènement ReceiveStreamEvent, qui se produit lorsque l’on reçoit un flux : on n'est alors pas obligé de lancé le client avant le serveur.

4.2.1. Création du RTPManager

Pour instancier un nouveau RTPManager, il faut faire appel à la méthode statique newInstance() du RTPManager. Ensuite, de la même manière que sur le serveur, on utilise les méthodes initialize() et addTarget() pour le configurer.
Enfin, on utilise la méthode addReceiveStreamListener pour utiliser la méthode appelée par l’évènement ReceiveStreamEvent.

public class MainManagerReception implements ReceiveStreamListener

{

public static void main(String[] args)

{        

        new MainManagerReception();

}

      

public MainManagerReception()

{

        JFrame mainfra = new JFrame();

        mainfra.setVisible(true);

             

        //Instanciation du RTPManager

        RTPManager VideoManager = RTPManager.newInstance();

        VideoManager.addFormat(new VideoFormat(

               VideoFormat.H263_RTP),18);

             

        try

        {

               //Creation d'une SessionAddress pour l'adresse locale

               SessionAddress add = new SessionAddress(

                     InetAddress.getLocalHost(),22224);

               //Initialisation du RTPManager

               //     à partir de cette SessionAddress

               VideoManager.initialize(add);

                    

               //Creation d'une SessionAddress pour l'adresse source

               SessionAddress add2 = new SessionAddress(

                     InetAddress.getByName("192.168.3.6"),40000);

               //Ajout de cette SessionAddress dans le RTPManager

               VideoManager.addTarget(add2);

        }

        catch(InvalidSessionAddressException e)

        {

        }

        catch(IOException e)

        {

        }

        //Ajout du Listener de Reception de Stream dans le RTPManager

        VideoManager.addReceiveStreamListener(this);

        System.out.println("Client Started");

}

}

4.2.2. Gestion de l’évènement ReceiveStreamEvent

Cette méthode se produit lorsque l’on reçoit un flux. Il faut donc d’abord s’assurer que c’est un nouveau flux. Ensuite, on récupère le DataSource de ce flux et on crée un Player avec.
Enfin si, c’est un flux vidéo, on ajoute le composant visuel dans une nouvelle Fenêtre créée.

public void update(ReceiveStreamEvent event)

{

        //Verification que l'event est un nouvel event

        if(event instanceof NewReceiveStreamEvent)

        {

               System.out.println("New Reception");

               //Nouveau Flux Recu obtenu

               ReceiveStream rs = event.getReceiveStream();

               try

               {

                     //Creation du Player sur ce flux

                     Player p = Manager.createRealizedPlayer(

                            rs.getDataSource());

                     //Si le player a un composant visuel,

                     //     alors creation d'une fenetre

                     if(p.getVisualComponent() != null)

                     {

                            JFrame fenetre = new JFrame();

                            fenetre.setSize(160,140);

                            fenetre.getContentPane().add(

                                   p.getVisualComponent());

                            fenetre.setVisible(true);

                     }

                     //Demarrage du Player

                     p.start();

               }

               catch(NoPlayerException e)

               {

               }

               catch(CannotRealizeException e)

               {

               }

               catch(IOException e)

               {

               }

        }

}




Articles de la même catégorie

 Pages : Top


410 Visites
0 Commentaires
In the discovery of the registry
[20 mn de lecture - paru le 5/11/2004 2:10:00 AM - Public : Confirmé]

En savoir plus


220 Visites
0 Commentaires
Introduction to Delphi 8
[15 mn de lecture - paru le 5/11/2004 1:42:51 AM - Public : Confirmé]

En savoir plus


214 Visites
0 Commentaires
Development step by step of Paint in C# with GDI+
[60 mn de lecture - paru le 5/11/2004 1:33:24 AM - Public : Débutant]

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 :