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
| 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;
class Recevoir extends Thread implements ReceiveStreamListener
{
String IP;
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 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.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