我现在正在尝试(不要介意语法 - 它是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可以录制声卡中的音频。还有很多类似的应用程序。