1

我现在正在处理声音。

我通过读取 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 并且我什么也没听到。

4

0 回答 0