Android:以mp3格式录制声音

use*_*239 15 mp3 android record

我正在构建一个Android应用程序,具有通过麦克风捕获声音并通过耳机播放的功能.为此,我使用了"AudioRecord"和"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);
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

Adv*_*t S 40

有一个解决方法是使用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();
Run Code Online (Sandbox Code Playgroud)

这里的重要部分是setOuputFormatsetAudioEncoder.显然,如果您正在使用MediaRecorder.OutputFormat.MPEG_4并且MediaRecorder.AudioEncoder.AAC在一起,MediaRecorder会记录可播放的mp3 .希望这有助于某人.

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

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

  • 抱歉,但这不会产生MP3编码的文件.它们仍然是aac编码的(在我的星系s6上的leaat) (4认同)
  • 伙计们,只因为你命名文件MP3的扩展名,它不会使它成为MP3!它是AAC编码的,不支持AAC的设备不会播放它!所以这不是一个解决方法,这不应该被投票! (3认同)

Chi*_*rag 10

在git上你可以找到Mp3 Voice Recorder Sample For Android的源代码.

查看此源代码.