我现在正在处理声音。
我通过读取 wav 文件并跳过前 44 个字节(根据 WAV 规范,数据从第 44 个字节开始)来获得我的字节 []。我使用 22500Hz 并通过 Audacity 将其导出到 16 位 PCM。
我的方法看起来像这样
private static final AudioFormat format = new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED,22500f,16,1,2,2,false);
public static void play(Sound s) throws LineUnavailableException, IOException
{
int selectedSample = (int) (Math.random() * ( s.samples.length ));
Clip clip = AudioSystem.getClip();
AudioInputStream ais;
ais = new AudioInputStream(new ByteArrayInputStream(s.samples[selectedSample]),format,s.samples[selectedSample].length);
clip.open (ais);
clip.start ();
}
我的 SoundClass 看起来像这样
public class Sound
{
public byte[][] samples;
float pitchLow;
float pitchHigh;
float volumeLow;
float volumeHigh;
byte chance;
}
我做错了什么,我没有收到 LineUnavailableException 并且我什么也没听到。