Подтвердить что ты не робот

Создание WAV файла из необработанных данных PCM с помощью Android SDK

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

Или, альтернативно, есть ли другой способ записи звука в Android в WAV файл (или, альтернативно, MP3)?

О, и я знаю, что MediaRecorder не может использоваться, потому что он не поддерживает ни форматы WAV, ни MP3.

4b9b3361

Ответ 1

Хорошо, я понял это. Эта должность имела решающее значение для того, чтобы помочь мне: http://computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java

В принципе, я использовал ByteArrayOutputStream для записи необработанных данных PCM из AudioRecord, который затем позволяет мне получить массив байтов и его размер, когда процесс будет выполнен. Затем я могу использовать эти данные в сочетании с настройками SampleRate, BitRate и Stereo/Mono, чтобы создать заголовок WAV согласно приведенной выше ссылке. Полученный файл работает отлично!

Ответ 2

Проверьте MediaRecorder.setOutputFormat(), вы можете установить различные форматы контейнеров для вашей записи; есть MediaRecorder.OutputFormat.MPEG_4 и MediaRecorder.OutputFormat.THREE_GPP; единственный разрешенный формат по RAW установленAudioEncoder (MediaRecorder.AudioEncoder.AMR_NB);

Извините, но MP3 не помог. Вам действительно нужна mp3 для записи? WAV в противоположность MP3 - это контейнер, а не формат; WAV может быть любым форматом кодирования.

Вы всегда можете добавить некоторый заголовок WAV RIFF перед своими исходными данными pcm (если вы точно знаете формат). Проверьте здесь, как это должно выглядеть: http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html

Ответ 3

Вы можете использовать класс mediarecord