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