IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

Problème JMF récupération flux RTP


Sujet :

Multimédia Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Problème JMF récupération flux RTP
    bonjour,

    j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error:javax.media.NoPlayerException: Cannot find a Player for :rtp://localhost:22224
    pour le client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    import java.io.IOException;
    import java.net.InetAddress;
    import javax.media.*;
    import javax.media.rtp.*;
    import javax.media.rtp.event.NewReceiveStreamEvent;
    import javax.media.rtp.event.ReceiveStreamEvent;
    import javax.media.format.*;
    import javax.media.control.*;
    import javax.media.protocol.*;
     
    public class StreamingClient {
    	public static void main(String[] args) {
    		//Adresse de la Source
    		String SourceAddress = "rtp://localhost:22224";
    		//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);
    			if (player !=null) {
    				//Demarrage du Player
    				player.realize();
    				player.start();
    			}
    			else {
    				System.err.print("erreur");
    			}
    		}
    		catch (NoPlayerException e) {System.err.println("Error:" + e);}
    		catch (IOException e){System.err.println("Error:" + e);}
    		catch (CannotRealizeException e) {System.err.println("Error:" + e);}
    		}
    }
    avec le serveur de diffusion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    import java.io.IOException;
    import java.net.InetAddress;
    import javax.media.*;
    import javax.media.rtp.*;
    import javax.media.format.*;
    import javax.media.control.*;
    import javax.media.protocol.*;
     
    public class StreamingServer {
    	public static void main(String[] args) {
    		//Chemin du fichier
    		String FichierAdresse = "file:Test.mp3";
    		//Création du MediaLocator à partir du fichier
    		MediaLocator FichierLocator = new MediaLocator(FichierAdresse);
    		//Déclaration du processeur
    		Processor FichierCessor = null;
    		DataSource ds=null;
                    try {
    			//Création du Processor à partir du MediaLocator
    			try{
    				ds = Manager.createDataSource(FichierLocator);
    			}
    			catch(Exception e) {}  
    			FichierCessor = Manager.createProcessor(ds);  
    			//Appel des fonctions qui vont permettre le lancement du flux RTP
    			configure(FichierCessor);
    			SetSupportedFormat(FichierCessor);
    			//passer dans l'etat realized du processor
    			realize(FichierCessor);
    			//start     
    			Demarre(FichierCessor); 
    			launchRTPManager(FichierCessor);
    		}
    		catch(IOException e) {
    			System.out.println("Erreur : "+e.getMessage());
    		}
    		catch(NoProcessorException e) {
    			System.out.println("Erreur : "+e.getMessage());
    		}
    	}
    	public static Processor configure(Processor p)	
    	{
    		//Attendre tant que le Processor n'est pas configuré.
    		while(p.getState() < Processor.Configured) {
    			//Configuration du Processor
    			p.configure();
    		}
    		return p;
    	}
    	public static void SetSupportedFormat(Processor p) {
    		//On met la description du contenu de sortie à RAW_RTP
    		ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW_RTP);
    		p.setContentDescriptor(cd);
    		//On obtient les différentes pistes du processor
    		TrackControl track[] = p.getTrackControls();
    		for(int i = 0 ; i < track.length ; i++) {
    			//on obtient les formats supportés pour cette piste
    			Format suppFormats[] = track[i].getSupportedFormats();
    			//Si il y a au moins un format supporté
    			if(suppFormats.length > 0) {
    				track[i].setFormat(suppFormats[0]);
    				System.err.println("Track " + i +" est transmis as :"+suppFormats[0]);
    			}
    			else {
    				track[i].setEnabled(false);
    			}
    		}
    	}
    	public static Processor realize(Processor p) {
    		//Attendre tant que le Processor n'est pas réalisé.
    		while(p.getState() < Processor.Realized) {		
    			//Réalisation du Processor
    			p.realize();
    		}
    		return p;
    	}
    	public static void Demarre(Processor p) {
    		//Demarrage du Processor
    		p.start();
    		System.err.println("started");
    	}
    	public static void launchRTPManager(Processor p) {
    		//Creation du DataSource correspondant au Processor
    		DataSource OutputSource = p.getDataOutput();
    		PushBufferDataSource pbds = (PushBufferDataSource)OutputSource;
    		PushBufferStream pbss[] = pbds.getStreams();              
    		//Nouvelle Instance d'un RTPManager      
    		RTPManager rtpm[] = new RTPManager[pbss.length];
    		String AdressIp = "localhost";
    		//System.out.println("taille:" +pbss.length); RTPManager rtpm;
    		for(int i=0; i < pbss.length;i++) {
    			try {
    				rtpm[i] = RTPManager.newInstance();
    				int port = 22224 + 2*i;
    				//Création d'une SessionAddress 
    				SessionAddress localaddr = new SessionAddress(InetAddress.getLocalHost(),port);
    				//Initialisation du RTPManager 
    				rtpm[i].initialize(localaddr);
    				//Création d'une SessionAddress 
    				SessionAddress destaddr = new SessionAddress(InetAddress.getByName(AdressIp),port);
    				//Ajout de cette SessionAddress dans le RTPManager
    				rtpm[i].addTarget(destaddr);
    				System.err.println("Creation RTP session " + AdressIp + " port : "+port);                     
    				//Creation d'un SendStream à partir du DataSource				
    				SendStream ss2 = rtpm[i].createSendStream(OutputSource,i);
    				//Demarrage du SendStream
    				ss2.start();
    				System.out.println("Started ");
    			}
    			catch(Exception e){
    				e.printStackTrace();
    			}
    		}
    	}
    }
    Merci par avance pour votre aide.
    @++++
    Dominique

  2. #2
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    Salut,

    2 choses:

    1) je ne suis pas sur que le medialocator rtp://.... soit valide. A vérifier, mais j'ai un doute.
    2) lorsque tu travaille en local, il faut faire attention aux problèmes de ports.
    C'est a dire que tu utilise en envoi (serveur) le port 22224 en port source et destination. Ces ports ne sont plus dispo comme source et destination pour ton client. Il faut décaler les ports, par ex Serveur : source : 22224 dest: 22226; client : source : 22224 et dest : 22226

    Je n'ai pas vérifié ton code, mais la plupart du temps, ca vient de là.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 62
    Points : 57
    Points
    57
    Par défaut
    Bonjour je rencontre le même souci sauf que moi j'ai pas de serveur j'essaye de récupérer le flux video d'un camera ip. avez-vous trouvez une solution pour le client j'entend bien

Discussions similaires

  1. Problème de récupération de flux UTF-8
    Par bernidupont dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 13/06/2014, 13h39
  2. Problème récupération Flux RSS en Wifi
    Par zarktoune dans le forum Android
    Réponses: 5
    Dernier message: 04/05/2012, 12h40
  3. Réponses: 8
    Dernier message: 12/05/2005, 08h16
  4. Nouveau problème de récupération de valeurs.
    Par pmboutteau dans le forum ASP
    Réponses: 4
    Dernier message: 09/03/2005, 10h48
  5. Problème de récupération de texte de formulaire
    Par bigourson dans le forum Langage
    Réponses: 4
    Dernier message: 15/09/2004, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo