Android AudioRecord против MediaRecorder для записи звука - PullRequest
81 голосов
/ 04 мая 2011

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

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

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

Ответы [ 3 ]

71 голосов
/ 04 мая 2011

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

28 голосов
/ 07 октября 2013

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

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

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

16 голосов
/ 15 апреля 2013

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

...