# JMF -> Webcam (Linux)



## bazz-dee (8. Mrz 2007)

Nahmd,
also folgendes Problem.
Ich mussnen Prog schreiben das von Webcam bilder liest und diese verarbeitet. So weit so gut, JMF erkennt die Cam. Aber ich kann diese nicht initialisieren.


ubuntu 6.10
java 6
jmf 2.1.1


Hier der kurze Code: 
	
	
	
	





```
System.out.println("=> searching webcams");
		VideoFormat vidformat = new VideoFormat(VideoFormat.RGB);
		int count = CaptureDeviceManager.getDeviceList(vidformat).size();
		CaptureDeviceInfo cdinfo;
		if (count > 0)	{
			cdinfo = (CaptureDeviceInfo)CaptureDeviceManager.getDeviceList(vidformat).get(0);
			System.out.println("=> using " + cdinfo.getName());
			MediaLocator locator = cdinfo.getLocator();
			DataSource source;
			try {
				source = Manager.createDataSource(locator);
			} catch (NoDataSourceException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}else	{
			System.out.println("=> no webcam found. exiting");
			System.exit(0);
		}
```


das Programm liefert folgende Ausgabe:


```
=> searching webcams
=> using v4l:Pixart PAC207-BCA:0
java.io.IOException: java.lang.Error: Couldn't initialize capture device
javax.media.NoDataSourceException: Error instantiating class: com.sun.media.protocol.v4l.DataSource : java.io.IOException: java.lang.Error: Couldn't initialize capture device
	at javax.media.Manager.createDataSource(Manager.java:1012)
	at de.fhwf.MuMeTech.Cam.CamGrabber.<init>(CamGrabber.java:32)
	at de.fhwf.MuMeTech.Cam.CamGrabber.main(CamGrabber.java:53)
```


Komischerweise funktioniert das Capture von derWebcam über das in JMF enthaltene JMStudio.
Die bei google gefunden Lösung war folgendes in /etc/bash.bashrc einzutragen:


```
LD_LIBRARY_PATH=/home/bazz-dee/workspace/lib/JMF-2.1.1e/lib:/usr/lib/jvm/java-6-sun-1.6.0.00/lib/i386:/usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/i386/client
LD_PRELOAD=/usr/lib/jvm/java-6-sun-1.6.0.00/lib/i386/libjawt.so
```

Dies ändert bei mir allerdings gar nichts.


----------



## unicode (8. Mrz 2007)

Hi,

denke dass es dir nicht viel hilft aber ich poste trotzdem:

Habe auch mit jmf und java5 unter windows xp den strom aus der webcam gecaptured und das hat ohne probleme wunderbar funktioniert.
das kann aber auch an der webcam liegen: ich habe eine 20euro kamera von logitech kamera benutzt, ein kumpel von mir hat des mit der eingebauten kamera auf nem apple notebook mit ubuntu nicht hinbekommen.
wenn du windows xp zur verfügung hast  versuchs mal damit.

Gruß


----------



## unicode (8. Mrz 2007)

ich habe damals den quellcode von hier benutzt
forum.java.sun.com/thread.jspa?threadID=247253&start=0&tstart=0
versuchs mal damit.


Gruß


----------



## bazz-dee (8. Mrz 2007)

es funktioniert weder mit dem code aus dem java forum, noch funzt des auf meinen anderen rechner im win xp


----------



## unicode (8. Mrz 2007)

Hi,

dann versuch doch bitte den code aus der url..also bei mir lief der code auf zwei verschieden windows xp rechnern mit java5 und der logitech webcam. wie gesagt es ist schweirig für mich zu sagen wieso es bei dir nicht funzt. 
das jmf muß installiert sein, eine einbindung der jmf.jar ins projekt ist nicht ausreichend.

Gruß


----------



## bazz-dee (8. Mrz 2007)

ja jmf ist installiert, das jmstudio im bin ordner funktioniert auch, sogar das capturen.
aber selbst geprogged gehts nicht, auch der code aus dem link, direkt reinkopiert und nur das device angepasst funktioniert nich


----------



## unicode (8. Mrz 2007)

Hi,

