有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中播放整数/双数组

我试图在Java程序中播放数组。 到目前为止,我能够用以下代码播放字节数组:

AudioFormat audioFormat = new AudioFormat(samplingFreq, bps, 1, true, true);
SourceDataLine sdline = AudioSystem.getSourceDataLine(audioFormat);
line.open(audioFormat);
sdline.start();        
sdline.write(playArray, 0, playArray.length);
sdline.drain();
sdline.close();

然而,由于write方法只接受字节数组作为参数,因此我只能播放字节数组。我想能够发挥16/32位每个样本阵列以及

有没有办法使用AudioSystem(或任何其他类)播放整数数组甚至双倍


共 (1) 个答案

  1. # 1 楼答案

    在@greg-449的帮助下,我解决了这个问题。要播放更高的每秒比特数,只需增加bps参数并逐个发送字节

    例如,如果我们想发送1867作为样本,我们需要16位,如下所示: 0000 0111 0100 1011

    前8位是十进制的7位,后8位是十进制的75位,所以因为我们使用的是big-endian(AudioFormat参数的最后一个参数),字节数组的第一个元素应该是7,第二个元素应该是75。对于16位,每个样本只需要两个字节