# Webcam-Chat im Applet (ChatRoulette Klon)



## RawBit (30. Okt 2012)

Hallo,

dauerlangweilig wie mir immer ist, wollte ich mich an einem Chatroulette Klon in Java versuchen.

Nach etwas Programmierarbeit war (und bin) ich auf dem Stand von Omegle (wers nicht kennt: Das is wie Chatroulette nur ohne Cam und Mic)

So, nun musste ich aber voll Schrecken erkennen, daß Java wohl doch nicht so leicht die Webcam handeln kann, wie anfangs gedacht... Na gut, ich hab zwar eine Lösung gefunden, die benötigt aber dll's und ich will das schon plattformunabhängig halten.

Mit JMF hab ichs probiert, aber damit kommt Java 7 anscheinend nicht zurecht.

Gibt es eine Möglichkeit die Webcam über ein Applet anzusprechen ?

Dann würde ich die Bilder in einem Thread mit einer kleinen Verzögerung und dem ObjectStream per Server an den Client schicken.

Danke


----------



## tröööhöööt (30. Okt 2012)

kenne mich zwar so nicht mit den möglichkeiten aus die java von haus aus bereit stellt um auf sowas zuzugreifen ... aber ohne plattform-abhängige lib wird sich da wohl kaum was machen lassen ...

sowas ist nun mal sehr abstrakt ...

zu erst muss man dafür sorgen dass das os jegliche arten von webcams an einem zentralen punkt mit einer bestimmten api bereitstellt ... sonst müsstest du für jede cam deinen eigenen treiber mitbringen ...
dann musst du an diese zentrale stelle gelangen (was ohne native-libs garantiert nicht möglich sein dürfte) und dir von da aus die entsprechenden daten holen ...
diese müssen dann noch mit speziellen codecs verarbeitet werden ... wofür auch wieder libs nötig werden
zum schluss würde ich für die übertragung von bild und ton eher zu udp raten als zu tcp ... denn sonst wird der lagg irgendwann zu groß ...

der unterschied zu flash ist das dies alle diese nötigen libs schon mitbringt ... java hingegen ist für sowas eigentlich eher weniger gedacht und hat daher auch keine nötigen libs mit an board ...
ich denke dir wird nichts anderes übrig bleiben als für die großen systeme (win, unix, mac) spezielle clienten mit passenden libs zur verfügung zu stellen ...


----------



## RawBit (30. Okt 2012)

Naja, aber Java hätte schon so eine lib mitliefern können, meiner Meinung nach - auf eine Webcam zuzugreifen ist ja nichts abwegiges... Und mit SoundInput kann es immerhin auch umgehen

..... und da war ich mal der Meinung Duke müsste Flash doch problemlos überholen.. >.>


----------



## tröööhöööt (1. Nov 2012)

wie ich im letzten satz erwähnte : java wurde für sowas eigentlich nicht konzipiert ...

flash hat es halt geschafft einen standard zwischen webcam-herstellern, dem usb-standard (über die eigentlich jede webcam angeschlossen ist), verschiedenen OS und deren standard-schnittstellen und -teribern und der eigenen sprache zu etablieren bei mitlerweile alle mitziehen ...

wenn sich oracle jetzt noch was für java selbst ausdenken würde wäre es am sinnvollsten die anbindung system-schnittstelle<->flash nachzuprogrammieren und abei auf java anzupassen ...

ich habe zwar nicht gegoogled ... würde aber behaupten das es bereits entsprechende libs gibt ...
nachteil natürlich : um system-treiber zu laden brauchts ein signiertes applet ... was vielleicht auch ein weiterer grund ist ... denn einem applet freiwillig zu gestatten die sandbox zu verlassen macht man nur im äußersten notfall wenn es wirklich nicht anders geht ...


----------



## Kr0e (3. Nov 2012)

Flash oder Unity !!! Vergiss Java beim thema Media, glaub mir  Versuch mal ein H264 Video mit Swing abzuspielen. Viel Spaß.... 


Achja... Da du von Web redest... HTML 5 bietet in dieser Richtung massig viel an und das beste ... EINE API!


