Android的AudioTrack慢速播放(Android AudioTrack slow pla

2019-09-24 06:15发布

我想播放音乐使用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,字节被写在另一个线程,并在这一个阅读。 这首歌一直扮演着没有任何停顿,但是它只是起到以缓慢的速度。 我不知道它可能是什么。 有任何想法吗?

Answer 1:

假设这其实就是一个立体声流,你为什么要创建AudioTrackCHANNEL_CONFIGURATION_MONO



Answer 2:

因此,原来,所有的设置都很好。 我结束了使用“CHANNEL_CONFIGURATION_STEREO”设置,但我试图运行在实际设备上的应用。 当我从设备流吧,音乐是完美的罚款。 但是模拟器是造成所有歌曲的问题。

我希望这是理性和模拟器只是一个记忆体猪和运行效率低下。



Answer 3:

尝试

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

它应该在正常速度播放



文章来源: Android AudioTrack slow playback