Java 如何从wav文件中获取PCM数据?
我有一个Java 如何从wav文件中获取PCM数据?,java,wav,javasound,pcm,Java,Wav,Javasound,Pcm,我有一个.wav文件。我想从声音文件中获取PCM数据,这样我就可以从声音中获取单个数据块并对其进行处理 但我不知道怎么做。有人能告诉我怎么做吗? 到目前为止,我已经做到了: public class test { static int frameSample; static int timeofFrame; static int N; static int runTimes; static int bps; static int channels
.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) {
}
}
}
公共类测试
{
静态int帧样本;
帧的静态int时间;
静态int N;
静态int运行时;
静态int-bps;
静态int通道;
静态倍频;
静态int bufSize;
静态整数帧大小;
静态整数帧率;
静长;
公共静态void main(字符串[]args)
{
尝试
{
AudioInputStream ais=AudioSystem.getAudioInputStream(新文件(“music/audio.wav”);
音频输入流a;
int numBytes=ais.available();
System.out.println(“numbytes:+numbytes”);
字节[]缓冲区=新字节[numBytes];
byte[]buffer1=新字节[numBytes];
int k=0;
整数计数=0;
而(计数!=-1){
计数=ais.read(缓冲区,0,numBytes);
}
长值=0;
for(int i=0;i
- 使用
AudioSystem
从文件中获取AudioInputStream
- 查询流中的
AudioFormat
- 创建符合格式的
字节[]
。例如,8位单声道是字节[1]
。16位立体声是字节[4]
- 以
字节[]
的块读取流,它将一帧一帧地包含声音
- 继续进行进一步处理
你想用Java还是J来做这件事?在你提出问题之前,我从来没有听说过“J”,我怀疑你是指Java。对不起,我不是指J。我想用Java来做。再次抱歉。我到目前为止已经做过了。这是正确的吗?我想从字节中收集整数值。代码与问题有关。请使用一致的逻辑缩进对于代码块。请注意,帧是“单独的数据块”,因此您的问题已得到回答。您应该单独询问如何将帧转换为整数(单声道)或整数对(立体声)。您能告诉我如何将标题与wav分开吗?请告诉我。从AudioInputStream
读取的字节是纯声音数据,不需要忽略任何一个。但是,当您忽略有关代码格式等的建议时,我为什么要继续尝试提供帮助呢。?