Pergunta

Gostaria de capturar o áudio de saída de um jogo e gravá-lo em um arquivo de áudio enquanto ele é reproduzido.Isso é possível dentro da estrutura do OpenSL?Como conectar o OutputMix a um AudioRecorder ou algo assim?

Agradeço antecipadamente.

Foi útil?

Solução

Você pode registrar um retorno de chamada para a fila e obter o buffer de saída antes/depois de ser enfileirado na fila de buffer para saída.Você poderia ter um wavBuffer (uma matriz curta com o comprimento do tamanho do buffer) que é gravado em cada enfileiramento de um novo buffer.O conteúdo desse buffer é então gravado em um arquivo.

outBuffer = p->outputBuffer[p->currentOutputBuffer];  // obtain float buffer

for ( int i = 0; i < bufferSize; ++i )
    wavBuffer = ( short ) outBuffer[ i ] * 32768; // convert float to short

// now append contents of wavBuffer into a file

A configuração básica do OpenSL para o retorno de chamada da fila é explicada com alguns detalhes nesta página

E um meio muito básico de criar um arquivo WAV em C++ pode ser encontrado aqui observe que você deve ter uma ideia bastante definitiva do tamanho real do arquivo WAV total, pois faz parte de seu cabeçalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top