我试图使用AudioRecord类来录制WAV文件。问题是它只提供原始PCM数据,如果我将它写入文件,则没有标题信息,因此它不会在任何媒体播放器中播放。我怎样才能从这个原始数据创建一个WAV文件?使用Android SDK从原始PCM数据创建WAV文件
或者,还有什么其他方式可以将Android中的声音录制到WAV文件(或MP3)?
哦,我知道MediaRecorder无法使用,因为它不支持WAV或MP3格式。
我试图使用AudioRecord类来录制WAV文件。问题是它只提供原始PCM数据,如果我将它写入文件,则没有标题信息,因此它不会在任何媒体播放器中播放。我怎样才能从这个原始数据创建一个WAV文件?使用Android SDK从原始PCM数据创建WAV文件
或者,还有什么其他方式可以将Android中的声音录制到WAV文件(或MP3)?
哦,我知道MediaRecorder无法使用,因为它不支持WAV或MP3格式。
好的,我有这个想通了。这篇文章是在帮助我至关重要: http://computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java
基本上,我用ByteArrayOutputStream从AudioRecord,然后让我把字节数组,它的大小,当这个过程完成写的原始PCM数据。然后,我可以将这些数据与SampleRate,BitRate和Stereo/Mono设置一起使用,以根据上述链接创建WAV标头。生成的文件完美地工作!
检查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
我绝对需要将输出文件设置为WAV(PCM编码)或MP3。它上传到的服务需要这个。所以,据我所见,我无法使用MediaRecorder。我也是 – user496854 2011-01-24 03:09:10
我绝对需要输出文件为WAV(PCM编码)或MP3。它上传到的服务需要这个。所以,据我所见,我无法使用MediaRecorder。我对所有低级别的东西也很不满意,所以我不知道自己在创建heade时会有多好。有没有这种功能的Java包? – user496854 2011-01-24 03:14:38
实际上我发现这个:http://computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java,这让它更容易工作。但我不知道如何获得字节40的数据块的大小。我将原始PCM数据写入文件,那么它只是该文件的大小? – user496854 2011-01-24 07:01:55
您可能想要使用mediarecord类
哦...我试过在android中读取原始PCM数据...请问您可以发布您使用的代码吗? – Atmocreations 2012-03-02 18:27:00