Gravação de áudio para uso por uma editora
O BaseAudioDevice.startCapturer O método é chamado quando o dispositivo de áudio deve começar a capturar o áudio a ser publicado. O NoiseAudioDevice A implementação desse método inicia o capturer thread a ser executado na fila após 1 segundo:
override fun startCapturer(): Boolean {
capturerStarted = true
capturerHandler?.postDelayed(capturer, capturerIntervalMillis)
return true
}
O capturer A thread gera um buffer contendo amostras de dados aleatórios (ruído branco). Em seguida, ela chama a writeCaptureData método do AudioBus objeto, que envia os samples para o barramento de áudio. O publisher no aplicativo usa os samples enviados para o barramento de áudio para
transmitir como áudio no stream publicado. Então, se uma captura ainda estiver em andamento (se o aplicativo estiver publicando), o capturer a thread é executada novamente após mais um segundo:
private val capturer: Runnable = object : Runnable {
override fun run() {
capturerBuffer?.rewind()
val rand = Random()
rand.nextBytes(capturerBuffer?.array())
audioBus.writeCaptureData(capturerBuffer, SAMPLING_RATE)
if (capturerStarted && !audioDriverPaused) {
capturerHandler?.postDelayed(this, capturerIntervalMillis)
}
}
}
O AudioDevice A classe inclui outros métodos que são implementados pela NoiseAudioDevice classe. No entanto, esse exemplo não realiza nenhuma ação relevante nesses métodos; portanto, eles não foram incluídos neste guia.
Driver de áudio personalizado
Aprenda a usar um driver de áudio personalizado para personalizar o áudio dos fluxos do emissor e do assinante. Você utilizará o driver de áudio personalizado quando quiser iniciar e interromper a reprodução de seu próprio arquivo de áudio, bem como realizar qualquer ação que não faça parte do comportamento padrão do chat de vídeo ao vivo fornecido pelo SDK.