Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/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声音API。从混音器获取支持的音频格式_Java_Audio_Javasound_Mixer_Audioformat - Fatal编程技术网

Java声音API。从混音器获取支持的音频格式

Java声音API。从混音器获取支持的音频格式,java,audio,javasound,mixer,audioformat,Java,Audio,Javasound,Mixer,Audioformat,我正在尝试从一个通过USB连接到我的电脑的外部混音器获取一条线路。 因此,我编写了一个简单的程序来列出所有混频器及其各自的源线(输出)和目标线(输入),并且它工作正常: import javax.sound.sampled.*; 公共类测试资源{ 公共静态void main(字符串参数[]){ 试一试{ Mixer.Info[]mixers=AudioSystem.getMixerInfo(); 对于(int i=0;i“+mixers[i].getDescription()); Line.In

我正在尝试从一个通过USB连接到我的电脑的外部混音器获取一条线路。 因此,我编写了一个简单的程序来列出所有混频器及其各自的源线(输出)和目标线(输入),并且它工作正常:

import javax.sound.sampled.*;
公共类测试资源{
公共静态void main(字符串参数[]){
试一试{
Mixer.Info[]mixers=AudioSystem.getMixerInfo();
对于(int i=0;i“+mixers[i].getDescription());
Line.Info[]sourceLines=AudioSystem.getMixer(mixers[i]).getSourceLineInfo();
System.out.println(“\t源行:”);
对于(int j=0;j
然而,当我真的想得到我需要的线路时,我会这样:

AudioFormat格式=新的AudioFormat(44100,16,2,true,true);
Mixer.Info[]mixers=AudioSystem.getMixerInfo();
最终目标数据线话筒=AudioSystem.getTargetDataLine(格式,混音器[2]);
我收到一个错误,表示该行不支持该格式:

java.lang.IllegalArgumentException: Line unsupported: interface TargetDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 8 bytes/frame, big-endian
如何扩展初始程序以打印每行支持的格式?
提前感谢。

此方法打印
行所支持的格式。Info
对象:

static void showLineInfoFormats(final Line.Info lineInfo)
{
if(lineInfo instanceof DataLine.Info)
{
final DataLine.Info dataLineInfo=(DataLine.Info)lineInfo;
Arrays.stream(dataLineInfo.getFormats())
.forEach(format->System.out.println(“+format.toString());
}
}
要更快获得更好的帮助,请添加或。