Hallo,
ich möchte eine Anwendung schreiben, die im LAN oder Internet einen Webcamstream ermöglicht. Da ich mit Videostreams bisher nur auf der Stelle getreten bin, habe ich mich erstmal dazu entschlossen einzelne Bilder zu übertragen. Das klappt auch ganz (damit: http://www.java-forum.org/netzwerkprogrammierung/99493-imageicon-ueber-socket-fehler.html).
Zudem ist das praktisch um z.B. die Framerate einzustellen um Traffic zu sparen (da es später auf einem Netbook mit Surfstick laufen soll).
Das funktioniert auch ganz gut, aber:
- Mit der Zeit baut sich eine wahnsinns Verzögerung auf (im Internet nach 2-3min sind es 20 Sekunden, im LAN auch > 5
Sekunden)
- Anzahl an Frames ist extrem gering (im LAN ca. 2 FPS maximal, im Internet 1/20)
Mit der Wartezeit in
habe ich schon herumexperimentiert. Das ändert jedoch nichts.
Die Internetleitung sollte schnell genug sein, MSN und co. laufen im Webcamchat ja auch prima.
Der Quellcode (Webcamauslesen läuft mit DSJ):
Sender:
Empfänger:
ich möchte eine Anwendung schreiben, die im LAN oder Internet einen Webcamstream ermöglicht. Da ich mit Videostreams bisher nur auf der Stelle getreten bin, habe ich mich erstmal dazu entschlossen einzelne Bilder zu übertragen. Das klappt auch ganz (damit: http://www.java-forum.org/netzwerkprogrammierung/99493-imageicon-ueber-socket-fehler.html).
Zudem ist das praktisch um z.B. die Framerate einzustellen um Traffic zu sparen (da es später auf einem Netbook mit Surfstick laufen soll).
Das funktioniert auch ganz gut, aber:
- Mit der Zeit baut sich eine wahnsinns Verzögerung auf (im Internet nach 2-3min sind es 20 Sekunden, im LAN auch > 5
Sekunden)
- Anzahl an Frames ist extrem gering (im LAN ca. 2 FPS maximal, im Internet 1/20)
Mit der Wartezeit in
Java:
Thread.sleep(x);
Die Internetleitung sollte schnell genug sein, MSN und co. laufen im Webcamchat ja auch prima.
Der Quellcode (Webcamauslesen läuft mit DSJ):
Sender:
Java:
socket = new ServerSocket(2000);
Socket so = socket.accept();
ObjectOutputStream oos = new ObjectOutputStream(so.getOutputStream());
ImageIcon img;
while(true){
try{
img = new ImageIcon(webcam.getImage());
oos.writeObject(img);
oos.reset();
oos.flush();
Thread.sleep(500);
}catch(Exception e){}
}
Empfänger:
Java:
Socket socket = new Socket("********", 2000);
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
ImageIcon imageIcon;
while((imageIcon = (ImageIcon) in.readObject()) != null){
image = imageIcon.getImage();
repaint();
}
in.close();
socket.close();