Il mio obiettivo è riprodurre file locale mentre si registra l'input del microfono del dispositivo a bassa latenza. Sono arrivato alla libreria Superpowered, perché dalla documentazione fornisce funzionalità a bassa latenza. Ho creato il giocatore usando SuperpoweredAdvancedAudioPlayer e SuperpoweredAndroidAudioIO e funziona bene.SDK Android potenziato Registrazione e riproduzione simultaneamente
SuperpoweredAndroidAudioIO ha il construcor con i parametri enableInput booleano, booleano enableOutput. Attualmente sto usando enableInput == false e enableOutput == true. Quando ho messo questi parametri su true - nessun effetto.
Mi chiedo se è possibile registrare file e riprodurre altri file contemporaneamente?
Inoltre, esiste una classe SuperpoweredRecorder nella libreria, ma non dice per la scrittura diretta su disco. E hanno bisogno di usare i metodi createWAV, fwrite, closeWAV. Ho provato a implementare il registratore separatamente ma la qualità non è buona (è due-tre volte più veloce della registrazione reale + il suono è distorto). Ecco il pezzo più semplice di codice per la registrazione che ho usato:
void SuperpoweredFileRecorder::start(const char *destinationPath) {
file = createWAV(destinationPath, sampleRate, 2);
audioIO = new SuperpoweredAndroidAudioIO(sampleRate, bufferSize, true, false, audioProcessing, NULL, bufferSize); // Start audio input/output.
}
void SuperpoweredFileRecorder::stop() {
closeWAV(file);
audioIO->stop();
}
static bool audioProcessing(void *clientdata, short int *audioInputOutput, int numberOfSamples, int samplerate) {
fwrite(audioInputOutput, sizeof(short int), numberOfSamples, file);
return false;
}
Probabilmente non posso usare superpoteri a tale scopo e la necessità di fare solo la registrazione con OpenSL ES direttamente.
Grazie in anticipo!
SuperpoweredAndroidAudioIO si prende cura di questo. Avere più istanze è una quantità inutile di codice. –
Puoi spiegare come scrivi l'output dell'audio dopo aver applicato gli effetti in un file? –
@kasurd puoi condividere il link GitHub dello stesso con una corretta implementazione. Questo sarà molto utile .. –