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可以录制来自我的声卡的音频。 还有很多类似的应用程序。