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

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

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

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

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

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

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

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

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

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