在蓝牙耳机上同时录制和播放音频时的延迟

时间:2019-11-11 22:52:39

标签: android performance audio bluetooth headset

我正在同时录制和再现音频。当我使用耳机时,延迟非常小(我几乎不认为会有延迟-可以说小于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, sampleRate,
                AudioFormat.CHANNEL_IN_MONO, encoding,
                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, 0, bufferSize,  AudioRecord.READ_BLOCKING);
                track.write(buffer, 0, buffer.length, AudioTrack.WRITE_BLOCKING);
            }

        }

我想减少在蓝牙耳机上录制和播放时的延迟。您认为使用openSL ES会有所帮助吗?建议

谢谢

0 个答案:

没有答案