Chcę nagrać ludzki głos na moim telefonie z Androidem. Zauważyłem, że Android ma do tego dwie klasy: AudioRecord i MediaRecorder . Czy ktoś może mi powiedzieć, jaka jest różnica między nimi i jakie są odpowiednie przypadki użycia dla każdego z nich?
Chcę móc analizować ludzką mowę w czasie rzeczywistym w celu pomiaru amplitudy itp. Czy mam rację, rozumiejąc, że AudioRecord lepiej nadaje się do tego zadania?
Zauważyłem na oficjalnej stronie przewodnika Androida do nagrywania dźwięku , używają MediaRecorder bez wzmianki o AudioRecord.
źródło
Jak rozumiem,
MediaRecorder
jest to czarna skrzynka, która daje skompresowany plik audio na wyjściu iAudioRecorder
daje tylko surowy strumień dźwięku i musisz go skompresować samodzielnie.MediaRecorder
podaje maksymalną amplitudę od ostatniego wywołaniagetMaxAmplitude()
metody, dzięki czemu można na przykład zaimplementować wizualizator dźwięku.Dlatego w większości przypadków
MediaRecorder
jest to najlepszy wybór, z wyjątkiem tych, w których należy wykonać skomplikowane przetwarzanie dźwięku i potrzebujesz dostępu do surowego strumienia audio.źródło
AudioRecorderer najpierw zapisuje dane w minBuffer, a następnie są kopiowane stamtąd do bufora tymczasowego, w MediaRecorder kopiowane są do plików. W AudioRecorder potrzebujemy api setRecordPosition (), aby skopiować zapisane dane na wymaganą pozycję, podczas gdy w MediaRecorder to zadanie wykonuje wskaźnik pliku, aby ustawić pozycję znacznika. AudioRecorder może być używany do tych aplikacji, które działają na emulatorze, można to zrobić, zapewniając niską częstotliwość próbkowania, taką jak 8000, podczas gdy za pomocą MediaRecorder nie można nagrywać dźwięku za pomocą emulatora. W AudioRecord ekran zasypia po pewnym czasie, podczas gdy w MediaRecorder ekran nie śpi.
źródło