Android:以mp3格式录制声音
我正在构建一个android应用程序,具有通过麦克风捕获声音并通过耳机播放的功能。为此,我使用了“AudioRecord”和“AudioTrack”。以下是一些代码的一部分,我使用,(只是为了理解)Android:以mp3格式录制声音
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格式?请帮我在这,我会很感激......
由于提前
这对我来说
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();`
这不记录mp3,只有文件的扩展名将是mo3,而不是文件格式。 – 2015-05-25 11:53:39
有一种解决方法可以使用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类,我认为下面链接的源代码奇拉格应该只是罚款 - https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid(尽管你可能需要从日本翻译它的一些英语)
编辑:由于布鲁诺和其他一些人在评论中指出,没有编码该文件在MP3中。编码仍然是AAC。但是,如果尝试播放声音,并通过上面的代码使用.mp3扩展名保存,则它仍然可以毫无问题地播放,因为大多数媒体播放器都足够智能以检测真实编码。
将您的outputformat
设置为MediaRecorder.OutputFormat.DEFAULT
。我已经使用过这个,最终的音频文件是一个mp3。
嗨。我试过这个,'adb将结果拉到我的linux开发主机上。生成文件中的文件给出:/home/sjs/AudioDemo.mp3:ISO Media,MPEG v4系统,3GPP。即该文件是一个mp4文件。设备是运行Android 6.0.1的Nexus 7。对不起,谢谢。 – 2016-06-20 22:31:25
这为我工作
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();
这真的不好回答,我很愿意接受它,但问题是,它影响“AudioTrack”,我的意思是使用此代码后,我不能听声音在耳机。这两个过程是否可以相互配合?就像使用“AudioTrack”播放声音并将其录制到mp3中一样?感谢您的回答 – user609239 2012-08-16 12:59:25
您可以使用Media Player Class在耳机中收听。 – 2012-08-16 13:00:48
是的,但是MediaPlayer在完成录制后很有用,但是在这种情况下,要求是播放声音并且同步录制它 – user609239 2012-08-16 13:15:28