# Webcambild abfangen



## naroX (5. Jul 2011)

Hallo,
ich möchte mittels Java das Bild von der Webcam bekommen.
Ich habe mich schon im Internet ein bisschen schlau gemacht und bin auf JMF-Java Media Framework gestossen, allerdings möchte ich eine beliebige USB-Webcam benützen(dynamisch) ohne das ich vorher irgendetwas groß installiere. Ich habe auch von FMJ gehört nur weiß ich nicht ob es da möglich ist.
Gibt es noch andere APIs oder ist Java eher dafür ungeeignet, die Webcam dynamsich zu verwenden?

mfg Narox


----------



## Kr0e (5. Jul 2011)

Generell ist Java+Media  keine gute Mischung leider... Es gibt natuerlich Loesungen, einige davon sind recht umfangreich aber dafuer veraltet und manche sind neu aber dafuer mit vielen Kinderkrankheiten gespickt...

JMF + FMJ mag ich IMHO ueberhaupt nicht... Funktionieren tun beide nur so halb und es gibt einen regelrechten Codec-Wirwar. Doch wenn du eines der Beiden nehmen willst, greif zu FMJ, das ist neuer und besser.

Eine andere Loesung waere z.B. eine native Bilbiothek wie z.B. GStreamer oder VLC zu nehmen und dann mit den entsprechenden Javawrappern darauf zugreifen... Die Wrapper-Projekte heissen GSTreamer-Java (Ich glaub LGPL!) und VLCj (GPL v3 leider...). Ich denke, dass auch bei VLC der Webcamzugriff durchaus funktionieren sollte. Bei GStreamer-JAva auf jeden Fall. Mit diesen Frameworks hsat du dann noch die tolle Moeglichkeit, die Webcamdaten sogar zu streamen...

Gruss,

Chris


----------



## naroX (5. Jul 2011)

Danke für deine schnelle Antwort, aber ich hätte noch ein paar Fragen.
Muss der Benützer dann noch etwas installieren bevor er das Programm verwenden kann?
Welche Programmiersprache würden sich dafür eher eignen?


----------



## Kr0e (5. Jul 2011)

Nein, der Benutzer muss nix installieren...

Also Java hat natuerlich den Vorteil, auf jeder Plattform zu laufen... Wenn du mit Windows zufriedenwaerst, wuerde ich dringend zu C# raten bei solchen Anliegen. Da kannst du mit DirectShow aus dem Problem nen 10 Zeiler machen^^ Ok, vlt sinds mehr Zeilen.. aber es ist um einiges einfacher ;-)


----------



## naroX (5. Jul 2011)

Also ich bin mit Windows ganz zufrieden =P
Ich würde es halt gerne mit Java machen, da ich mich da am Besten auskenne ^^
Werde mir aber das mal in C# anschauen


----------



## Kr0e (5. Jul 2011)

Mit C# und vorallem in Verbindung mit .NET4 (awesome!) wird der Einsteig sehr leicht fallen..


----------



## naroX (5. Jul 2011)

weißt du da irgendwelche guten Tutorials??

Noch eine andere Frage: Wenn ich jz zum Bsp. doch FMJ benützen würde, funktionieren da nur bestimmte webcams?


----------



## Kr0e (5. Jul 2011)

Meines Wissens nach, klappen generell alle Webcams, die auf dem OS isntalliert sind. Sprich das OS muss diese Webcam ansprechen koennen... Ab dann kann man sich alle verfuegbaren Webcams von FMJ/JMf auflisten lassen.... 

Hab zwar mit c# noch nie ne Webcam angesprochen... Aber hab was gefunden im Netz...

Versatile WebCam C# library - CodeProject


----------



## naroX (5. Jul 2011)

oke,
ich werds mal mit FMJ probieren und sonst dann eben mit c#
danke für die entte hilfe =)


----------



## pexx (14. Jul 2011)

hi,
ich war auch ne weile auf der suche nach libs um verschiedene cams mit java anzusprechen. 

DSJ - DirectShow Java Wrapper: humatic - dsj
gibts als 32 und 64bit version für windows und unterstützt jede cam die ich gefunden hab 

JMyron - Myron (WebCamXtra) - Computer Vision & Well Connected Motion Tracking
ist wohl eine lib die auch processing benutzt. hat bis jetzt auch jede cam unterstützt und soll auch unter mac und linux funzen (hab ich nicht getestet). leider bietet es keine möglichkeit unter mehreren (am system angeschlossenen cams) zu wählen.

Xuggler - Xuggle Xuggler
hab ich noch nicht ausprobiert aber sieht vielversprechend aus

falls jemand ergänzungen hat, immer her damit 
beste grüße


----------



## Hannes001 (15. Aug 2011)

Guten Tag,
mich plagt genau das selbe Problem und ich hätte gerne eine Lösung mit FMJ. Das FMJ Studio funktioniert eigentlich ganz zuverlässig (auf auf verschiedenen Windows Installationen - Das hat mit JMF leider nicht so geklappt.). Um mal etwas mehr ins Detail zu gehen: Die Herausforderung besteht für mich darin ein einzelnes Bild zu extrahieren. Das anlegen, realisieren und starten des Players funktioniert offensichtlich ganz gut. In JMF konnte man die Bilddaten dann mittels einer FramGrabbingControl (via player.getControl("javax.media.control.FrameGrabbingControl")) extrahieren. Das wiederum funktioniert mit FMJ nicht. Hat hier jemand bereits Erfahrung sammeln können?
Vielen Dank und viele Grüße,
Hannes


----------

