0

我有一个名为“new.wav”的 wav 文件,我想通过 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文件中的原声。我认为我的采样率很好,有人可以帮我解决这个问题吗?谢谢你!

4

1 回答 1

0

正如我在上面的评论中所说,问题在于渠道的选择。

于 2013-04-28T18:39:33.427 回答