Java采样 - 播放原始PCM Wav数据

时间:2015-02-19 16:44:51

标签: java javax.sound.sampled

我现在正处理声音。

我通过读取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而我听不到任何事情。

0 个答案:

没有答案