我正在同时录制和再现音频。当我使用耳机时,延迟非常小(我几乎不认为会有延迟-可以说小于100毫秒)。但是,当我使用蓝牙耳机时,延迟会大大增加(可以说是300毫秒),而且我认为录制的延迟更大。这是我配置AudioTrack和AudioRecorder的方法
int encoding = AudioFormat.ENCODING_PCM_16BIT;
private Thread recordingThread = null;
private AudioRecord recorder = null;
private AudioTrack track = null;
private AudioManager am = null;
private int sampleRate = 8000;
int minSize = AudioRecord.getMinBufferSize(sampleRate,AudioFormat.CHANNEL_IN_MONO,encoding);
private int bufferSize = minSize;
///////////////////
track = new AudioTrack(AudioManager.STREAM_VOICE_CALL,sampleRate,AudioFormat.CHANNEL_OUT_MONO,encoding,minSize,AudioTrack.MODE_STREAM);
// Audio record object
recorder = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION,bufferSize);
录制和播放在线程上运行
@Override
public void run() {
Process.setThreadPriority(Process.THREAD_PRIORITY_URGENT_AUDIO);
buffer = new byte[minSize];
// Playback received audio
track.play();
recorder.startRecording();
while (true) {
recorder.read(buffer,bufferSize,AudioRecord.READ_BLOCKING);
track.write(buffer,buffer.length,AudioTrack.WRITE_BLOCKING);
}
}
我想减少在蓝牙耳机上录制和播放时的延迟。您认为使用opensl ES会有所帮助吗?建议
谢谢