我正在构建一个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格式录制传入的声音?请帮助我,我真的很感激...
先谢谢
答案 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();
此处的重要部分是setOuputFormat
和setAudioEncoder
。显然,如果您同时使用MediaRecorder.OutputFormat.MPEG_4
和MediaRecorder.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();`