Mikrofon (des jeweiligen PCs) finden

N

NikolausS

Gast
Hallo liebe Java-Forum Gemeinde!

Ich schreibe gerade an einem Programm für die Uni bei dem wir eine "diktierfunktion" machen müssen, sprich, alles was gesagt wird (ob headset, mikro, oder integrierte laptop-mikros) aufzuzeichnen und abzuspeichern.

ich habe dazu schon folgenden Code:

Java:
AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED, 16000.0F, 16, 1, 2, 16000.0F, false);

DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class, audioFormat);
Mixer mixer = AudioSystem.getMixer(mixerInfo[4]); //da ist bei mir der primäre soundaufnahmetreiber, aber eben nur bei mir
linein = (TargetDataLine) mixer.getLine(dataLineInfo);
linein.open(audioFormat);
linein.start();

soweit sogut, bei mir funktioniert es wunderbar.

Sobald ich denselben code aber auf einem anderen Rechner (mit headset) ausführen will, bekomme ich:

"java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine supporting format PCM_SIGNED 16000.0 Hz, 16 Bit, mono, 2bytes/frame, little-endian"

das problem ist denke ich, dass mixerInfo[4] nicht immer passt, sondern eben nur bei meinem PC, auf dem anderen ist an der stelle 4 die "java sound audio engine"


meine Frage ist, wie kann ich herausfinden, von wo genau ich aufnehmen muss? also ob mikro, oder headset, oder interes mikro?
weil das ist immer anders, je nach ausstattung des pcs...


Ich hoffe ihr könnt mir weiterhelfen!
 
R

Ralph-Uwe

Bekanntes Mitglied
Hallo,

ich habe eher das Gefühl, dass etwas mit dem AudioFormat nicht stimmt.
In welchem Format wird die Sounddatei auf Deinem Rechner gespeichert?
Fehlt auf dem anderen Rechner vielleicht ein Codec?

Welche Zeile in Deinem Programm löst die Exception aus?
 
A

athikka

Aktives Mitglied
Hallo!

Danke für die Antwort,

Ich glaube es liegt daran, dass mit mixer[4] nicht auf jedem PC das mikro angesprochen wird. Sicher sogar, habs probiert, auf einem kollegen Rechner sind da die Lautsprecher.

Die Meisterfrage ist, wie ich das Mikro finden kann?
und am besten wie ich dessen empfindlichkeit einstellen kann?

Wenn ich das habe, habe ich es geschafft
 

Ähnliche Java Themen

Anzeige

Neue Themen


Oben