Android AudioRecord и MediaRecorder

Я разрабатываю приложение для обработки звука, в котором мне нужно записывать звук, а затем обрабатывать его, чтобы получить функции этой записи. Однако я хочу, чтобы звук в воспроизводимом формате воспроизводился с помощью MediaPlayer.

Я видел, что для записи звука для его обработки лучше использовать AudioRecord, потому что оттуда я могу получить необработанный звук. Но тогда я не могу записать данные в файл в воспроизводимом формате (есть ли какая-нибудь библиотека для этого в андроиде?).

Я использовал этот метод для записи необработанных данных, а затем записал их в файл: http://andrewbrobinson.com/2011/11/27/capturing-raw-audio-data-in-android/ Но когда я пытаюсь воспроизвести этот файл на устройстве, он не воспроизводится .

Затем, если я использую MediaRecorder, я не знаю, как декодировать данные для извлечения функций. Я смотрел на MediaExtractor, но похоже, что MediaExtractor не декодирует кадры.

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

Благодаря вашим ответам.


person Miquel    schedule 08.10.2012    source источник


Ответы (3)


Использование AudioRecord - правильный путь, если вам нужно выполнить какую-либо обработку. Чтобы воспроизвести его, у вас есть несколько вариантов. Если вы собираетесь воспроизводить его только в своем приложении, вы можете использовать AudioTrack вместо MediaPlayer для воспроизведения необработанных потоков PCM.

Если вы хотите, чтобы в него можно было играть с другими приложениями, вам нужно сначала преобразовать его во что-то другое. WAV обычно самый простой, так как вам просто нужно добавить заголовок. Вы также можете найти библиотеки для преобразования в другие форматы, такие как JOrbis для OGG или JLayer для MP3 и т. д.

person Geobits    schedule 08.10.2012
comment
Спасибо, это сработало для меня. Наконец, я записал звук в необработанные файлы PCM и смог воспроизвести их с помощью AudioTrack. - person Miquel; 19.10.2012

Для получения наилучшего качества вы должны использовать класс AudioRecord вместо MediaRecorder.
Пожалуйста, посмотрите ссылку ниже:
Нужен простой пример для аудиозаписи

Также посмотрите эту ссылку: http://i-liger.com/article/android-wav-audio-recording

person Imran Zulfiqar    schedule 08.10.2012

Если вы используете объект AudioRecord для получения необработанного аудиосигнала, следующий шаг, чтобы сохранить его в виде воспроизводимого файла, не так сложен, вам просто нужно добавить заголовок WAV перед захваченными аудиоданными, после чего вы получите файл .WAV. в которую вы можете играть на большинстве мобильных телефонов.

Файл .WAV представляет собой файл в формате RIFF. заголовок RIFF для файла WAV имеет длину 44 байта и содержит информацию о частоте дискретизации, ширине выборки и количестве каналов. вы можете получить подробную информацию по здесь

Я выполнил пробную функцию на телефонах Android, и она сработала.

person Zephyr    schedule 06.02.2014