Я использую звуковой API JAVA и пытаюсь получить некоторые элементы управления (по крайней мере, громкость) для микшеров и линий, но, похоже, нет никакого контроля. Вот часть кода, который я использую:
for (Mixer.Info mixerInfo : AudioSystem.getMixerInfo()) {
//System.out.println("MixerInfo : "+mixerInfo.getName());
if (mixerInfo.getName().compareTo("PulseAudio Mixer")==0) {
System.out.println("Java Sound Audio Engine : "+AudioSystem.getMixer(mixerInfo));
mixer=AudioSystem.getMixer(mixerInfo);
System.out.println("\t Controls supported by Mixer:");
for(Control c : mixer.getControls()) {
System.out.println("\t =>" + c);
}
System.out.println("\t TargetLine availabe for this mixer : ");
for (Line.Info i : mixer.getTargetLineInfo()) {
System.out.println("\t => "+i);
System.out.println("\t\t Controls supported by Target Line :");
try {
for (Control c : AudioSystem.getLine(i).getControls()) {
System.out.println("\t\t =>"+c);
}
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("--------------------------");
//break;
} else {
//System.out.println("Other Mixer : "+AudioSystem.getMixer(mixerInfo));
System.out.println("Other Sound Audio Engine : "+AudioSystem.getMixer(mixerInfo));
mixer2=AudioSystem.getMixer(mixerInfo);
System.out.println("\t Controls supported by Mixer:");
for(Control c : mixer2.getControls()) {
System.out.println("\t =>" + c);
}
System.out.println("\t TargetLine availabe for this mixer :");
for (Line.Info i : mixer2.getSourceLineInfo()) {
System.out.println("\t => "+i);
System.out.println("\t\t Controls supported by Target Line :");
try {
for (Control c : AudioSystem.getLine(i).getControls()) {
System.out.println("\t\t =>"+c);
}
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("--------------------------");
}
}
И вот результат, полученный в консоли:
Java Sound Audio Engine: org.classpath.icedtea.pulseaudio.PulseAudioMixer@1404d1 Элементы управления, поддерживаемые микшером:
TargetLine доступна для этого микшера:
=> интерфейс TargetDataLine, поддерживающий 42 аудиоформата и буферы от 0 до 1000000 байт
Элементы управления, поддерживаемые Target Line:
Другой звуковой движок: com.sun.media.sound.DirectAudioDevice@13b8dae
Элементы управления, поддерживаемые микшером:
TargetLine доступна для этого микшера:
=> интерфейс SourceDataLine с поддержкой 512 аудиоформатов и буферами не менее 32 байт
Элементы управления, поддерживаемые Target Line:
=> Интерфейсный клип, поддерживающий 512 аудиоформатов и буферы размером не менее 32 байт.
Элементы управления, поддерживаемые Target Line:
Другое звуковое ядро: com.sun.media.sound.DirectAudioDevice@1cad7c3 Элементы управления, поддерживаемые микшером:
TargetLine доступна для этого микшера:
=> интерфейс SourceDataLine с поддержкой 24 аудиоформатов и буферами не менее 32 байт
Элементы управления, поддерживаемые Target Line:
=> Интерфейсный клип, поддерживающий 24 аудиоформата и буфер размером не менее 32 байт.
Элементы управления, поддерживаемые Target Line:
Другой звуковой движок: com.sun.media.sound.DirectAudioDevice@1a9cf86
Элементы управления, поддерживаемые микшером:
TargetLine доступна для этого микшера:
=> интерфейс SourceDataLine с поддержкой 24 аудиоформатов и буферами не менее 32 байт
Элементы управления, поддерживаемые Target Line:
=> Интерфейсный клип, поддерживающий 24 аудиоформата и буфер размером не менее 32 байт.
Элементы управления, поддерживаемые Target Line:
Другое звуковое ядро: com.sun.media.sound.PortMixer@17fd320 Элементы управления, поддерживаемые микшером:
TargetLine доступна для этого микшера:
=> Порт источника Mic Boost
Элементы управления, поддерживаемые Target Line:
=> Захват исходного порта
Элементы управления, поддерживаемые Target Line:
=> Порт цифрового источника
В чем может быть проблема?
Примечание. Я работаю не в ОС Windows, а в ОС Xubuntu (linux). Вот почему у меня не Java Sound Audio Engine, а PulseAudioMixer.