Bild einer Webcam auffangen

Hallo liebes Java-Forum, ich bin neu hier.

Ich kenne Java eigentlich schon gut, bin aber trotzdem nicht der Profi. In der letzten Zeit habe ich mich für die Multimediaprogrammierung interessiert und will nun das Bild meiner Webcam auffangen.
Dies soll dann vorerst mal ganz einfach in einem JFrame angezeigt werden.

Weiss jemand wie ich meine Webcam ansprechen kann oder wo ich das nachlesen kann?
Hab im Internet (und auch in disem Forum) schon danach gesucht und bin auf das JMF gestossen, bin daraus aber nicht schlau geworden.

Grüsse
Adrian
 
Vielen Dank für die so schnelle Antwort!

Naja, wenn ich das Forum so durchsuche dann finde ich nichts, was ich verstehen oder mir weiterhelfen würde :(

Danke trotzdem...
 

Kr0e

Gesperrter Benutzer
Dein Vorhaben ist schwer und wenn es dann mal klappt, nutzt du vermutlcih JMF/FMJ was wiederum veraltet ist und nicht mehr entwickelt wird. Die kurze Antwort wrid dir nicht gefallen: Alles was mit Video/Webcam/Audio zu tun hat, ist bei Java nur über Umwege möglich. Aus meiner Sicht ist die Rangfolge der Schwierigkeitslevel so:

Am einfachsten: Audio

Immernoch relativ einfach bis mittelschwer: Video

Schwer: Webcam


Es gibt endlose Probleme, die von Leuten stammen, die ein und das selbe Programm auf unterschiedlichen Plattformen laufen lassen.
Mal klappt es.. mal klappt es nicht.

Multimediaprogrammierung ist ein sehr schweres Thema in Java. Du musst nich nur sehr gutes Javawissen vorweisen sondern auch viele Frameworks kennen, damit du entstehenende Probleme über andere Wege lösen kannst.

Ein Beispiel dazu: Du kannst mit Xuggler recht viel im Bereich multimedia machen. Ausnahme: MP3. -> klappt einfach nicht.
Außerdem gibt es sowohl Xuggler als auch Gstreamer-java(eine andere gute Medienlib) nur für 32 bit systeme...

Mit JMF ist Webcam relativ gut zu realisieren. Allerdings klappen manche Webcams nicht... Mit JMF Videos abspielen ist wiederum zum ******. Alles in allem sehr kompliziert.

Als nächstens würde sich die Frage stellen, ob dann überhaupt JAVA wirklich die erste Wahl ist. Immerhin gibt es keine perfekte Sprache. Angenommen du willst nur auf Windowsplattformen arbeiten ("nur" is gut, 80-90% benutzen windows), wäre es Unsinn Java zu nehmen.

C# ist fast wie Java aber dort kannst du DirectShow nehmen. Damit ist alles im Bereich Multimedia nur ein 10 Zeiler... maximal.

Du musst halt einfahc überlegen was du machen willst und dann die beste Sprache anwenden. Java ist eigentlich nicht gemacht für Multimedia und du solltest viel Motivation mitbringen, da das teilweise ziemlich deprimierend sein kann. Irgendwas klappt nicht und du und alle anderem im Forum haben keine Ahnung woran es liegt, dabei hast du dann nur ein 64bit system und nutzt vlt 32bit Libraries... Oder ähnliche Probleme... Damit wollte ich jetzt in keinster Weise dieses Forum schlecht machen, es geht darum, dass man oft nicht beschreiben kann, was genau kaputt ist, sondern schlicht und eifnach von JNA eine "Klappt nicht Exception" ins Gesicht bekommen kann und keiner hat genug Wissen über dein System/Konfiguration um es zu lösen. Außerdem musst du daran denken, wie das dann mal bei einem kommerziellen Projekt werden soll, wenn deine Software bei 50% der Leute abschmiert.

Und wenn du aus der suchfunktion nicht schlau wirst, dann wirst du mit Medienprogrammierung auch ncih weitkommen. Du musst dort ständig in alten Foren blättern (weil eben viele Frameworks veraltet sind und nicht mehr aktiv entwicklet werden .. ergo kein support).

Das alles soll dich nicht entmutigen, aber dir zeigen, dass es recht schwer ist. JMF/FMJ, GStreamer-Java, Jffmpeg, JMC, Xuggler, Vorbis/Theora (JTheora) sind stichworte, die dir helfen könnten.

Gruß,
chris
 

Kr0e

Gesperrter Benutzer
In C++ mit ffmpeg oder gstreamer. Kinderspiel. Gstreamer-java ist ein guter Wrapper aber noch stark in der Entwicklung mit null Doku.
Vlt wird das aber iwann mal besser. Allerdings gilt das gleiche wie für java. Kein 64 bit. MAcht aber bei C++ Programmen nichts aus...
Bei Java scon: Wenn jemand enie 64 bit JVM drauf hat , müste er extra eine neue 32 bit jvm installieren, nur damit es läuft...

In C++ kannst du dann auch direkt DirectShow nehmen für Windows.
 
Vielen Dank für die Antworten

Ich wusste schon dass es schwierig werden wird, da ich mich ja in diesem Bereich überhaupt nicht auskenne.
Eigentlich soll das ganze ja nicht mit Videoaufzeichnung oder Wiedergabe sein, sondern "nur" ein Bild aufnehmen und speichern, damit ich dann das Bild "analysieren" kann (Farberkennung).

Und das grosse Problem mit der Plattformabhängigkeit war mir schon im voraus bekannt. Das muss ich dann halt so hinnehmen.

PS: Das Forum hier ist das Beste!
 

Kr0e

Gesperrter Benutzer
Nun, wenn es dir lediglich um das Bild geht und nicht um Plattformunabhängigkeit beim ERstellen des Bildes, kannst du doch einfach DirectSchow nehmen unter Windows. (Sofern du Windowsuser bist)

DirectShow Java Wrapper: humatic - dsj

Das ist der DirectShow wrapper, klappt gut udn kann sehr viel... Schaus dir mal an, wenn du willst ;)

