Android AudioTrack тикает звук для режима потока - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу воспроизвести данные на любом мобильном динамике / наушниках, как только получу их с микрофона на Android. Я попробовал некоторые приложения из Playstore, и они показывали хороший результат, как я и ожидал.

Я начал писать свое собственное приложение, так как я должен использовать его для каких-то других целей и не могу использовать сторонние приложения. Я могу взять звук с mi c и воспроизвести на колонках, но при их воспроизведении слышен тикающий звук. Я не смог получить его в других приложениях, но в моем приложении это заметно.

Я использую AudioRecord для записи звука и AudioTrack для его воспроизведения. Как только чтение завершено, я передаю буфер для воспроизведения потока, и он воспроизводит аудио оттуда.

Ниже приведен псевдокод для того же

/**
 * Audio recording & sending to thread.
 */
audioRecorder = new AudioRecord(
            MediaRecorder.AudioSource.MIC,
            8000,
            AudioFormat.CHANNEL_IN_MONO,
            AudioFormat.ENCODING_PCM_16BIT,
            AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT)
        );

audioRecorder.startRecording();

while(audioStreaming)
{
    int streamLength = audioRecorder.read(audioStreamBuffer, 0, audioStreamBuffer.length);

    pass audioStreamBuffer and streamLength to thread
}


/**
 * Fetching from thread and playback.
 */
audioTrack = AudioTrack(AudioManager.STREAM_MUSIC, Playback.DEFAULT_RECORDER_SAMPLERATE,
                AudioFormat.CHANNEL_OUT_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT),
                AudioTrack.MODE_STREAM);

audioTrack.play();

if(! audioPaused){
    audioTrack.write(data, 0, data.length);
}

Я не уверен, почему тиканье в моем коде и как мне его решить. Я читал об этом здесь , но это относится к AudioTrack.MODE_STATIC, и у меня есть MODE_STREAM.

Я предполагаю, что у меня может быть та же проблема, что и в приведенной выше ссылке, но я не уверен, как ее решить или в чем еще может быть проблема? Можете ли вы дать несколько возможных советов, чтобы я мог go через них?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...