Посмотрев на это более внимательно, я думаю, что это может помочь.
выполнение этого для возвращаемых значений из AudioSystem.getMixerInfo ()
mixerDetails.getDescription()
mixerDetails.getName()
дает следующее:
Direct Audio Device: DirectSound Playback
Primary Sound Driver
Direct Audio Device: DirectSound Playback
Realtek HD Audio output
Direct Audio Device: DirectSound Playback
Microsoft LifeChat LX-3000
Direct Audio Device: DirectSound Capture
Primary Sound Capture Driver
Direct Audio Device: DirectSound Capture
Microsoft LifeChat LX-3000
Direct Audio Device: DirectSound Capture
Realtek HD Audio Input
Software mixer and synthesizer
Java Sound Audio Engine
Port Mixer
Port Realtek HD Audio output
Port Mixer
Port Realtek HD Audio Input
Port Mixer
Port Microsoft LifeChat LX-3000
У меня была такая же проблема с 'микшером портов' 'Port Microsoft LifeChat LX-3000', который был экземпляром 'com.sun.media.sound.PortMixer'. Звонок
AudioSystem.getTargetDataLine(format, mixerInfo)
на этом микшере дает следующее:
Exception in thread "main" java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine
Загрузка исходного кода и запуск в режиме отладки в eclipse показывает, что для моего экземпляра этого порта у него есть только javax.sound.sampled.Port.class, поэтому вызовы AudioSystem.getTargetDataLine, которые под прикрытием делают это:
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
Mixer mixer = AudioSystem.getMixer(mixerinfo);
return (TargetDataLine) mixer.getLine(info);
fail - в portMixer доступны только строки javax.sound.sampled.Port.class. В моем порту эта линия была динамиком, но даже если это не так, все целевые линии, хранимые внутри, кажутся портами, что не особенно полезно. Даже комментарии в классе говорят: «Микшер, который обеспечивает только порты».
Так что, для чего бы он ни использовался, он не получает строки источника / цели. Честно говоря, я не вижу, для чего он используется. Я бы попробовал посмотреть на другие микшеры в вашей системе. Если ваш будет похож на мой, вы сможете использовать захват звука, который вы можете использовать вместо этого.