Man sollte nur in bestimmten Fällen zu Java greifen, es gibt so viele Werkzeuge für so viele Aufgaben.. Die Kunst des Programmierers ist, das richtige Werkzeug zu finden.
Hast du schonmal mit einem Telefon nen Nagel in die Wand gehauen ? Geht bestimmt auch.. iwie


----------



## OSBI_Fan (4. Nov 2012)

Hallo BigH,

*hier findest Du ein Webcam Logger für Java:*

http://www.java-forum.org/codeschnipsel-u-projekte/141466-webcam-logging-java.html

*Und hier der Thread: Aufzeichnung und Wiedergabe von Webcam*

http://www.java-forum.org/allgemeine-java-themen/141024-aufzeichnung-wiedergabe-webcam.html

Ich hoffe, das hilft Dir erst mal weiter.

Grüße
OSBI_Fan

OSBI = Open Source Business Intelligence


----------



## RawBit (5. Nov 2012)

OSBI_Fan hat gesagt.:


> Hallo BigH,
> 
> *hier findest Du ein Webcam Logger für Java:*
> 
> ...



Danke dir, werde mir das mal zu Gemüte führen.


----------



## Kr0e (5. Nov 2012)

Bedenke, dass das schwerste nicht das Aufzeichnen des Webcam Videos ist...

Ein ChatRoulette Klon würde auch eine entsprechende Serverausstattung fordern, bzw. du musst dafür einen Server programmieren. P2P wäre zwar besser aber wird schwer mit NATs.

Ich würde die Hürde mit dem Video niemals in Java machen. Applets sind wirklich deprecated.

Capturing Audio & Video in HTML5 - HTML5 Rocks

HTML 5 kann soviel, man sollte es wirklich  nutzen. Nimm Java dann für den Server...


PS: Iwie lustig das Javaprogrammierer als erstes daran denken "Oh gott, wie bekomme ich bloß die Webcam angesprochen "


----------



## tröööhöööt (5. Nov 2012)

Kr0e hat gesagt.:


> Bedenke, dass das schwerste nicht das Aufzeichnen des Webcam Videos ist...
> 
> Ein ChatRoulette Klon würde auch eine entsprechende Serverausstattung fordern, bzw. du musst dafür einen Server programmieren. P2P wäre zwar besser aber wird schwer mit NATs.
> 
> ...



gut ... für NAT würde ich dir jetzt UDP Hole Punching antworten ... kann zwar manchmal echt nervig werden wenns ne komplexe struktur ist ... aber irgendwie meist doch immer möglich ...

und zum ps : meine intention war nicht gleich mit "applets sind out" abzuwürgen sondern aufzuzeigen das wenn man sowas wirklich umsetzen will doch nicht ganz so super easy geht wie man es in flash gewohnt ist ...


----------



## RawBit (5. Nov 2012)

Kr0e hat gesagt.:


> Bedenke, dass das schwerste nicht das Aufzeichnen des Webcam Videos ist...
> 
> Ein ChatRoulette Klon würde auch eine entsprechende Serverausstattung fordern, bzw. du musst dafür einen Server programmieren. P2P wäre zwar besser aber wird schwer mit NATs.
> 
> ...



Man sollte vllt erwähnen, daß der Red5 - die Free Alternative zu Adobes spottbilligem Media Server - in Java programmiert ist... :b


----------



## Kr0e (5. Nov 2012)

Was genau sagt das jetzt aus ?

Red 5 ist ein Streamserver, ja. Aber das hilft dir nicht, wenn du Video-Chat zwischen Usern willst. Ganz davon abgesehen, hat Red 5 ja nichts mit Applets zu tun. Es sei denn, du willst den Traffic über einen Red 5 Server hin und wieder zurück laufen lassen.

Ich habe ja auch gesagt, dass wenn du Java nimmst, dann wohl besser für den Server und nicht für das Frontend.


PS: 

peer2peer webcam chat, get your free peer2peer chat.

Ne Lösung mit php, ist Open Source. Vlt. um Ideen zu holen..

EDIT2:

Direkt dazu: Real Time Media Flow Protocol - Wikipedia, the free encyclopedia


----------

