我现在正处理声音。
我通过读取wav文件并跳过前44个字节来获取我的byte [](根据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而我听不到任何事情。