实时采集音频并同步播放时声音不连续问题

项目需要实时采集音频数据并同步播放,其中一个线程获取定时采集的数据包,数据包大小为128~256的字节,另一线程负责播放,我用如下方式处理:
线程一:
public static DataInputStream mDis;
byte[] b;//b为采集的字节数组,前面代码已经获取

mDis = new DataInputStream( new ByteArrayInputStream(b));

线程二:
共享 mDis;

private static AudioTrack mAudioTrack;
byte[] tempBuffer;
mMinBufferSize = AudioTrack.getMinBufferSize(sampleRateInHz,channelConfig, audioFormat);//计算最小缓冲区

    if (Build.VERSION.SDK_INT >= 23) {
        mAudioTrack = new AudioTrack.Builder()
            .setAudioFormat(new AudioFormat.Builder()
                .setEncoding(audioFormat)
                .setSampleRate(f)
                .setChannelMask(channelConfig)
                .build())
            .setBufferSizeInBytes(mMinBufferSize +1024)
            .build();
    } else {
            mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, f, channelConfig, audioFormat,mMinBufferSize +1024, MODE_STREAM);
}

while (1) { //
    readCount = mDis.read(tempBuffer);
    if (readCount == -1 || readCount == AudioTrack.ERROR_INVALID_OPERATION || readCount == AudioTrack.ERROR_BAD_VALUE) {
                        continue;
  }
  if (readCount > 0 ) 
  {    
      if (mAudioTrack.getState() == mAudioTrack.STATE_UNINITIALIZED) {
                initData();
      }
                mAudioTrack.play();
                mAudioTrack.write(tempBuffer, 0, readCount);
   }
}

运行起来发现声音总是断续的,如果将mDis保存进文件,再执行这段代码,则不会有此问题,特请大侠指导一下,问题出在哪?(尝试先缓存100ms~1s数据再播放,但问题依然)
拜谢!

尝试过调整Buffer大小,问题依旧,并且如果将mDis改为从File里读取,则不会出现断续问题

调整下buffer
https://blog.csdn.net/samyou090/article/details/84049551

你这个问题解决了吗?我这边也遇到这个问题了,和你描述的很相似