Domanda

Mi piacerebbe catturare l'audio in uscita da un gioco e registrarlo in un file audio poiché è riprodotto.È possibile nel framework in opensl?Come collegando l'outputMix a un audiolorecorder, o qualcosa del genere?

Grazie in Avanzato.

È stato utile?

Soluzione

È possibile registrare un callback sulla coda e ottenere il buffer di uscita prima / dopo che è stato ennequed nella coda del buffer per l'output.Potresti avere un wavbuffer (un breve array la lunghezza della dimensione del buffer) che è scritta su ogni enquequee di un nuovo buffer.I contenuti di questo buffer vengono quindi scritti in un file.

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
.

L'installazione di base opensl per la callback della coda è spiegata in qualche dettaglio In questa pagina

e un mezzo di base per la creazione di un file wav in C ++ può essere trovato qui nota cheDevi avere un'idea piuttosto definitiva della dimensione effettiva del file WAV totale in quanto è parte della sua intestazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top