选择声卡通道输出

时间:2013-03-07 11:33:38

标签: java audio javasound javax.sound.sampled

我将在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();
}

0 个答案:

没有答案