Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,不支持录制音频线_Java_Audio_Wav_Audio Recording - Fatal编程技术网

Java,不支持录制音频线

Java,不支持录制音频线,java,audio,wav,audio-recording,Java,Audio,Wav,Audio Recording,我的目标 我想在Java中执行以下操作:录制一些Java本身发出的声音,然后将其保存为wav文件 我在网上搜索了很多这类程序,也找到了一些不错的,但我一次又一次地遇到同样的问题(可以找到当前版本)。问题总是这样: 在公共类中,函数开始以 AudioFormat format = getAudioFormat(); DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); if (!AudioSystem.isLin

我的目标
我想在Java中执行以下操作:录制一些Java本身发出的声音,然后将其保存为wav文件

我在网上搜索了很多这类程序,也找到了一些不错的,但我一次又一次地遇到同样的问题(可以找到当前版本)。问题总是这样:
公共类
中,函数
开始

AudioFormat format = getAudioFormat();
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
if (!AudioSystem.isLineSupported(info)) {
    System.out.println("Line not supported");
    System.exit(0);
}
,其中
getAudioFormat()
返回
AudioFormat(16000,8,2,true,true)
。如果我运行该文件,它会打印不支持的
,但为什么

我所尝试的:

  • 我在网上搜索了大量不同的格式,并尝试了每种格式
  • 我采用了一个Java可以播放的现有wav文件,采用了该文件的格式,并将其用作我尝试创建的文件的格式
更多信息:

System.out.println(AudioSystem.getTargetLineInfo(info));
System.out.println(AudioSystem.getAudioFileTypes());
System.out.println(AudioSystem.getMixerInfo());
System.out.println(AudioSystem.getSourceDataLine(format));
其中,
format
是现有wav文件的格式,
info
是在第一个代码段中定义的,打印:

[Ljavax.sound.sampled.Line$Info;@4eec7777
[Ljavax.sound.sampled.AudioFileFormat$Type;@41629346
[Ljavax.sound.sampled.Mixer$Info;@6d311334
com.sun.media.sound.DirectAudioDevice$DirectSDL@448139f0
我使用Windows7,64位


我想补充一点,如果有更好的、完全不同的方法来实现我的目标,那也没关系。

您使用的音频格式不受
数据线的支持,Java不支持。在这种情况下,您试图从默认音频输入(通常是麦克风)录制,而您的声卡不支持您使用的音频格式。您需要检查系统支持的音频格式,并使用其中一种。这有点猜测,但请尝试将AudioFormat上的频道数从2更改为1。使用2个频道可能需要立体声输入。@Titus:我如何检查?@Radiodef:谢谢你的建议,但还没有成功。你可以获得支持的音频格式,如
info.getFormats()