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