Streaming RTP

Résolu
Signaler
-
Messages postés
15204
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 janvier 2022
-
je m'appelle boris et je veux développer une application client serveur pour le stream vidéo en java avec la jmf mais je butte sur rien en fait mais ca ne marche pas au fait voici mon code



pour la classe serveur :

package newserveur;

import java.io.IOException;

import javax.media.DataSink;
import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoDataSinkException;
import javax.media.NoProcessorException;
import javax.media.Processor;
import javax.media.control.TrackControl;
import javax.media.protocol.ContentDescriptor;
import javax.media.protocol.DataSource;

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:/camera.mpg";

//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://192.168.11.55:99/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());
}
}
}


et pour le client


package newclient;

import java.io.IOException;

import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.swing.JFrame;

public class Main
{
public static void main(String[] args)
{
//Adresse de la Source
String sourceAddress = "rtp://192.168.11.55:99/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
{ System.out.println("création du player");
// 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());
}
}
}


lorsque je compile le serveur se lance bien et le client aussi mais une fois qu'il est connecté sur la rtp de mon serveur il ne se passe plus rien . S'il vous plait aidez moi je n'y comprend plus rien

6 réponses

Messages postés
15204
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 janvier 2022
101
Hello Boris,
J'ai déplacé ta demande dans la section Java, qui est plus appropriée que le Bar.


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
Salut,

Qu'est ce qui ne marche pas, tu as une erreur ? Peux tu nous donner la trace ?

l'erreur revient au niveau de //Creation du Processor à partir du Medialocator
fichierCessor = Manager.createProcessor(fichierLocator);
dans la classe serveur
et parfois ca ne renvoie rien
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
Et quelle est la trace ?

Il faut que je précise que la compilation ne génère en réalité aucunes erreur mais le code ne fait rien
Messages postés
15204
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 janvier 2022
101
Hum...bien, on avance... Mais concrètement, que se passe t il? Tu as une erreur ? Que disent les traces ?


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...