如何从wav文件中获取PCM数据?

我有一个.wav文件。 我想从该声音文件中获取PCM数据,以便我可以从声音中获取单个数据块并对其进行处理。

但我不知道该怎么做。 谁能告诉我怎么做? 到目前为止我做到了这一点:

 public class test { static int frameSample; static int timeofFrame; static int N; static int runTimes; static int bps; static int channels; static double times; static int bufSize; static int frameSize; static int frameRate; static long length; public static void main(String[] args) { try { AudioInputStream ais = AudioSystem.getAudioInputStream(new File("music/audio.wav")); AudioInputStream a; int numBytes = ais.available(); System.out.println("numbytes: "+numBytes); byte[] buffer = new byte[numBytes]; byte[] buffer1=new byte[numBytes] ; int k=0; int count=0; while(count!=-1){ count=ais.read(buffer, 0, numBytes); } long value = 0; for (int i = 0; i < buffer.length; i++) { value = ((long) buffer[i] & 0xffL) << (8 * i); System.out.println("value: "+value); } } catch(Exception e) { } } } 

这可以使用Java Sound API完成。

  • 使用AudioSystem从文件中获取AudioInputStream
  • 查询AudioFormat的流。
  • 创建一个byte[]以适应格式。 EG 8位单声道是一个byte[1] 。 16位立体声是byte[4]
  • byte[]块为单位读取流,它将逐帧包含声音。
  • 继续进行处理..