Gruß,

Chris
 
Vielen Dank für den Java Wrapper!!

Ich konnte ihn erfolgreich installieren. Jetzt habe ich noch ne frage zu der Webcam:
Kann ich da eigentlich jede Webcam nutzen?
Wenn nicht, welche gehen nicht? Auf was muss ich achten?
 

Kr0e

Gesperrter Benutzer
Mit dem Wrapper für Windows gehen alle die unter Windows unterstützt sind ;) Ergo: Klappt eine Webcam unter Windows so klappt sie auch mit DirectShow und Java ;) Aber halt nicht für Mac/Linux...

Gruß,

Chris
 
G

Gast2

Gast
Nimm einfach eine IP Webcam die einen MJPEG Stream über HTTP zur Verfügung stellt, z.B. D-Link DCS-900. Dann ist das ganze Thema in 20 Zeilen Code ohne irgendwelche Multimedia Frameworks, JNI, DirectShow usw gegessen.

1) HTTP Connection öffnen
2) Vom Stream lesen und immer schön Frame für Frame wegspeichern, im MJPEG Format sind Trenner (Header Informationen für das jeweils folgende Bild) drin
3) HTTP Connection schließen
Fertig.
 
Hallo,
Ich hab da mal was zusammengebastelt und bis jezt funktioniert das auch. Die Konsole gibt mir den Namen meiner Webcam an, also hat er sie erkannt! *freu*

Java:
package videocapturing;

import de.humatic.dsj.*;
import de.humatic.dsj.DSCapture.CaptureDevice;
import de.humatic.dsj.DSFilter.DSPin;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

class SwingCapture {

    public static void main(String[] args) {
        DSCapture cap = new DSCapture(1, new PropertyChangeListener() {

            public void propertyChange(PropertyChangeEvent evt) {
            }
        });

        CaptureDevice device = cap.getActiveVideoDevice();
        System.out.println(device.getName());
        
    }
}

Mir fehlt jezt aber leider der Ansatz. Ich glaube ich muss einen Stream erstellen, der dann direkt auf ein JPanel abgebildet wird. Ich finde aber in der doc vom dsj keine Methode/Klasse für das streamen. Sollte meiner Meinung nach irgendwo beim "CaptureDevice" sein.
 

Kr0e

Gesperrter Benutzer
Hi,

schau mal hier: DirectShow Java Wrapper: humatic - dsj

Da ist oben ein Link "SimpleCapture"...

Dort wird alles mit Code zusammen erläutert....

@Fassy: Das mit HTTP Webcam hab ich noch nie gehört und ich finde es von der Idee her ziemlich gut !
Ist eine "IP Webcam" der REgelfall ? Ich meine, keiner will sich extra ne neue Webcam kaufen nur damit das JAVA programm klappt welches nur mit IP Webcams umgehen kann... Wenn das der Regelfall ist bei WEbcams, fänd ich das in der Tat ziemlcih cool!

Gruß,

Chris

PS: Die Webcam, die von dir genannt wrude, kostet ja ein Vermögen und wäre nicht tragbar für normale Anwender, nur damit ein Java Programm läuft :D:D
 
T

tuxedo

Gast

Kr0e

