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

时间:2017-06-17 12:54:50

标签: 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不幸的是AudioSystem.isLineSupported被抛出:

  

java.lang.IllegalArgumentException:Line unsupported:interface TargetDataLine支持格式PCM_SIGNED 8000.0 Hz,8位,立体声,2字节/帧,little-endian

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

我还尝试使用AudioSystem.isLineSupported检测支持的音频格式,但我没有检测到输出混音器支持的任何单一格式。对于我检查过的所有可能格式,false始终返回getResources().getIdentifier()

那么,是否可以录制我从扬声器听到的声音?

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

0 个答案:

没有答案