Webcam chat programmieren mit java?

hallo,

weiss jemand, mit welcher class man das tun kann?

Dank

Hallo,

weiss jemand, mit welcher class man das tun kann?

Hallo, da muss ich dich wohl enttäuschen, eine WebCamChat-Klasse gibts nicht in der Java-API. Das musst du wohl oder übel schon selbst programmieren. Also irgendwie musst du an den Videostream der Webcam ran. Den musst du dann komprimieren, z.B. mit MPEG4, und dann schickst du das Zeug per TCP oder UDP zu deinem Chat-Partner. Der muss das dann dekodieren können und das Video anzeigen.
Mit einer Klasse ist das sicherlich nicht abgetan (außer mit einer seeeehr großen *g*), du musst uns schon verraten, mit was du genau Probleme hast, damit wir dir helfen können.

mfg
deconstruct

vielen Dank fuer deine Antwort.

Ich wollte eine Java-API schreiben, mit der man sich per webcam mit anderen unterhalten kann. Diese API wird dann von der website untergeholt und auf dem lokalen pc installiert.
Meine genaue Probleme sind,

  1. wie erkennt java, ob im System ein WebCam installiert ist, wenn ja, wie kommt man an den Videostream an.
  2. wie wird dann den Videostram komprimiert.
  3. reicht es dann ein IP um den zu schicken.
  4. gibt es eine javaclass, die das Video dann anzeigt?

mfg

tom

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

  1. wie erkennt java, ob im System ein WebCam installiert ist,

„Java“ selbst erkennt das gar nicht. Das musst du schon selbst machen. Am einfachsten wärs, wenn du USB Webcams unterstützt, da - grob gesagt - alle anderen eh aussterben.
Es gibt im JCP gerade einen Entwurf für die Java USB API 1. Zwei Implementationen davon kenn ich, nämlich javax-usb 2 und jUSB 3
Damit kannst du den USB-Bus nach Webcams durchsuchen und auf den USB Bus zugreifen. Aber da die Spezifikation noch nicht mal endgültig ist, sinds die Implementationen natürlich auch nicht. Soweit ich das weiß, wird z.B. nur Linux und Windows halbwegs gut unterstützt, wobei die Linux-Implementation schon etwas weiter ist.

wenn ja, wie kommt man an den Videostream an.

Tja, das ist schon eine Ecke schwieriger. Entweder du entwickelst deinen eigenen Java-Treiber für die Webcam(s), oder du greifst auf plattformspezifische Dinge wie Video4Linux oder WDM zurück. Für den eigenen Treiber könntest du z.B. einen Blick in die Linux-Kernel-Sourcen werfen, wo es OpenSource-Treiber für diverese Webcams gibt. Dann siehst du zumindest, wie die das machen. Ob das dann in Java realisierbar ist (ist ja immerhin ne plattformunabhängige Hochsprache), ist natürlich eine andere Sache.
Einfacher ist IMO wenn du so Dinge wie Video4Linux oder WDM über JNI ansprichst. Diese schon bestehenden Frameworks erlauben dir a) nach Webcams zu suchen (du kannst das ganze USB zeug vergessen) und b) erlauben sie auch an den Videostream heranzukommen und ihn zu (de)komprimieren.

  1. wie wird dann den Videostram komprimiert.

Dazu brauchst du einen Codec. Sprich MPEG4 usw. Keine Ahnung obs davon eine Java-Implementation gibt.

  1. reicht es dann ein IP um den zu schicken.

?? Ich nix deutsch verstehen :wink:
Wenn du über TCP/IP schickst, dann „reicht“ es natürlich, wenn jeder Teilnehmer eine IP-Adresse hat. Dann kannst zu darüber kommunizieren.

  1. gibt es eine javaclass, die das Video dann anzeigt?

Hmm, BufferedImage vielleicht :wink: Du erhältst ja nach dem Dekomprimieren einen unkomprmierten Videostream. Aus dem werden einfach die Einzelbilder genommen und möglichst schnell übereinander gelegt.

Finally {} *g*
Kennst du dich überhaupt gut genug mit Programmierung aus? So ein Projekt ist nämlich kein Pappenstiel und alles andere als einfach. Ich glaube nämlich, dass dir das ganze eine Nummer zu hoch ist, oder täusche ich mich da in deinem Wissensstand? Das ganze ist jetzt nicht bös gemeint, sondern nur ein Tipp meinerseits zur Schwierigkeit des ganzen.

mfg
deconstruct

1 Like
  1. wie wird dann den Videostram komprimiert.

Dazu brauchst du einen Codec. Sprich MPEG4 usw. Keine Ahnung
obs davon eine Java-Implementation gibt.

Vielleicht mit JMF (Java Media Framework) ?
Ich würde den Codec auswählen der vom JMF unterstützt wird.

Gruß Christian

Hallo,
das hört sich doch interessant an:

http://java.sun.com/dev/evangcentral/totallytech/jmf…

Gruß
Jodus

Hi,

http://java.sun.com/dev/evangcentral/totallytech/jmf…

Jo, das ist ja genau, was der Mann braucht. Und ich bookmarks mir auch gleichmal, man weiß ja nie :wink:

mfg
deconstruct