Android AudioTrack播放速度慢

时间:2012-10-17 18:09:42

标签: android audiotrack

我正在尝试使用AudioTrack来播放音乐。 曲目播放,但音频播放率只有一半。这就像这首歌变成了慢动作。

try{
    AudioTrack track= new AudioTrack( AudioManager.STREAM_MUSIC,
        44100,
        android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,
        android.media.AudioFormat.ENCODING_PCM_16BIT,

        android.media.AudioTrack.getMinBufferSize( 44100,
                android.media.AudioFormat.CHANNEL_CONFIGURATION_STEREO,
                android.media.AudioFormat.ENCODING_PCM_16BIT ),
        AudioTrack.MODE_STREAM );

System.out.println("Min buffer: " + android.media.AudioTrack.getMinBufferSize( 44100,
                android.media.AudioFormat.CHANNEL_CONFIGURATION_STEREO,
                android.media.AudioFormat.ENCODING_PCM_16BIT ));


  int cnt;
  int totalWrite = 0;
  boolean play = true;
  byte buff[]=new byte[16384];
  while((cnt=CircularByteBuffer.getInstance().getInputStream().read(buff))>0){

      totalWrite += cnt;
      System.out.println("Writing: " + cnt);
      track.write(buff, 0, cnt);

      if ( totalWrite > 60000 && play ){

          track.play();
          play = false;
      }
  }



      }catch (Exception e)
      {
}//end catch    

在CircularByteBuffer中,字节正在另一个线程上写入并在此读取。这首歌在没有任何停顿的情况下持续播放,但它的播放速度很慢。我不知道它可能是什么。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

假设这实际上是一个立体声流,为什么要用AudioTrack创建CHANNEL_CONFIGURATION_MONO

答案 1 :(得分:0)

事实证明所有设置都很好。我最终使用“CHANNEL_CONFIGURATION_STEREO”设置,但我尝试在实际设备上运行该应用程序。当我从设备上播放它时,音乐非常好。但模拟器导致了歌曲的所有问题。

我希望这就是原因,模拟器只是一个记忆力并且运行效率低下。

答案 2 :(得分:0)

尝试

track.setPlaybackRate(88200);
track.play();

它应该以正常速度播放