使用Android SDK从原始PCM数据创buildWAV文件

我正在尝试使用AudioRecord类来logging一个WAV文件。 问题是,它只提供原始的PCM数据,如果我把它写到一个文件,没有标题信息,所以它不会在任何媒体播放器中播放。 我怎样才能从这个原始数据创build一个WAV文件?

或者,还有什么其他的方式来录制声音在Android的WAV文件(或MP3)?

哦,我知道MediaRecorder可以使用,因为它不支持WAV或MP3格式。

Solutions Collecting From Web of "使用Android SDK从原始PCM数据创buildWAV文件"

好的,我已经明白了。 这篇文章对帮助我至关重要: http : //computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java

基本上,我使用ByteArrayOutputStream从AudioRecord写入原始PCM数据,然后在完成过程时让我获取字节数组及其大小。 然后,我可以将这些数据与SampleRate,BitRate和Stereo / Mono设置一起使用,按照上面的链接创buildWAV头。 生成的文件完美的工作!

检查MediaRecorder.setOutputFormat(),你可以为你的logging设置不同的容器格式; 有MediaRecorder.OutputFormat.MPEG_4和MediaRecorder.OutputFormat.THREE_GPP; 唯一允许的RAW格式是setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

对不起,但MP3是没有用的。 你真的需要MP3录音? 在MP3的对面的WAV是一个容器 ,而不是一个格式 ; WAV可以是任何种类的编码格式。

你总是可以自由地在你的原始pcm数据前加上一些WAV RIFF标题(只要你完全知道格式)。 请点击这里查看它的样子: http : //www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html

您可能需要使用mediarecord类