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

时间:2011-01-23 23:07:38

标签: android audio wav pcm audiorecord

我正在尝试使用AudioRecord类来录制WAV文件。问题是它只提供原始PCM数据,如果我将其写入文件,则没有标题信息,因此它不会在任何媒体播放器中播放。如何从这个原始数据创建WAV文件?

或者,有没有其他方法可以将Android中的声音录制到WAV文件(或者MP3)?

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

3 个答案:

答案 0 :(得分:13)

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

基本上,我使用ByteArrayOutputStream从AudioRecord写入原始PCM数据,然后让我在进程完成时获取字节数组及其大小。然后,我可以将该数据与SampleRate,BitRate和Stereo / Mono设置结合使用,以根据上面的链接创建WAV标头。生成的文件完美无缺!

答案 1 :(得分:0)

检查MediaRecorder.setOutputFormat(),您可以为录制设置不同的容器格式;有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

答案 2 :(得分:-3)

您可能想要使用mediarecord类