# java media framework  -  Mikrofon wird nicht gefunden



## Coder21 (5. Apr 2008)

Hallo,

ich versuche mit Java mein USB-Mikrofon anzusprechen.
Folgendes gibt allerdings einen leeren Vector zurück:


```
Vector deviceList = CaptureDeviceManager.getDeviceList (null);
```

Das JMStudio, das ja auch mit diesem Framework entwickelt wurde, erkennt das Mikrofon aber problemlos.
In den Quelltexten dieses Programmes habe ich noch nicht gefunden, warum in meinem Programm nichts gefunden wird.

Woran könnte das liegen?


----------



## &gt;wintermute&lt; (16. Jun 2008)

Hi!
Konntest du das Problem lösen? 
Ich befürchte, dass man die JMFRegistry ausführen muss, hoffe aber, dass es auch ohne geht, da ich gerne eine Mikrofonaufnahme in ein Programm einbauen möchte, aber nicht von den potentiellen Benutzern dann verlangen kann, das JMF zu installieren...
mfg


----------



## tuxedo (16. Jun 2008)

Aufnehmen über Mikro und Co. geht auch ohne JMF mit der Java Sound API (in jedem Sun JRE/JDK enthalten). Muss man halt vieles selber machen, aber JMF ist eh dem Tod geweiht wenn Sun nicht bald auf die Idee kommt da nachzubesser oder das Projekt wiederzubeleben.

- Alex


----------



## &gt;wintermute&lt; (23. Jun 2008)

Danke für den Tipp!
Geht ziemlich gut ohne JMF.
Habe nur ein Problem: jede Aufnahme vom Mikrofon rauscht ziemlich...unabhängig vom Mikrofon. Habt ihr eine Idee, wie man das lösen kann?
mfg


----------



## tuxedo (23. Jun 2008)

Hast du mal geschaut wie's mit anderen Anwendungen ist? Rauschts da auch? Die Aufnahmequalität der Java Sound API ist nicht von der anderer Tools zu unterscheiden.

Tippe auf ne falsche "bedienung" (einstellung im OS?) der Soundkarte.

- Alex


----------



## unicode (24. Jun 2008)

-Das Mikrofon wird nicht gefunden weil du wie du es richtig sagst die Registry ausführen mußt. Und dann ist dann so ne Liste falls ich des richtig in Erinnerung habe. 
-Wenn du JMF benutzt mußt du auch leider den Benutzern zumuten JMF zu installieren. Anders geht das nicht. Wenn des wirklich ausgeschlossen ist den Usern das zuzumuten, dann solltest du JMF nicht verwenden. Wir neigen hier immer die User als heilige Kühe zu behandeln aber schlißlich hat Microsoft auch seine Benutzer erzogen auf Start zu gehen um das System herunterzufahren ;-)


----------



## tuxedo (24. Jun 2008)

@unicode

Wer lesen kann ist klar im Vorteil ;-)



			
				>wintermute< hat gesagt.:
			
		

> Danke für den Tipp!
> Geht ziemlich gut *ohne *JMF.


----------



## unicode (24. Jun 2008)

@Alex
Ich habs schon gelesen.


> ...du es richtig sagst..


.
Jetzt könnte ich sagen, dass du meins nicht richtig gelesen hast aber lassmer das ;-).

Außerdem scheint jetzt JMF überflüssig zu sein, aber wer weiß was passiert wenn sich die Anforderungen ändern -Stichwort Encodings,Codierung, zu große Dateien--da ist dann JMF vielleicht wieder ganz interessant.


----------



## tuxedo (24. Jun 2008)

Ich hab deinen Text shcon gelesen. Nur hatte der TS JMF bereits an den Nagel gehängt.

JMF sollte nicht interessant sein. Allein schon wegen der "Fehler-Anfälligkeit" und dem "totgesagten" Entwicklungsprozess. 