mit komplex meine ich dass es viele gründe geben kann warum es bei dir nicht funktioniert. Wenn ich mich wiederhole so ist des nicht weil ich dich für nen Anfänger halte, sondern weil ich denke dass es bei dir an ner kleinigkeit liegt, warum es nicht funzt ;-)


-Also den code aus dem link habe ich laufen lassen auf einem windows xp system unter eclipse. auf dem rechner war das jmf installiert und das jmf.jar war in das projekt eingebunden. die webcam ist eine Logtich Webcam QuickCam Express (20€).
-Dasselbe Programm hat sowohl mit der Logitech Camera wie auch mit der Lego Mindstorms Webcam funktioniert sowohl auf einem Windows XP System wie auch auf einem Ubuntu Linux 6.06 Notebook von Apple. Das heißt es haben vier Kombinationen funktioniert. Wir haben Java5 benutzt.

-Warum es bei dir nicht funktioniert?

Falsche Java Version ?
Webcam ? Versuch ne andere vielleicht?


Hoffe es wird bei dir klappen 

Morgen ist auch ein Tag

Gruß


----------



## bazz-dee (8. Mrz 2007)

hmm ja, also ich hab immo java6 drauf, aber ich denke nich das esan der java version liegt.
cam hab ich eine speedlink cam, lsusb sagt:  Pixart Imaging, Inc. Easy Snap Snake Eye WebCam

und ja ich weiss ja auch nicht warum das jmf standard prog funktioniert, dazu gibt es ja leider keinen code


----------



## unicode (9. Mrz 2007)

Hi,

wie gesagt ich habe dir die bedingungen genannt unter denen das funktioniert hat. 
Vielleicht kennst du einen der ne logitech quickcam express hat? oder ne andere von logitech.
wie gesagt ich würde eine von meinen genannten konfigurationen ausprobieren..weil es kann zum beispiel wirklich an der webcam liegen und du verschwendest dann ne lange zeit umsonst. 
mystriös ist des schon dass die webcam in dem jmf studio erkannt wird und im programm selbst nicht...aber sorry ich weiß nicht warum. es könnte höchsten daran liegen dass du das jmf.jar nicht ins projektverzeichnis eingebunden hast wo das programm aus dem link drin ist. benutzt du eclipse?

gruß


----------



## bazz-dee (9. Mrz 2007)

ja das jmf.jar ist eingebunden, bin ja kein anfänger mehr wie du selbst festgestellt hast *gg
ich nutze auch eclipse.
des scheiss labor läuft echt darauf hinaus, dass wie ich vermutet habe das größte problem in der kommunikation mit der webcam liegt.

naja morgen mal weiter testen, vielleicht hat hier auch jemand anders noch nen rat für mich


----------



## bazz-dee (9. Mrz 2007)

hey, also im windows kann ich mitlerweile genau einen frame grabben, alle frames die ich danach grabbe sind gleich dem ersten, auch wenn ich mich vor der cam bewege. ne idee?


----------



## unicode (9. Mrz 2007)

Hi,

das hört sich schon alles gut an. Nö es sollte immer ein neues bild sein.
Versuchs mal an das testjpg ne nummer in den Dateinamen einzubauen und immer zu inkrementieren also test1.jpg, test2.jpg usw.
dann sollte das klappen, es sollte auch ohne aber versuchs mal so ;-)


----------



## Gast (9. Mrz 2007)

hmm ja das hatte auch mit test1 test2 nicht funktioniert, war ja das erste was ich getestet hatte.

aber das problem jetz das ich aus mehreren threads auf einen framegrabbe rzugreifen will. und da komtm jeweils nur das erste bild an komischer weise


----------



## bazz-dee (9. Mrz 2007)

öööhm das war ich grad


----------



## unicode (9. Mrz 2007)

Gut ich habe das Programm in einem Thread laufen lassen.
Aber das Problem liegt anscheinend in der Threadprogrammierung.
Versuch ob das in einem Thread richtig läuft, und dann kannst du dich um mehrere Threads kümmern. Naja wenn du auf dasselbe Frame von mehreren Threads zugreifen willst, gibt nen Deadlock unter Umständen. Also ich würde das mit Java Bordmitteln synchronisieren. 

Gruß


----------

