0
我称之为“new.wav”一个wav文件,我想通过的MediaPlayer和AudioTrack android中发挥它:的MediaPlayer和AudioTrack不输出相同的声音
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "new.wav";
File f = new File(baseDir + File.separator + fileName);
byte[] b = null;
try {
b=this.readFile(f);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.i("123"," "+"length is "+b.length);
truncated=new byte[b.length-44];
truncated=Arrays.copyOf(b, b.length-44);
at=new AudioTrack(AudioManager.STREAM_MUSIC, 48000, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT, truncated.length /* 1 second buffer */,
AudioTrack.MODE_STREAM);
at.write(truncated, 0, truncated.length);
at.play();
mp = new MediaPlayer();
try {
mp.setDataSource(baseDir + File.separator + fileName);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mp.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
尝试过这两种方法后,我发现他们的声音不一样,AudioTrack没有在wav文件中输出原始声音。我认为我的采样率很好,有人可以帮我解决这个问题吗?谢谢!
我认为audiotrack播放频率较低。 BTW – 2013-04-20 18:55:31
看起来像是如果我将选项更改为AudioFormat.CHANNEL_OUT_STEREO,它会产生相同的输出。不知道为什么 – 2013-04-20 19:10:59