Intereting Posts
Установка размера диапазона в одной строке в StaggeredGridLayoutManager Выбор устройства Android Studio показывается до завершения Gradle Build Как добавить один и тот же взгляд к родительскому несколько раз, раздувая его только один раз Как избежать отклонения разрешения EACCES на SDCARD с версией KITKAT 4.4.2. Новая политика из Google Текстовое изображение показывает частичный текст Android Viewpager как слайд-галерея изображений Разница между объявлениями Admob и объявлениями Firebase Phonegap: можно ли обнаружить swipeLeft и SwipeRight touch от Javascript? Интерфейс Android Radio Layer (RIL) и / dev / Как обратные вызовы SurfaceHolder связаны с жизненным циклом деятельности? Кнопка меню Android не отображается Фрагмент onStop () вызывается непосредственно после onStart () – ПОЧЕМУ? Преобразование целочисленного значения цвета в RGB Как установить setLayoutParams для элементов линейного макета Сохранение файла во внутреннем хранилище android

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

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

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

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

Solutions Collecting From Web of "Android AudioRecord против MediaRecorder для записи аудио"

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

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

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

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

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