Это резко сократит ваши задержки. Если МГц равен 44100, а вы находитесь в конфигурации MONO с 256, ваша задержка будет не менее 1000 * 256/44100 миллисекунд = ~ 5,8 мс. 256/44100 - это преобразование выборок в секунды, поэтому умножение на 1000 дает миллисекунды. Проблемы внутренней реализации плеера. Вы не можете контролировать это из Java. Надеюсь, это поможет кому-то :)

аюсь разработать приложение, подобное iRig для Android, поэтому первым делом нужно захватить микрофонный вход и одновременно воспроизвести его.

У меня это есть, но проблема в том, что я получаю некоторую задержку, которая делает это непригодным для использования, и если я начну обрабатывать буфер, я боюсь, что он станет совершенно непригодным для использования.

Я использую аудиозапись и аудиотрек, как это:

    new Thread(new Runnable() {
        public void run() {
            while(mRunning){
                mRecorder.read(mBuffer, 0, mBufferSize);
                //Todo: Apply filters here into the buffer and then play it modified
                mPlayer.write(mBuffer, 0, mBufferSize);         
                //Log.v("MY AMP","ARA");
            }

И инициализация таким образом:

// ==================== INITIALIZE ========================= //
public void initialize(){

    mBufferSize = AudioRecord.getMinBufferSize(mHz, 
                AudioFormat.CHANNEL_CONFIGURATION_MONO, 
                AudioFormat.ENCODING_PCM_16BIT);

    mBufferSize2 = AudioTrack.getMinBufferSize(mHz, 
                AudioFormat.CHANNEL_CONFIGURATION_MONO, 
                AudioFormat.ENCODING_PCM_16BIT);

    mBuffer = new byte[mBufferSize];

    Log.v("MY AMP","Buffer size:" + mBufferSize);

    mRecorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
                mHz,
                AudioFormat.CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT, 
                mBufferSize);

    mPlayer = new AudioTrack(AudioManager.STREAM_MUSIC,
                mHz,
                AudioFormat.CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                mBufferSize2, 
                AudioTrack.MODE_STREAM);    

}

Вы знаете, как получить более быстрый ответ? Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос