从wav文件播放原始PCM字节 [英] play a raw PCM byte from a wav file
问题描述
我这是带16位PCM codeD wav文件,我想将其转换为PCM短阵并播放audiotrack类原料数组。这是我做过什么:
I have a wav file which was encoded with 16-bit PCM, I want to convert it to a PCM short array and play the raw array with audiotrack class. It is what I did:
String fileName = "test.wav";
File f = new File(baseDir + File.separator + fileName);
InputStream is = null;
try {
is = new FileInputStream (f);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
BufferedInputStream bis = new BufferedInputStream (is, 8000);
DataInputStream dis = new DataInputStream (bis); // Create a DataInputStream to read the audio data from the saved file
short[] music = new short[(int) f.length()];
int i = 0; // Read the file into the "music" array
try {
while (dis.available() > 0)
{
music[i] = dis.readShort(); // This assignment does not reverse the order
i++;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("123",""+Arrays.toString(music));
try {
dis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
at=new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, 8000 /* 1 second buffer */,
AudioTrack.MODE_STREAM);
at.write(music, 0, (int)f.length());
at.play();
该阵列可以播放,但问题是,当我摆弄原来的wav文件进行比较,我发现他们不输出相同的声音。有人可以帮我解决这个问题?谢谢你在前进!
The array can be played, but the problem is that when I compare it with playing the original wav file, I found that they don't output the same sound. Can someone help me with this issue? Thank you in advance!
推荐答案
您必须设法文件中的实际音频数据,以获得音频采样看到的 http://en.wikipedia.org/wiki/WAV 或的 https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ 。
You have to seek to the actual audio data in the file to get the audio sample see http://en.wikipedia.org/wiki/WAV or https://ccrma.stanford.edu/courses/422/projects/WaveFormat/.
16位单率8kHz的一秒将是8000 * 2 * 1字节= 16000字节
One second of 16bit mono @ 8khz will be 8000 * 2 * 1 bytes = 16000 bytes
这篇关于从wav文件播放原始PCM字节的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!