Moim celem jest odtwarzanie lokalnego pliku podczas nagrywania sygnału wejściowego z mikrofonu przy niskim opóźnieniu. Przyszedłem do biblioteki Superpowered, ponieważ z dokumentacji zapewnia ona funkcję o małym opóźnieniu. Stworzyłem odtwarzacz za pomocą SuperpoweredAdvancedAudioPlayer i SuperpoweredAndroidAudioIO i gra się dobrze.Równoczesne nagrywanie i odtwarzanie Android Superpowered SDK
SuperpoweredAndroidAudioIO ma konstrukcję z parametrami boolean enableInput, boolean enableOutput. Obecnie używam enableInput == false i enableOutput == true. Kiedy ustawiam te parametry na true - bez efektu.
Zastanawiam się, czy możliwe jest jednoczesne nagrywanie pliku i odtwarzanie innego pliku?
Istnieje również klasa SuperpoweredRecorder w bibliotece, ale nie jest ona przeznaczona do bezpośredniego zapisu na dysk. I trzeba użyć metod createWAV, fwrite, closeWAV. Próbowałem oddzielnie implementować rejestrator, ale jakość nie jest dobra (jest dwa-trzy razy szybsza niż w przypadku prawdziwego nagrywania + dźwięk jest zniekształcony). Oto najprostszy kawałek kodu do nagrywania użyłem:
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;
}
Prawdopodobnie nie mogę używać Superpowered do tego celu i trzeba po prostu dokonać nagrania z OpenSL ES bezpośrednio.
Z góry dziękuję!
SuperpoweredAndroidAudioIO dba o to. Posiadanie wielu instancji jest niepotrzebną ilością kodu. –
Czy możesz wyjaśnić, jak zapisujesz wyjście audio po zastosowaniu efektów w pliku? –
@kasurd możesz udostępnić łącze GitHub tego samego z odpowiednią implementacją. To będzie bardzo pomocne .. –