Android:如何获取MP3格式的媒体记录器输出?

时间:2011-02-03 12:51:13

标签: android

我正在创建一个包含录音和播放的应用。是否可以以MP3格式录制文件?

我需要输出文件作为mp3格式。感谢。

3 个答案:

答案 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();

此处的重要部分是setOuputFormatsetAudioEncoder。如果您同时使用MediaRecorder.OutputFormat.MPEG_4MediaRecorder.AudioEncoder.AAC,MediaRecorder会录制可播放的mp3。

有趣的是,这个解决方案是我尝试运行的结果,我不知道为什么它有效。我希望有人可以在评论中阐明这一点。

修改

正如@JohnSmith和其他一些人在评论中指出的那样, 这不会编码 MP3格式的音频,并且Android上没有内置的MP3编码器

此解决方案似乎有效的原因是MediaPlayer在开始跟踪之前将编码识别为AAC(无论文件扩展名如何)。因此,虽然输出文件的mime类型是audio / mp4,但编码绝对是AAC。