Sziasztok!

Egy nagyon egyszerű videostreaming progit szeretnék írni, az egyik progi megjeleníti egy webkamera képét, és el is küldi egy másik proginak, ami szintén megjeleníti.

Eddig jutottam:
Az UploaderClient.java megjeleníti a képet és elküldi
import java.awt.*;
import java.awt.event.*;
import javax.media.*;
import javax.media.protocol.*;
import javax.media.format.*;
import javax.media.control.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.util.Vector;

public class UploaderClient extends JFrame {
       public UploaderClient() {
        super("Uploader Client");
        Processor processor = null;
        Player player=null;
        try{
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            Vector devices = CaptureDeviceManager.getDeviceList(new VideoFormat(VideoFormat.YUV));
            CaptureDeviceInfo deviceInfo = (CaptureDeviceInfo) devices.elementAt(0);
            System.out.println(devices);
            DataSource webcamSource = Manager.createDataSource(deviceInfo.getLocator());
            MediaLocator destLoc = new MediaLocator("rtp://localhost:1111/video/1");
            processor = Manager.createProcessor(webcamSource);
            processor.configure();
            while(processor.getState()==Processor.Configuring) {
                Thread.sleep(1000);
                System.out.println("configuring...");
            }
            processor.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW_RTP));
            processor.realize();
            while(processor.getState()!=Processor.Realized) {
                Thread.sleep(1000);
                System.out.println("realizing...");
            }
            processor.prefetch();
            while(processor.getState()!=Processor.Prefetched){
                Thread.sleep(1000);
                System.out.println("prefetching...");
            }
            TrackControl[] trackControl = processor.getTrackControls();
            for (int i=0; i<trackControl.length; i++) {
                if (trackControl[i].setFormat(new VideoFormat(VideoFormat.H263_RTP))!=null)
                {
                   break;
                }
                else trackControl[i].setEnabled(false);               
            }
            System.out.println(processor.getDataOutput());
            DataSink dataSink = Manager.createDataSink(processor.getDataOutput(), destLoc);
            dataSink.open();
            dataSink.start();
            //System.out.println(deviceInfo);
            if (processor!=null) System.out.println("processor ok");
            if (processor.getDataOutput()!=null) System.out.println("DataSource ok");
            if (processor.getDataOutput().getLocator()!=null) System.out.println("MediaLocator ok");
            /*player = Manager.createPlayer(processor.getDataOutput());
            JPanel p = new JPanel(new BorderLayout());
            p.add(player.getVisualComponent());
            p.add("South", player.getControlPanelComponent());*/
            JPanel p = new JPanel(new BorderLayout());
            player=Manager.createRealizedPlayer(webcamSource);
            p.add(player.getVisualComponent());
            setContentPane(p);
            setSize(640, 480);
            setVisible(true);
            player.start();
        } catch (Exception ex) {ex.printStackTrace();} finally {
            //System.out.println("Final");
            //processor.close(); processor.stop(); processor.deallocate();
            //player.close(); player.stop(); player.deallocate();
        }
    }  
    public static void main(String[] args) {
        new UploaderClient();
    }
}

Az RTPServer.java megkapja a képet az UploaderClient-től és megjeleníti:
import java.awt.*;
import javax.media.*;
import javax.media.protocol.*;
import javax.media.format.*;
import javax.media.control.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.util.Vector;

public class RTPServer extends JFrame {   
    public RTPServer() {
        super("Server");
        System.out.println("super");
        Player player=null;
        try{
        MediaLocator url = new MediaLocator("rtp://localhost:1111/video/1");
        System.out.println(url+" "+player);
        player = Manager.createRealizedPlayer(url);
        System.out.println("player");
        //player.realize();
        //System.out.println("realizing started on: "+player);
        //setDefaultCloseOperation(EXIT_ON_CLOSE);   
        setLayout(new BorderLayout());   
        add(player.getVisualComponent());
        System.out.println("added");
        setSize(640, 480);
        setVisible(true);
        System.out.println("visible");
        }catch (Exception ex){ex.printStackTrace();}
        }

    public static void main(String[] args)
    {
        System.out.println("started");
        new RTPServer();  
    }
}
A baj az, hogy az RTPServer nem akarja létrehozni a playert, a realizálás közben megáll a progi (nem ér véget, csak nem akar továbbmenni), router mögül vagyok, de forwardolja az 1111es portot tehát azzal elvileg nem lehet baj....

Remélem tudtok segíteni,
Crystal