# [JMF] Webcam wird nicht gefunden



## Petrolman (7. Mai 2010)

Hallo,
ich möchte in meiner Java Webstart/SWT Anwendung eine Webcam integrieren. Nur leider wird die Webcam mit JMF nicht gefunden, weder unter Linux noch unter Windows. Linux und Windows selbst zeigen, dass die Hardware angeschlossen ist. Die JAR-Datei der Applikation und die JMF.jar sind natürlich signiert und die Anwendung wird mit "all-permissions" geöffnet.

Es handelt sich um eine Logitech Webcam Pro 9000. Ich hatte mich an folgenden Beitrag orientiert Webcam ansteuern

Mit folgendem Code erhalte ich die Ausgabe: "The following 0 capture devices are knwon to the JMF" Also kein Gerät aber auch nicht "null"


```
[...]
    videoFormat = new VideoFormat(VideoFormat.RGB);

    Vector<CaptureDeviceInfo> devicelist = CaptureDeviceManager.getDeviceList(videoFormat);

    if (devicelist == null) {
      Report.print("No Capture devices known to JMF");

    } else {
      Report.print("The following " + devicelist.size() + " capture devices are known to the JMF");
      for (int i = 0; i < devicelist.size(); i++) {
        Report.print("\t" + devicelist.elementAt(i));
      }
    }

   [...]
```

Dann habe ich versucht, die Webcam direkt mit dem Standard-Locator "vfw://0" anzusprechen


```
mediaLocator = new MediaLocator("vfw://0");
```

und erhalte die Ausnahme: Cannot find a DataSource for vfw://0


Ist JMF überhaupt noch zu gebrauchen? Ich hatte gelesen, dass JMF schon seit Jahren nicht mehr weiterentwickelt wird. Gibt es dazu eine Alternative oder hat jemand eine Idee, wieso die Cam nicht gefunden wird?

Gruß, Thomas :bahnhof:


----------



## Petrolman (7. Mai 2010)

Hallo,
unter Windows habe ich nun in meiner Anwendung ein Bild. Ich musste den Sourcecode noch etwas abändern wegen eines Ausnahmefehlers:


```
mediaLocator = new MediaLocator("vfw://0");
    
    try {
      /*
      datasource = Manager.createDataSource(mediaLocator);
      player = Manager.createPlayer(datasource);
      */
      player = Manager.createRealizedPlayer(mediaLocator);
      player.start();
```

(ging nur über den Aufruf Manager.createRealizedPlayer(mediaLocator). 

Und ich musste doch tatsächlich noch das Performance Pack für Windows installieren! Ich dachte, ich bräuchte nur die JMF.jar in meiner Webstart Anwendung aufnehmen und über die JNLP ausliefern! Nun sieht es ja so aus, als wenn jeder Benutzer dieses Performance Pack installieren muss, wenn er die Webstart Anwendung verwenden möchte?
Die JMF.jar habe ich aus der jmf-2_1_1e-alljava.zip Datei (crossplatform) entnommen. Über die Performance Packs komme ich an die LIB nicht dran.
Unter Linux funktioniert es immer noch nicht. Hier weiß ich nicht, was ich außerdem dem Performance Pack für Linux installieren muss (Ubuntu 9.04) Ist schon blöd, dass man überhaupt noch etwas installieren muss, wenn über die JNLP doch die LIB aus dem crossplatform Paket ausgeliefert wird.


----------



## Petrolman (7. Mai 2010)

Hallo,
das wird ja immer lustiger. Nun dachte ich, ich könnte meine Applikation unter Windows weiterentwickeln, da die Webcam ja hier schon einmal funktioniert. Ich check in Ecplipse also die Sourcen aus dem cvs-repository aus und es werden mir lauter Fehlermeldungen im Sourcecode angezeigt:

Beispiel 

import javax.media.control.FrameGrabbingControl;

Fehlermeldung: Access restriction: The type FrameGrabbingControl is not accessible due to restriction on required library C:\Programme\Java\jre6\lib\ext\jmf.jar

Das Performance Pack für Windows hat die jmf.jar in dieses Verzeichnis abgelegt. Was bringt mir diese jmf.jar, wenn ich auf die benötigten Klassen nicht zugreifen darf? :lol:


----------



## Blakh (20. Mai 2010)

Wenn du das problem noch hast ....

Lösch die JRE System Library, add die entsprechende jar zu deinem Projekt und dann fügst die System Library wieder zu. Das hat bei mir geholfen.


----------

