我正在创建一个包含录音和播放的应用。是否可以以MP3格式录制文件?
我需要输出文件作为mp3格式。感谢。
答案 0 :(得分:11)
目前Android框架中没有内置MP3编码器(据我所知),所以你无法开箱即用。您需要在项目中添加MP3编码库才能执行此操作。
为此,您可以查看this stackoverflow帖子以获得完整答案。
答案 1 :(得分:8)
2015年更新:
android正式支持MP3 - (编辑) - 但是,这仅用于解码,而不是编码。
http://developer.android.com/guide/appendix/media-formats.html
核心媒体格式:MP3•单声道/立体声8-320Kbps常数(CBR)或 可变比特率(VBR)MP3(.mp3)
(编辑) - 对于较小的文件大小,您可以使用.mp4。您可以使用以下方式进行设置:
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
答案 2 :(得分:5)
Android框架上肯定有一个MP3编码器。
就像我回答here on stackoverflow一样,您需要做的就是:
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setOutputFile(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/myrecording.mp3");
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.prepare();
recorder.start();
此处的重要部分是setOuputFormat
和setAudioEncoder
。如果您同时使用MediaRecorder.OutputFormat.MPEG_4
和MediaRecorder.AudioEncoder.AAC
,MediaRecorder会录制可播放的mp3。
有趣的是,这个解决方案是我尝试运行的结果,我不知道为什么它有效。我希望有人可以在评论中阐明这一点。
修改强>
正如@JohnSmith和其他一些人在评论中指出的那样, 这不会编码 MP3格式的音频,并且Android上没有内置的MP3编码器
此解决方案似乎有效的原因是MediaPlayer在开始跟踪之前将编码识别为AAC(无论文件扩展名如何)。因此,虽然输出文件的mime类型是audio / mp4,但编码绝对是AAC。