java如何从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) {
}
}
}
# 1 楼答案
这可以通过Java SoundAPI完成
AudioSystem
从文件中获取AudioInputStream
李>AudioFormat
李>byte[]
以适合该格式。例如,8位单声道是byte[1]
。16位立体声是byte[4]
李>byte[]
的块读取流,它将一帧一帧地包含声音李># 2 楼答案
下面是一个使用^{} 包的完整工作示例。如果您需要音频格式的详细信息,可以通过audioInputStream获取。getFormat()将返回一个AudioFormat对象