Bonsoir
je voulais créer une application java qui va permettre a un client de lire a distance une vidéo chez un serveur (a l'aide de RTP) mais le problème réside dans code du client l’ouverture de la session RTP
Connected
Cannot create the RTP Session: Can't open local data port: 22224
Erreur null


======
code
package newclient;

import javax.media.*;
import javax.media.rtp.*;
import javax.media.rtp.event.*;
import javax.media.format.*;
import java.io.*;
import java.net.*;
import javax.swing.*;

public class Main
{
public static void main(String[] args)
{
//Adresse de la Source
String sourceAddress = "rtp://127.0.0.1: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 MediaLocator de la source
player = Manager.createRealizedPlayer(sourceLocator);
System.out.println("Création du player à réaliser");

// Demarrage du Player
player.start();
System.out.println("Demarrage du player réussie");

// 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)
{
System.out.println("Erreur " + e.getMessage());
}
catch (IOException e)
{
System.out.println("Erreur " + e.getMessage());
}
catch (CannotRealizeException e)
{
System.out.println("Erreur " + e.getMessage());
}
}
}
==============
package newserveur;

import javax.media.*;
import javax.media.rtp.*;
import javax.media.format.*;
import javax.media.control.*;
import javax.media.protocol.*;
import java.io.*;
import java.net.*;

public class Main {

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
// pour limiter les formats supportés

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é alors on met le premier
if (suppFormats.length > 0)
{
track[i].setFormat(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();
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

// TODO code application logic here
//Entrée de l'adresse du fichier
String fichierAdresse = "file://d:/b.avi";

//Création du MédiaLocator à partir de ce fichier
MediaLocator fichierLocator = new MediaLocator(fichierAdresse);

//Declaration du Processor
Processor fichierCessor = null;

try
{
//Creation du Processor à partir du Medialocator
fichierCessor = Manager.createProcessor(fichierLocator);

fichierCessor = configure(fichierCessor);

setSupportedFormat(fichierCessor);

fichierCessor = realize(fichierCessor);

demarre(fichierCessor);

System.out.println("Creation du processor a partir du Medialocator réussie");
}
catch(IOException e)
{
System.out.println("Erreur : " + e.getMessage());
}
catch(NoProcessorException e)
{
System.out.println("Erreur : " + e.getMessage());
}

//Creation du DataSource correspondant au Processor
DataSource fichierSource = fichierCessor.getDataOutput();

//Adresse de Destination
String outputAddress = "rtp://127.0.0.1:22224/video/1";

//Creation du MediaLocator pour l'Adresse de destination
MediaLocator outputLocator = new MediaLocator(outputAddress);

try
{
//Creation du DataSink
DataSink outputSink = Manager.createDataSink(fichierSource, outputLocator);
//Ouverture du DataSink
outputSink.open();
//Demarrage du DataSink
outputSink.start();

System.out.println("Started");
}
catch(IOException e)
{
System.out.println("Erreur" + e.getMessage());
}
catch(NoDataSinkException e)
{
System.out.println("Erreur" + e.getMessage());
}
}
}