Android AudioRecord против MediaRecorder для записи звука
Я хочу записать человеческий голос на моем телефоне Android. Я заметил, что Android имеет два класса для этого: AudioRecord и MediaRecorder. Может ли кто-нибудь сказать мне, в чем разница между ними и какие подходящие варианты использования для каждого?
Я хочу иметь возможность для анализа человеческой речи в режиме реального времени для измерения амплитуды и т. д. Правильно ли я понимаю, что AudioRecord лучше подходит для этой задачи?
Я заметил на официальный Android руководство веб-страницы для записи аудио, они используют MediaRecorder без упоминания AudioRecord.
3 ответа:
если вы хотите сделать свой анализ во время записи все еще продолжается, вам нужно использовать
AudioRecord
, аMediaRecorder
автоматически записывает в файл.AudioRecord
имеет тот недостаток, что после вызоваstartRecording()
вам нужно опросить данные самостоятельно изAudioRecord
экземпляра. Кроме того, вы должны читать и обрабатывать данные достаточно быстро, чтобы внутренний буфер не был переполнен (смотрите в выводе logcat,AudioRecord
скажет вам, когда это произойдет).
как я понимаю
MediaRecorder
Это черный ящик, который дает сжатый аудиофайл на выходе иAudioRecorder
дает вам только сырой звуковой поток, и вы должны сжать его самостоятельно.
MediaRecorder
дает вам максимальную силу от последнего вызоваgetMaxAmplitude()
метод, так что вы можете реализовать звуковой визуализатор, например.так в большинстве случаев
MediaRecorder
самый лучший выбор, за исключением тех, в которых вы должны сделать некоторые сложные обработки звука, и вам нужен доступ к необработанным аудио поток.
AudioRecorderer сначала сохраняет данные в minBuffer, затем он копируется оттуда во временный буфер, в MediaRecorder он копируется в файлы. В AudioRecorder нам нужен api setRecordPosition () для копирования сохраненных данных в требуемом положении, тогда как в MediaRecorder указатель файла выполняет эту работу, чтобы установить положение маркера. AudioRecorder можно использовать для тех приложений, которые работают на эмуляторе это можно сделать, предоставляя низкую частоту дискретизации, например 8000, при использовании MediaRecorder аудио не может быть записано с помощью эмулятора. В осуществление аудиозаписи от спящего режима через некоторое время, в то время как в MediaRecorder экране не спит.