Java没有';不显示任何受支持的6通道音频设备,但手动使用win32 API允许我显示?

Java没有';不显示任何受支持的6通道音频设备,但手动使用win32 API允许我显示?,java,windows,audio,Java,Windows,Audio,我想用java播放5.1音频。以前,我使用过立体声音频,这非常简单,但是如果通道数超过2个,就会立即出现问题:java报告说,没有支持>2个通道的音频格式的设备。但是,在C/C++中直接使用win32 API和WAVEFORMATPCMEX、waveOutOpen()、WaveOutPrePrePreHeader()和waveOutWrite(),我可以向所有6个扬声器(5个扬声器和子扬声器)写入数据。在java教程()之后,通过迭代音频设备并打印出它们支持的行为,我找不到任何表示它可以支持>立

我想用java播放5.1音频。以前,我使用过立体声音频,这非常简单,但是如果通道数超过2个,就会立即出现问题:java报告说,没有支持>2个通道的音频格式的设备。但是,在C/C++中直接使用win32 API和WAVEFORMATPCMEX、waveOutOpen()、WaveOutPrePrePreHeader()和waveOutWrite(),我可以向所有6个扬声器(5个扬声器和子扬声器)写入数据。在java教程()之后,通过迭代音频设备并打印出它们支持的行为,我找不到任何表示它可以支持>立体声音频的设备。我用来迭代的代码是(import javax.sampled.*):

我还尝试了稍有不同的迭代代码,如下所述:。即使尝试通过使用包含6个频道的格式请求直接从音频系统获取SourceDataLine,也会失败:

AudioFormat format = new AudioFormat(44100, 16, 6, true, false);
try(SourceDataLine line = AudioSystem.getSourceDataLine(format))
{
    line.open(format);
    line.start();
}
catch(LineUnavailableException lue)
{
    System.err.println("Cannot grab output device for playing audio.");
}
线程“main”java.lang.IllegalArgumentException中出现异常:不支持行匹配接口SourceDataLine支持格式PCM_签名44100.0 Hz,16位,6通道,12字节/帧,支持小尾端

我尝试过各种格式的调整endianness、每帧字节数、采样率和PCM_SIGNED/PCM_UNSIGNED,但都没有效果。我知道我的系统可以支持它,因为我可以直接通过win32 API来实现。我错过什么了吗?我需要进行一些配置吗?有人在java中有多声道音频吗?谢谢

AudioFormat format = new AudioFormat(44100, 16, 6, true, false);
try(SourceDataLine line = AudioSystem.getSourceDataLine(format))
{
    line.open(format);
    line.start();
}
catch(LineUnavailableException lue)
{
    System.err.println("Cannot grab output device for playing audio.");
}