如何从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[]
块为单位读取流,它将逐帧包含声音。 - 继续进行处理..