Создание файла WAV из необработанных данных PCM с помощью Android SDK - PullRequest
20 голосов
/ 24 января 2011

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

Или, альтернативно, есть ли другой способ записи звука в Android в файл WAV (или, альтернативно, MP3)?и я знаю, что MediaRecorder нельзя использовать, потому что он не поддерживает форматы WAV или MP3.

Ответы [ 3 ]

13 голосов
/ 24 января 2011

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

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

0 голосов
/ 17 мая 2012

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

0 голосов
/ 24 января 2011

Проверьте 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 / Документы / аудиоформатов / WAVE / WAVE.html

...