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 113 114 115 116 117 118 119 120 121
| import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Vector;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Format;
import javax.media.Manager;
import javax.media.NoProcessorException;
import javax.media.Processor;
import javax.media.control.TrackControl;
import javax.media.format.AudioFormat;
import javax.media.format.UnsupportedFormatException;
import javax.media.protocol.ContentDescriptor;
import javax.media.protocol.DataSource;
import javax.media.rtp.InvalidSessionAddressException;
import javax.media.rtp.RTPManager;
import javax.media.rtp.SendStream;
import javax.media.rtp.SessionAddress;
public class Sender {
public Sender() {
// Declaration du CaptureDeviceInfo du Micro
CaptureDeviceInfo Micro = null;
// Recherche des CaptureDevices
Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat("LINEAR",11025,8,1));
// Creation des CaptureDeviceInfo pour le Micro et la Webcam
Micro = (CaptureDeviceInfo) deviceList.get(0);
// Declaration des Processors du Micro et de la Webcam
Processor MicroCessor = null;
try {
// Creation du Processor du Micro et de la Webcam
MicroCessor = Manager.createProcessor(Micro.getLocator());
MicroCessor = configure(MicroCessor);
SetSupportedFormat(MicroCessor);
MicroCessor = realize(MicroCessor);
Demarre(MicroCessor);
createRTPManager(MicroCessor);
} catch (IOException e) {
System.out.println("Erreur : " + e.getMessage());
} catch (NoProcessorException e) {
System.out.println("Erreur : " + e.getMessage());
}
}
public 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 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 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 void Demarre(Processor p) {
// Demarrage du Processor
p.start();
}
public void createRTPManager(Processor p) {
// Creation du DataSource correspondant au Processor
DataSource OutputSource = p.getDataOutput();
// Nouvelle Instance d'un RTPManager
RTPManager rtpm = RTPManager.newInstance();
try {
// Création d'une SessionAddress
// correspondant à l'adresse locale
SessionAddress localaddr = new SessionAddress(InetAddress
.getLocalHost(), 40000);
// Initialisation du RTPManager
// à partir de la SessionAddresse locale
rtpm.initialize(localaddr);
// Création d'une SessionAddress
// correspondant à l'adresse de destination
SessionAddress destaddr = new SessionAddress(InetAddress
.getByName("127.0.0.1"), 22224);
// Ajout de cette SessionAddress dans le RTPManager
rtpm.addTarget(destaddr);
// Creation d'un SendStream à partir du DataSource
SendStream ss2 = rtpm.createSendStream(OutputSource, 0);
// Demarrage du SendStream
ss2.start();
System.out.println("Started");
} catch (UnknownHostException e) {
} catch (IOException e) {
} catch (InvalidSessionAddressException e) {
} catch (UnsupportedFormatException e) {
}
}
} |
Partager