gpt4 book ai didi

java - 在Java中播放整数/双数组

转载 作者:行者123 更新时间:2023-12-03 02:11:08 25 4
gpt4 key购买 nike

我正在尝试在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(或任何其他类)播放整数数组,甚至可以播放 double 数组。

最佳答案

借助@ greg-449的评论,我得以解决该问题。要每秒播放更高的位,您只需要增加bps参数并一个接一个地发送字节即可。

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

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

关于java - 在Java中播放整数/双数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23857683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com