Android:以mp3格式录制声音

时间:2012-08-16 10:45:31

标签: android mp3 record

我正在构建一个Android应用程序,具有通过麦克风捕获声音并通过耳机播放的功能。为此,我使用了" AudioRecord"和#34; AudioTrack"。以下是我正在使用的代码的一部分(仅用于理解)

mInBufferSize = AudioRecord.getMinBufferSize(mSampleRate,
            AudioFormat.CHANNEL_CONFIGURATION_MONO, mFormat);
mOutBufferSize = AudioTrack.getMinBufferSize(mSampleRate,
            AudioFormat.CHANNEL_CONFIGURATION_MONO, mFormat);
mAudioInput = new AudioRecord(MediaRecorder.AudioSource.MIC,
            mSampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, mFormat,
            mInBufferSize);
mAudioOutput = new AudioTrack(AudioManager.STREAM_MUSIC, mSampleRate,
            AudioFormat.CHANNEL_CONFIGURATION_MONO, mFormat,
            mOutBufferSize, AudioTrack.MODE_STREAM);

但主要问题是我想以mp3格式录制传入的声音?请帮助我,我真的很感激...

先谢谢

6 个答案:

答案 0 :(得分:37)

使用MediaRecorder可以解决保存.mp3文件的问题。方法如下:

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。希望这有助于某人。

当然,如果您更愿意使用AudioRecorder类,我认为下面链接的源代码Chirag应该可以正常工作 - https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid(尽管您可能需要将其中一些从日语翻译成英语)

编辑:正如Bruno和其他一些人在评论中指出的那样,不能用MP3编码文件。编码仍然是AAC。但是,如果您尝试播放声音,通过上面的代码使用.mp3扩展名保存,它仍然会播放没有问题,因为大多数媒体播放器足够聪明,可以检测到真正的编码。

答案 1 :(得分:10)

在git上,您可以找到Mp3 Voice Recorder Sample For Android的源代码。

Checkout此源代码。

答案 2 :(得分:0)

将录音机的outputformat设为MediaRecorder.OutputFormat.DEFAULT。我用过这个,结果音频文件是一个mp3。

答案 3 :(得分:0)

这对我有用

mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory()
    .getAbsolutePath() + "/record.mp3");
mediaRecorder.prepare();
mediaRecorder.start();

答案 4 :(得分:0)

我知道这是一个老问题。但是如果它可以帮助我创建了一个带有android java完整录音应用程序演示的存储库的人,则输出文件是mp3文件。 请记住,如果不需要请求用户权限,我会将目标sdk设置为21。这仅用于演示目的。 您可以克隆并使用它。

我使用的大多数代码来自此仓库:this

我的演示仓库: mp3 recording app

答案 5 :(得分:-2)

这对我有用

outputFile = Environment.getExternalStorageDirectory()
            .getAbsolutePath() + "/myrecording.mp3";
    myAudioRecorder = new MediaRecorder();
    myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
    myAudioRecorder.setOutputFile(outputFile);`

myAudioRecorder.prepare();             myAudioRecorder.start();`