Mit der Java Sound API lässt sich eigentlich alles handhaben (Stichwort Encodings,Codierung, zu große Dateien,...), nur muss man zum Teil den Aufwand selbst bewältigen. Leider. 

Naja, wie dem auch sei. *back to topic* Rauschts in anderen Anwendungen auch oder nur im eigenen Java-Programm?

- Alex


----------



## unicode (24. Jun 2008)

@Alex 100%Ack

Und eben deshalb weil man mit Javasound Api alles machen kann und muß ist JMF zum Teil manchmal interessant, weil da schon manches fertig ist.
Auch wenn es schon wie du richtig sagts seit 2004 "tot" ist, ist JMF manchmal trotzdem interessant 

Mal wieder etwas vom Thema weg: Hat jemand vielleicht positive Erfahrungen mit FMJ gemacht?

Gruß


----------



## tuxedo (24. Jun 2008)

Ich wollte es mal ausprobieren, aber bevor ich daszu gekommen bin wurde mir an mehreren Stellen davon abgeraten. Es sei "schlimmer" als JMF was die Bugs angeht. Konnte das bisher nicht verifizieren, da ich mein Konferenztool dann doch lieber Low-Level mit der Java Sound API erstellt hab (was den Vorteil hatte absolut unabhängig von weiteren Installationen oder native Libraries zu sein).

- Alex


----------



## unicode (24. Jun 2008)

Danke Alex. Gut zu wissen.


----------



## byte (24. Jun 2008)

Sun hat das Thema Media wieder aufgegriffen. Mit Java 7 soll ein neues Media Framework kommen namens JMC (Java Media Components):

http://www.javalobby.org/java/forums/m92155244.html


----------



## tuxedo (24. Jun 2008)

Ja, ganz dunkel erinnere ich mich da mal was drüber gelesen zu haben. Aber was noch nicht raus ist lässt sich schlecht verwenden/bewerten. Warten wir's ab ob's was taugt.

- Alex


----------



## &gt;wintermute&lt; (28. Jun 2008)

alex0801 hat gesagt.:
			
		

> Naja, wie dem auch sei. *back to topic* Rauschts in anderen Anwendungen auch oder nur im eigenen Java-Programm?
> 
> - Alex



Ich habe es mittlerweile auch auf einem anderen Computer getestet. Jeweils in JAVA ziemliches Rauschen und sonst nicht....sehr komisch...
mfg


----------



## tuxedo (28. Jun 2008)

dann hast du was falsch programmiert. "verfäschst" du das byte[] irgendwie? Lass mal sehen WIE du aufnimmst...

Hast du die Samples von der Seite hier probiert? -> http://www.jsresources.org/ Da gibts auch ein Beispiel zum aufnehmen.

- Alex


----------



## &gt;wintermute&lt; (28. Jun 2008)

Danke für den Link!
Werd mal abgleichen und dann wieder berichten...


----------



## &gt;wintermute&lt; (30. Jun 2008)

Hi!
Mein Rauschen lag einfach an der falschen Samplegröße, ich habe jetzt von 8 auf 16 Bit umgestellt, da ist es weg. Sonderbar, denn derartiges Rauschen hat man im Radio eher selten...   

Ich würde gerne während des Aufnehmens den Level des Inputs messen, um zu wissen, ob noch in das Mikrofon gesprochen wird (von Hintergrundgeräuschen sehe ich derzeit mal ab). Gibt es da eine einfache Möglichkeit? Oder muss ich die Bytes manuell lesen (nicht so einfach, das so zu programmieren, dass man die Samplegröße oder so ändern kann)?

Danke, mfg


----------



## tuxedo (30. Jun 2008)

Irgendwo auf der Seite steht beschrieben wir man das Level berechnet. Ist abhängig von Bitrate, Samplingrate und Anzahl der Kanäle. Leider gibts keine fertige Funktion dafür. Steht aber irgendwo in den FAQs auf der Seite beschrieben (ist sehr schlecht zu finden, also fleissig suchen [habs leider auch nicht parat]).

- Alex


----------

