如何在Android 2.3(Gingerbread)中以mp4/m4a格式录制音频?

4

我想在我的Android应用中录制音频,但我希望音频文件以.mp4格式并采用AAC LC编码;可以在我的桌面上播放。因此,使用以下代码,我尝试进行录制,并且我能够在我的Android设备上播放它。

mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setOutputFile("/mnt/sdcard/abcapp/test.mp4");
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

但是,当我尝试在我的电脑上播放它时,我无法播放这个mp4文件。我使用了包括VLC、KMPlayer等所有媒体播放器进行尝试,但都无法播放。
最令人烦恼的是,Play Store上有一些应用程序,例如“Easy Voice Recorder”,可以录制为.mp4格式,并可以使用Windows Media Player进行回放。
请帮忙解决。
谢谢。
1个回答

6

找到了解决方案。实际上,也可以称之为Android中的一个错误。

我没有使用 mRecorder.stop() 停止音频录制,而是设置了 mRecorder.setMaxDuration(10000)。因此,音频记录器会自动停止,并且不会对音频进行编码成AAC或者应用适当的容器,因此无法得到正确的文件。

如果你正在使用 mRecorder.setMaxDuration(),那么解决方案很简单,只需要使用 MediaRecorder.OnInfoListener 实现包含类,当超时回调发生时调用 mRecorder.stop()


mRecorder.setMaxDuration(10000); mRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener(){ @Override public void onInfo(MediaRecorder mr, int what, int extra) { mRecorder.stop(); } }); - Ryan Amaral

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接