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());
}
}
}
Partager