Bonjour,
Je travaille sur un projet de carnet social à coder en java, et je m'occupe plus particulièrement de créer une communication par VoIP entre 2 pc.
J'ai trouvé des codes me permettant de me lancer dedans et me suis documentée sur internet (je débute en java), mais je n'arrive pas à recevoir les flux audio RTP.
Enfin je pense que cela vient de la réception car j'ai une méthode public synchronized void update(ReceiveStreamEvent event), qui n'est jamais appelée pour la réception du flux RTP. En effet, quand je regarde la console les System.out.println()de cette méthode n'apparaissent pas.
Comment fait-on pour appeler cette méthode ?
Et est-ce que l'erreur vient bien de cette fonction?
Cela fait un moment que je cherche comment résoudre ce problème, et j'ai vraiment besoin d'aide!
Merci
Voici le code de la classe contenant cette méthode :
import javax.media.*;
import javax.media.rtp.*;
import javax.media.rtp.event.*;
import javax.media.format.*;
import javax.media.control.*;
import javax.media.protocol.*;
import javax.media.protocol.PushSourceStream;
import javax.media.rtp.rtcp.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.net.*;
import javax.swing.*;
import javax.media.format.AudioFormat;
public class Recevoir extends Thread implements ReceiveStreamListener
{
public static String IP;
public static RTPManager AudioManager;
public static Player p;
Recevoir(String ip)
{
this.IP=ip;
System.out.println("IP de la source (l appelant):"+this.IP);
}
public void run()
{
//Instanciation du RTPManager
AudioManager = RTPManager.newInstance();
AudioManager.addFormat(new AudioFormat("LINEAR",8000,16,1),20);
try
{
//Creation d'une SessionAddress pour l'adresse locale
SessionAddress add = new SessionAddress(InetAddress.getLocalHost(),22224);
//Initialisation du RTPManager
//à partir de cette SessionAddress
AudioManager.initialize(add);
//Creation d'une SessionAddress pour l'adresse source
SessionAddress add2 = new SessionAddress(InetAddress.getByName(this.IP),40000);
//Ajout de cette SessionAddress dans le RTPManager
AudioManager.addTarget(add2);
}
catch(InvalidSessionAddressException e)
{}
catch(IOException e)
{}
//Ajout du Listener de Reception de Stream dans le RTPManager
AudioManager.addReceiveStreamListener(this);
System.out.println("Client Started\t...\tOK");
}
/****************************************************************/
/****************************************************************/
/* creation pour l'ecoute */
/****************************************************************/
/****************************************************************/
public synchronized void update(ReceiveStreamEvent event)
{
//Verification que l'event est un nouvel event
if(event instanceof NewReceiveStreamEvent)
{
System.out.println("New Reception\t...\tOK");
//Nouveau Flux Recu obtenu
ReceiveStream rs = event.getReceiveStream();
try
{
//Creation du Player sur ce flux
p = Manager.createRealizedPlayer( rs.getDataSource());
//Demarrage du Player
p.start();
System.out.println("lecture\t...\tOK");
}
catch(NoPlayerException e)
{}
catch(CannotRealizeException e)
{}
catch(IOException e)
{}
}
}
/****************************************************************/
/****************************************************************/
/* fermeture des flux RTP */
/****************************************************************/
/****************************************************************/
public void Arreter()
{
try
{
System.out.println("fermeture du player");
//p.stop();
p.close();
}
catch(Exception e)
{System.out.println("erreur de fermeture sur le close()du player:"+e); }
try
{
AudioManager.removeTargets("/bye");
AudioManager.dispose();
}
catch(Exception e)
{System.out.println("erreur de fermeture sur le dispose():"+e); }
}
}//fin de la classe
Partager