Android AudioRecord vs. MediaRecorder zum Aufnehmen von Audio

Lesezeit: 2 Minuten

Benutzer-Avatar
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?

Ich bemerkte auf dem offiziellen Android Leitfaden-Webseite für die Aufnahme von Audioverwenden sie MediaRecorder ohne Erwähnung von AudioRecord.

Benutzer-Avatar
Stefan

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 …

    – Rommel Paras

    12. September 2014 um 2:19 Uhr

  • @RommelParas Suchen Sie in dieser Klasse in “Telegramm” nach Android-Quellen. github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/…

    – David

    14. November 2016 um 7:45 Uhr

  • @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

Benutzer-Avatar
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.

1312410cookie-checkAndroid AudioRecord vs. MediaRecorder zum Aufnehmen von Audio

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy