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


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

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

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

3 74

3 ответа:

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

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

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

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

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