Latência de áudio para desenvolvedores de aplicativos

Para obter a menor latência de áudio possível, recomendamos o uso do Oboe .

Oboé

Oboe usa áudio nativo e é construído em AAudio para Android 8.1+ e OpenSL ES para versões mais antigas do Android. Para obter a menor latência possível para um dispositivo, defina setPerformanceMode(oboe::PerformanceMode::LowLatency) e setSharingMode(oboe::SharingMode::Exclusive) . Consulte o guia de introdução , README.md e o guia completo para obter mais informações sobre o Oboe. Consulte o aplicativo Soundboard para obter um aplicativo de amostra usando o Oboe.

Observação: se você usar o AudioTrack para criar fluxos de áudio de saída em Java para aplicativos sensíveis à latência, use o modo PERFORMANCE_MODE_LOW_LATENCY .

Lista de verificação de implementação

Para usar o áudio nativo do Android:

  1. Baixe e instale o Android NDK .
  2. Siga o Guia de introdução do Oboe.
  3. Chame setPerformanceMode(oboe::PerformanceMode::LowLatency) e setSharingMode(oboe::SharingMode::Exclusive) no construtor Oboe.
  4. Use o tamanho do buffer nativo recomendado e a taxa de amostragem retornada por android.media.AudioManager.getProperty(java.lang.String) .

    Nota: O mesmo tamanho de buffer e taxa de amostragem também devem ser usados ​​para entrada.

  5. Mantenha seus manipuladores de retorno de chamada curtos, sem uso excessivo de CPU ou bloqueio ilimitado. Evite a inversão de prioridade.
  6. Considere o uso de algoritmos sem bloqueio para se comunicar entre os manipuladores de retorno de chamada de entrada e saída e entre os manipuladores de retorno de chamada e o restante de seu aplicativo.

Outros recursos

source.android.com

O site source.android.com foi projetado principalmente para OEMs que constroem dispositivos Android e fornecedores de SoC que fornecem componentes para esses OEMs.

No entanto, há uma grande quantidade de informações úteis sobre latência neste site, portanto, convém analisá-las. Veja os artigos em Latência de áudio.

android-ndk

Se você tiver dúvidas sobre como usar o áudio nativo do Android, pergunte no grupo de discussão android-ndk .

Reportar bugs no Oboe

Se você tiver problemas ao usar o Oboe, pode registrar um bug .

Vídeos

Começando com Oboé
Áudio de baixa latência - porque seus ouvidos valem a pena
Android Dev Summit 2018.
Ganhando no Android - Como otimizar um aplicativo de áudio Android
Desafio do Desenvolvedor Android 2018.
Áudio de alto desempenho no Android (Google I/O 2013)
O vídeo todo é sobre latência.
Construindo ótimas experiências multimídia no Android (Google I/O 2014)
Os primeiros 14 minutos são sobre áudio em geral e latência de entrada em particular.
Latência de áudio: tamanhos de buffer (100 dias de desenvolvimento do Google)
Descreve a relação entre latência de áudio, tamanhos de buffer e agendamento de tarefas.