我将在java程序中输出一些音频到具有多个chanel(8个通道)的声卡。 为此,我想在声卡上的不同声道上发送不同的声音(因此它可以在不同的扬声器上播放)发送的音频是不同的文件(可能是mp3)。
有人对如何使用java有任何建议吗? 到目前为止我尝试过的是javax.sound.sampled库。我确实设法在扬声器上发出一些声音,但不决定使用哪些声道。 我尝试过使用Port.Info,但似乎无法处理它的语法。
到目前为止,这是代码,这项工作:
// open up an audio stream
private static void init() {
try {
// 44,100 samples per second, 16-bit audio, mono, signed PCM, little Endian
AudioFormat format = new AudioFormat((float) SAMPLE_RATE, BITS_PER_SAMPLE, 1, true, false);
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
//Port.Info port = new Port.Info((Port.class), Port.Info.SPEAKER, false);
//Port.Info pi = new Port.Info((Port.class), "HEADPHONES", false);
line = (SourceDataLine) AudioSystem.getLine(info);
//line = (SourceDataLine) AudioSystem.getLine(port);
line.open(format, SAMPLE_BUFFER_SIZE * BYTES_PER_SAMPLE);
// the internal buffer is a fraction of the actual buffer size, this choice is arbitrary
// it gets divided because we can't expect the buffered data to line up exactly with when
// the sound card decides to push out its samples.
buffer = new byte[SAMPLE_BUFFER_SIZE * BYTES_PER_SAMPLE/3];
} catch (Exception e) {
System.out.println(e.getMessage());
System.exit(1);
}
// no sound gets made before this call
line.start();
}