Gesperrter Benutzer
Finde 66 Euro nicht grad billig für eine Webcam... Außerdem viele haben eine normale Webcam schon integriert in ihrem Laptop, die wollen sich garantiert keinte 2te kaufen... Wie ich sehe, ist das offenbar bei preisgünstigeren Webcams (15-20€) nicht der Fall mit HTTP Unterstützung. VOn daher empfehle ich dir die Softwarelösung...
 
T

tuxedo

Gast
Nein, billig ist es nicht. Aber wenn man schaut was eine anständige USB Webcam kostet und was die von Haus aus kann, dann sind rund 60EUR für ne netzwerktaugliche Cam nicht wirklich teuer.

Klar, für nen Schüler sind 60EUR wohl immer noch viel (wobei.. wenn man schaut was die heute si an Taschengeld bekommen...). Für alle anderen, die für ihre Programmiererei jeden Monat Geld aufs Konto bekommen sind 60EUR nicht wirklich der Rede wert.

Aber man muss auch noch berücksichtigen für welchen Zweck man die Cam will.

Will man Videotelefonie mit Skype und Co. machen ist so eine Netzwerkcam nicht unbedingt geeignet.
Will man hingegen die Bilder im Netzwerk verteilen oder auf nen Webserver laden (traditioneller Webcam-Ansatz), dann lohnt sich so ein Teil auf jeden Fall: Man braucht keinen Rechner und auf der Stromrechnung fällt der Betrieb der Cam auch nicht wirklich auf (im gegensatz zu einer USB Webcam die einen Rechner benötigt).

Wie immer gilt also: "It depends ..."

- Alex
 
Wow, vielen Dank!


@Kr0e: Auf dieser Seite mit dem Beispielcode war ich schon, hatte nur nicht die Links oben gesehen. Ich hab dank dir jetzt herausgefunden, wie ich das Bild auf das JFrame bekomme und es hat auch geklappt! Man muss halt wissen wo und wie, aber sonst wars einfach. Ich versuche jetzt noch herauszufinden, wie ich einen Screenshot speichern kann. Danke schon mal für alles!!

Gruss
Adrian
 

Kr0e

Gesperrter Benutzer
Einen Screenshot vom kompletten Monitor ? Das geht mit "Robot.createScreenCapture(Rectangle screenRect) " Als Ergebnis bekommste ein BufferedImage. Das schreibst du mit ImageIO.write(image, "PNG", pathToFile); auf die Festplatte...

Gruß,

Chris
 
M

Madman

Gast
Versuche doch mal von dem ein Graphics-Objekt zu bekommen.

Meist irgendwie mit
Java:
Graphics g = cap.getGraphics();
Und dieses Objekt kannst du auf ein BufferedImage schreiben und das dann speichern...



