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

Java:是否可以从声卡输出(扬声器)录制音频?,java,Java,我现在正在尝试的(不介意语法-它是Kotlin): 不幸的是,IllegalArgumentException正被抛出到mixer.getLine: java.lang.IllegalArgumentException:不支持的行:接口TargetDataLine支持格式PCM\u签名8000.0 Hz,8位,立体声,2字节/帧,小尾端 我尝试了所有可用的混音器和音频格式。还是不走运。唯一可用的混音器是麦克风混音器。所有输出混频器都会导致异常 我还尝试使用AudioSystem.isLineSu

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

不幸的是,
IllegalArgumentException
正被抛出到
mixer.getLine

java.lang.IllegalArgumentException:不支持的行:接口TargetDataLine支持格式PCM\u签名8000.0 Hz,8位,立体声,2字节/帧,小尾端

我尝试了所有可用的混音器和音频格式。还是不走运。唯一可用的混音器是麦克风混音器。所有输出混频器都会导致异常

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

那么,有没有可能录下我从扬声器里听到的声音



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

我认为较新的声卡不再支持这种功能,这使得复制流媒体数据变得更加困难。如果我真的需要的话,我可以用一根电缆做一个从输出到输入/麦克风的快捷方式。@Turo但这样的软件是存在的。例如,SnagIt 12可以轻松地从我的声卡录制音频。还有很多类似的应用程序。
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"))