Подтвердить что ты не робот

Android AudioRecord против MediaRecorder для записи аудио

Я хочу записать человеческий голос на свой Android-телефон. Я заметил, что Android имеет два класса: AudioRecord и MediaRecorder. Может ли кто-нибудь сказать мне, какая разница между ними и какие подходящие варианты использования для каждого?

Я хочу иметь возможность анализировать человеческую речь в реальном времени для измерения амплитуды и т.д. Правильно ли я понимаю, что AudioRecord лучше подходит для этой задачи?

Я заметил на официальной веб-странице для записи звука, они используют MediaRecorder без упоминания AudioRecord.

4b9b3361

Ответ 1

Если вы хотите выполнить анализ во время записи, все еще нужно выполнить AudioRecord, так как MediaRecorder автоматически записывается в файл. AudioRecord имеет тот недостаток, что после вызова startRecording() вам необходимо опросить данные самостоятельно из экземпляра AudioRecord. Кроме того, вы должны читать и обрабатывать данные достаточно быстро, чтобы внутренний буфер не переполнялся (посмотрите в выводе logcat, AudioRecord сообщит вам, когда это произойдет).

Ответ 2

Как я понимаю MediaRecorder - это черный ящик, который дает сжатый аудиофайл на выходе, а AudioRecorder дает вам просто сырой звуковой поток, и вам приходится сжимать его самостоятельно.

MediaRecorder дает максимальную амплитуду из последнего вызова метода getMaxAmplitude(), чтобы вы могли реализовать, например, звуковой визуализатор.

Таким образом, в большинстве случаев MediaRecorder является лучшим выбором, кроме тех, в которых вы должны выполнить сложную обработку звука, и вам нужен доступ к необработанному аудиопотоку.

Ответ 3

AudioRecorderer сначала сохраняет данные в minBuffer, затем копируется оттуда во временный буфер, а в MediaRecorder копируется в файлы. В AudioRecorder нам нужно api setRecordPosition(), чтобы скопировать сохраненные данные в нужную позицию, тогда как в MediaRecorder указатель файла выполняет это задание, чтобы установить положение маркера. AudioRecorder может использоваться для тех приложений, которые работают на эмуляторе, это можно сделать, предоставляя низкую частоту дискретизации, например 8000, при использовании MediaRecorder звук не может быть записан с помощью эмулятора. В AudioRecord экран засыпает через некоторое время, а в MediaRecorder экран не заснет.