Java:是否可以从声卡输出(扬声器)录制音频?

我现在正在尝试的(不要介意语法 – 它是Kotlin):

audioFormat = AudioFormat(8000f, 8, 2, true, false) mixerInfo = AudioSystem.getMixerInfo() mixer = AudioSystem.getMixer(mixerInfo[0]) // have tried all dataLineInfo = DataLine.Info(TargetDataLine::class.java, audioFormat) dataLine = mixer.getLine(dataLineInfo) as TargetDataLine // IllegalArgumentException dataLine.open() dataLine.start() AudioSystem.write(AudioInputStream(dataLine), AudioFileFormat.Type.WAVE, File("1.wav")) 

不幸的是一个IllegalArgumentException异常被扔在mixer.getLine

java.lang.IllegalArgumentException:行不支持:接口TargetDataLine支持格式PCM_SIGNED 8000.0 Hz,8位,立体声,2字节/帧,小端

我已经尝试了所有可用的混音器和音频格式。 仍然没有运气。 唯一工作的混音器是麦克风混音器。 所有的输出混音器都会导致异常。

我也尝试使用AudioSystem.isLineSupported来检测支持的音频格式,但是我没有检测到输出混音器将支持的任何单一格式。 对于我检查过的所有可能的格式, AudioSystem.isLineSupported总是返回false

那么,是否有可能记录我从扬声器听到的声音?


PS:有一些捕捉软件可以执行这样的记录。 例如,SnagIt 12可以录制来自我的声卡的音频。 还有很多类似的应用程序。