我正在尝试使用AudioRecord类来录制WAV文件。问题是它只提供原始PCM数据,如果我将其写入文件,则没有标题信息,因此它不会在任何媒体播放器中播放。如何从这个原始数据创建WAV文件?
或者,有没有其他方法可以将Android中的声音录制到WAV文件(或者MP3)?
哦,我知道MediaRecorder无法使用,因为它不支持WAV或MP3格式。
答案 0 :(得分:13)
基本上,我使用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类