Java Media Framework - Transmiting live captured with JMF
Hello I'm new here.I need some help how do i transmit live video from my webcam over a lan?
I try this but it doesn't work can someone helpe me , i really need this to my project .
Thank you.
david.pinto.araujo@gmail.com
mport java.io.*;
import java.util.*;
import javax.media.*;
import javax.media.protocol.*;
import javax.media.format.*;
import javax.media.control.*;
import javax.media.datasink.*;
import jmapps.util.StateHelper;
publicclass SendVideoCaptureV1{
private CaptureDeviceInfo di=null;
private Processor p=null;
private TrackControl track[]=null;
privateboolean encodingOk=false;
private DataSource ds=null;
privatestaticfinal ContentDescriptor ct=new ContentDescriptor(ContentDescriptor.RAW_RTP);
privatestaticfinal Format[] fr=new Format []{
new VideoFormat(VideoFormat.RGB)
};
StateHelper sh=null;
public SendVideoCaptureV1(){
VideoFormat format =new VideoFormat(VideoFormat.RGB);
//AudioFormat format = new AudioFormat(AudioFormat.LINEAR);
//detecta todos os dispositvos de video q suportam RGB
Vector devices=CaptureDeviceManager.getDeviceList(format);
//System.out.println(devices.toString());
if(devices.size()>0){
di=(CaptureDeviceInfo)devices.elementAt(0);
}
else{
System.exit(-1);
}
//criar o processor
try{
p=Manager.createProcessor(di.getLocator());
sh=new StateHelper(p);
//p=Manager.createRealizedProcessor(new ProcessorModel(ds,fr,ct));
}
catch(IOException io){
io.printStackTrace();
}
catch(NoProcessorException pe){
pe.printStackTrace();
}
//configurar o processor
//p.configure();
//bloquear ate estar configurado
if(!sh.configure(10000))System.exit(-1);
p.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW));
track=p.getTrackControls();
for(int i=0;i<track.length;i++){
if(!encodingOk && track<i>instanceof FormatControl){
if(((FormatControl)track<i>).setFormat(new VideoFormat(VideoFormat.JPEG_RTP))==null){
//if(((FormatControl)track<i>).setFormat(new AudioFormat(AudioFormat.GSM_RTP))==null){
track<i>.setEnabled(false);
}
else{
encodingOk=true;
}
}
else{
track<i>.setEnabled(false);
}
}
//ds=p.getDataOutput();
if(encodingOk){
if(!sh.realize(10000))System.exit(-1);
//p.realize();
try{
ds=p.getDataOutput();
}
catch(NotRealizedError ne){
ne.printStackTrace();
System.exit(-1);
}
try{
//String url="vfw://0 192.168.1.255:40000/video/1";
String url="rtp://192.168.1.255:40000/audio/1";
MediaLocator m=new MediaLocator(url);
DataSink d=Manager.createDataSink(ds, m);
d.open();
d.start();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
publicstaticvoid main(String []args){
SendVideoCaptureV1 sv=new SendVideoCaptureV1();
}
}

