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

neskvpey  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(461)

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

        }
    }
}
cedebl8k

cedebl8k1#

这可以通过javasoundapi来实现。
使用 AudioSystem 得到一个 AudioInputStream 从文件中。
查询流中的 AudioFormat .
创建 byte[] 以适应格式。e、 g.8位单声道是一种 byte[1] . 16位立体声 byte[4] .
把数据流读成块 byte[] 它将包含声音,一帧一帧。
继续进一步处理。。

相关问题