Ich möchte menschliche Stimme auf meinem Android-Handy aufnehmen. Ich habe festgestellt, dass Android zwei Klassen hat, um dies zu tun: AudioRecord und MediaRecorder . Kann mir jemand sagen, was der Unterschied zwischen den beiden ist und welche Anwendungsfälle für jeden geeignet sind?
Ich möchte in der Lage sein, menschliche Sprache in Echtzeit zu analysieren, um die Amplitude usw. zu messen. Verstehe ich richtig, dass AudioRecord für diese Aufgabe besser geeignet ist?
Ich habe auf der offiziellen Webseite des Android- Handbuchs festgestellt , dass sie MediaRecorder verwenden, ohne AudioRecord zu erwähnen.
quelle
Soweit ich weiß,
MediaRecorder
handelt es sich um eine Blackbox, die eine komprimierte Audiodatei auf dem AusgangAudioRecorder
liefert und nur einen rohen Soundstrom liefert, den Sie selbst komprimieren müssen.MediaRecorder
gibt Ihnen die maximale Stärke vom letzten Aufruf dergetMaxAmplitude()
Methode an, sodass Sie beispielsweise einen Sound Visualizer implementieren können.In den meisten Fällen
MediaRecorder
ist dies die beste Wahl, mit Ausnahme derjenigen, bei denen Sie eine komplizierte Klangverarbeitung durchführen sollten und Zugriff auf den rohen Audiostream benötigen.quelle
AudioRecorderer speichert Daten zuerst in minBuffer und wird dann von dort in den temporären Puffer kopiert. In MediaRecorder werden sie in Dateien kopiert. In AudioRecorder benötigen wir die API setRecordPosition (), um die gespeicherten Daten an die gewünschte Position zu kopieren, während in MediaRecorder der Dateizeiger diesen Job ausführt, um die Position des Markers festzulegen. AudioRecorder kann für Apps verwendet werden, die auf einem Emulator ausgeführt werden. Dies kann durch Bereitstellung einer niedrigen Abtastrate wie 8000 erfolgen. Bei Verwendung von MediaRecorder kann das Audio nicht mit dem Emulator aufgezeichnet werden. In AudioRecord wird der Bildschirm nach einiger Zeit in den Ruhezustand versetzt, während in MediaRecorder der Bildschirm nicht in den Ruhezustand versetzt wird.
quelle