Grüße
Madman
Irrenhaus AG: Startseite
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S Wie kann ich ein Bild in einen Frame einfügen? Spiele- und Multimedia-Programmierung 2
U DPI von einem Bild definieren Spiele- und Multimedia-Programmierung 5
J Bild ohne Quallitätsverlust skalieren Spiele- und Multimedia-Programmierung 11
Silvascus Bild --> JFrame Hintergrund Spiele- und Multimedia-Programmierung 3
D getsubimage aus BufferedImage und Rueckwandlung in ein ImagePlus bild Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
windl EXIFF Header in ein Bild schreiben Spiele- und Multimedia-Programmierung 0
L Bild in Richtung Maus drehen Spiele- und Multimedia-Programmierung 4
B Bild ohne Image auf die Festplatte streamen Spiele- und Multimedia-Programmierung 4
R [lwjgl] Cursor -> versetzt Zeichnen / Bild ist umgedreht Spiele- und Multimedia-Programmierung 2
F [JMyron] Bild von int[] zu BufferedImage Spiele- und Multimedia-Programmierung 2
Hoppelmann Alphamap (Bild) für 3D-Terrain generieren Spiele- und Multimedia-Programmierung 2
K Bild von USB-Webcam über JMF Spiele- und Multimedia-Programmierung 2
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
S Wolken Bild/Grafik vom Programm erstellen lassen Spiele- und Multimedia-Programmierung 11
P Bild Pixelweise auslesen Spiele- und Multimedia-Programmierung 13
K Bild berührt Bild Spiele- und Multimedia-Programmierung 29
aze Nicht rechteckiges Bild zeichnen Spiele- und Multimedia-Programmierung 5
lumo LWJGL - Bild rendern Spiele- und Multimedia-Programmierung 16
A .jpg-Bild auf andere Position verschieben Spiele- und Multimedia-Programmierung 4
F Bild im sourcecode Spiele- und Multimedia-Programmierung 32
F Bild einfärben Spiele- und Multimedia-Programmierung 5
J JOGL - Bild wird immer wieder weiß Spiele- und Multimedia-Programmierung 2
Q Rechteck in BIld suchen Spiele- und Multimedia-Programmierung 8
M Bild kopieren Spiele- und Multimedia-Programmierung 2
S Bild capturen mit direcShow Spiele- und Multimedia-Programmierung 2
B Character Bild links/rechts Spiele- und Multimedia-Programmierung 19
Developer_X Bild Größe einstellen Spiele- und Multimedia-Programmierung 2
ARadauer bild in bild suchen Spiele- und Multimedia-Programmierung 6
M 2D - Bild um y-Achse drehen Spiele- und Multimedia-Programmierung 9
S Bild spiegeln Spiele- und Multimedia-Programmierung 7
N Farberkennung und -ersetzung in einem Bild Spiele- und Multimedia-Programmierung 2
G Palette aus Bild extrahieren Spiele- und Multimedia-Programmierung 5
A Wasserzeichen auf Bild Spiele- und Multimedia-Programmierung 2
G Paintsurface ins Bild konvertieren Spiele- und Multimedia-Programmierung 8
M Sich nach links verschiebendes Bild Spiele- und Multimedia-Programmierung 2
F Bild generieren Spiele- und Multimedia-Programmierung 3
J Animation hinter transparentem Bild auf der GlassPane Spiele- und Multimedia-Programmierung 6
A Kein Bild Spiele- und Multimedia-Programmierung 3
T Bild als mehrdimesionaler Array Spiele- und Multimedia-Programmierung 4
H Bild von Webcam laden Spiele- und Multimedia-Programmierung 4
P Bild, Pixel- / Bereichsfarbe auslesen Spiele- und Multimedia-Programmierung 12
G start Bild einfrügen in ein Java Spiel Spiele- und Multimedia-Programmierung 7
Quaxli off-topic: HDR-Bild errechnen Spiele- und Multimedia-Programmierung 3
P linie in bild zeichnen Spiele- und Multimedia-Programmierung 2
G Auf Tastendruck bild verschieben Spiele- und Multimedia-Programmierung 5
O ich hab da ein problem mit nem bild Spiele- und Multimedia-Programmierung 8
C JPEG oder BMP Bild erstellen Spiele- und Multimedia-Programmierung 5
A Bild im Raum darstellen (Texture2D) Spiele- und Multimedia-Programmierung 4
V Wie berechnet man das Bild eines Schwarzen Loches in Java? Spiele- und Multimedia-Programmierung 10
K Einzelne Pixel in einem Bild lesen Spiele- und Multimedia-Programmierung 5
N Bild zu zeichnen (drawImage) klappt nur manchmal?? Spiele- und Multimedia-Programmierung 8
P repaint verschiebt das Bild Spiele- und Multimedia-Programmierung 2
S BMP-Bild Pixel für Pixel bearbeiten Spiele- und Multimedia-Programmierung 1
P 2D Bild drehen Spiele- und Multimedia-Programmierung 4
M durchsichtiges Bild nach clearRect Spiele- und Multimedia-Programmierung 8
M RGB-Bild in Graustufen-Bild umwandeln Spiele- und Multimedia-Programmierung 2
M Bild-Spiegelung mit Java! Spiele- und Multimedia-Programmierung 5
S Bild auf Bild = Nichts? Spiele- und Multimedia-Programmierung 3
S Bild in Speicherbild zeichnen = Nichts? Spiele- und Multimedia-Programmierung 3
N Bild im Panel ändern Spiele- und Multimedia-Programmierung 3
D nicht 4-eckiges bild auf Hintergrund bewegen Spiele- und Multimedia-Programmierung 2
R Bild drehen Spiele- und Multimedia-Programmierung 24
J Bild generieren Spiele- und Multimedia-Programmierung 5
X Bild auf aktueller position drehen Spiele- und Multimedia-Programmierung 2
K Java2d Bild als JPG oder so speichern Spiele- und Multimedia-Programmierung 10
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
M Audio Track einer Musik CD abspielen mittels vlcj-Bibliothek Spiele- und Multimedia-Programmierung 0
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
C Optimale Wegberechnung einer KI Spiele- und Multimedia-Programmierung 6
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
R Einfärben von Gemeinden auf einer Karte Spiele- und Multimedia-Programmierung 14
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
M Scrolling einer 2D Map Spiele- und Multimedia-Programmierung 8
J In einer While-Schleife auf Event warten Spiele- und Multimedia-Programmierung 3
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
F Download und Update einer Java-Anwendung Spiele- und Multimedia-Programmierung 10
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8

Ähnliche Java Themen

Neue Themen


Oben