Android AudioRecord vs. MediaRecorder zum Aufnehmen von Audio
Lesezeit: 2 Minuten
Stackoverflowuser2010
Ich möchte die menschliche Stimme auf meinem Android-Telefon aufnehmen. Mir ist aufgefallen, dass Android zwei Klassen hat, um dies zu tun: Tonaufnahme und MediaRecorder. Kann mir jemand sagen, was der Unterschied zwischen den beiden ist und was geeignete Anwendungsfälle für beide sind?
Ich möchte in der Lage sein, die menschliche Sprache in Echtzeit zu analysieren, um die Amplitude usw. zu messen. Verstehe ich richtig, dass AudioRecord für diese Aufgabe besser geeignet ist?
Wenn Sie Ihre Analyse durchführen möchten, während die Aufzeichnung noch läuft, müssen Sie verwenden AudioRecordwie MediaRecorder automatisch in eine Datei aufzeichnet. AudioRecord hat den nachteil, dass nach dem anruf startRecording() Sie müssen die Daten selbst aus dem abrufen AudioRecord Beispiel. Außerdem müssen Sie die Daten schnell genug lesen und verarbeiten, damit der interne Puffer nicht überläuft (sehen Sie in der Logcat-Ausgabe nach, AudioRecord wird Ihnen sagen, wann das passiert).
Haben Sie Beispielcode von AudioRecord? Die meisten, die ich gefunden habe, sind MediaRecorder …
@David Kennen Sie ein einfacheres Beispiel? Eine, die alleine funktioniert?
– Android-Entwickler
24. Juni 2018 um 9:05 Uhr
@androiddeveloper leider nein.
– David
25. Juni 2018 um 8:22 Uhr
Wie ich es verstehe MediaRecorder ist eine Blackbox, die am Ausgang komprimierte Audiodateien ausgibt AudioRecorder gibt Ihnen nur einen rohen Soundstream und Sie müssen ihn selbst komprimieren.
MediaRecorder gibt Ihnen die maximale Ampere vom letzten Anruf von getMaxAmplitude() -Methode, damit Sie beispielsweise einen Klangvisualisierer implementieren können.
Also in den meisten Fällen MediaRecorder ist die beste Wahl, außer denen, bei denen Sie eine komplizierte Tonverarbeitung vornehmen sollten und Zugriff auf den rohen Audiostream benötigen.
Danke für die Erwähnung der Methode getMaxAmplitude(). Das ist höchstwahrscheinlich alles, was ich brauche.
– Dheeraj Bhaskar
20. März 2014 um 22:03 Uhr
Wie kann ich Visualizer mit MediaRecorder implementieren?
– Ein Schlag Mann
30. März 2015 um 10:00 Uhr
Was genau hilft getMaxAmplitude hier? Müssen Sie für den Visualizer nicht immer die aktuelle Version abrufen?
– Android-Entwickler
24. Juni 2018 um 8:55 Uhr
sanjeev51
AudioRecorderer speichert Daten zuerst in minBuffer, dann werden sie 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 diese Aufgabe übernimmt, um die Position des Markers festzulegen. AudioRecorder kann für Apps verwendet werden, die auf einem Emulator ausgeführt werden. Dies kann durch Bereitstellen einer niedrigen Abtastrate wie 8000 erfolgen, während bei Verwendung von MediaRecorder das Audio nicht mit dem Emulator aufgezeichnet werden kann. In AudioRecord schläft der Bildschirm nach einiger Zeit ein, während in MediaRecorder der Bildschirm nicht schläft.
13124100cookie-checkAndroid AudioRecord vs. MediaRecorder zum Aufnehmen von Audioyes