如何从wav文件得到PCM数据?(How to get PCM data from a wav fi

2019-06-27 09:11发布

我有一个.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) {

        }
    }
}

Answer 1:

这可以用做Java声音 API。

  • 使用AudioSystem获得一个AudioInputStream从文件。
  • 查询该流AudioFormat
  • 创建一个byte[]以适应格式。 EG 8位单声道是一个byte[1] 16位的立体声是byte[4]
  • 读入的块的流byte[]并将其将包含由帧的声音,帧。
  • 以后的处理过程..


文章来源: How to get PCM data from a wav file?