Я пытаюсь получить линию от внешнего микшера, подключенного к моему компьютеру через USB.Поэтому я написал простую программу для перечисления всех микшеров и соответствующих им исходных строк (выходов) и целевых строк (входов), и она работает правильно:
import javax.sound.sampled.*;
public class TestResources {
public static void main(String args[]) {
try {
Mixer.Info [] mixers = AudioSystem.getMixerInfo();
for(int i = 0 ; i< mixers.length; i ++) {
System.out.println((i+1)+". " + mixers[i].getName() + " --> " + mixers[i].getDescription() );
Line.Info [] sourceLines = AudioSystem.getMixer(mixers[i]).getSourceLineInfo();
System.out.println("\tSource Lines:" );
for(int j = 0; j< sourceLines.length; j++) {
System.out.println("\t" + (j+1) + ". " + sourceLines[j].toString() );
}
System.out.println();
Line.Info [] targetLines = AudioSystem.getMixer(mixers[i]).getTargetLineInfo();
System.out.println("\tTarget Lines:" );
for(int j = 0; j< targetLines.length; j++) {
System.out.println("\t" + (j+1) + ". " + targetLines[j].toString() );
}
System.out.println("\n" );
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}
Однако, когда я на самом деле пытаюсь получить строку, янужно вот так:
AudioFormat format = new AudioFormat(44100, 16, 2, true, true);
Mixer.Info [] mixers = AudioSystem.getMixerInfo();
final TargetDataLine microphone = AudioSystem.getTargetDataLine(format, mixers[2]);
Я получаю сообщение о том, что формат не поддерживается строкой:
java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 8 bytes/frame, big-endian
Как можно развернуть исходную программу для печати поддерживаемых форматовкаждая строка?Заранее спасибо.