2013-04-20 17 views
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文件中輸出原始聲音。我認爲我的採樣率很好,有人可以幫我解決這個問題嗎?謝謝!

+0

我認爲audiotrack播放頻率較低。 BTW – 2013-04-20 18:55:31

+0

看起來像是如果我將選項更改爲AudioFormat.CHANNEL_OUT_STEREO,它會產生相同的輸出。不知道爲什麼 – 2013-04-20 19:10:59

回答

0

正如我在上面的評論中所說的,問題在於渠道的選擇。