Android: запись звука в формате mp3

Я создаю приложение для 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); 

Но главная проблема в том, что я хочу записывать входящий звук в формате mp3? Пожалуйста, помогите мне в этом, я буду очень благодарен …

Заранее спасибо

Solutions Collecting From Web of "Android: запись звука в формате mp3"

Для сохранения файлов .mp3 с использованием 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(); 

Важная часть здесь – setOuputFormat и setAudioEncoder . По-видимому, MediaRecorder записывает воспроизводимые mp3, если вы используете MediaRecorder.OutputFormat.MPEG_4 и MediaRecorder.AudioEncoder.AAC вместе. Надеюсь, это помогает кому-то.

Конечно, если вы предпочитаете использовать класс AudioRecorder, я думаю, что исходный код Chirag, связанный ниже, должен работать просто отлично – https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid (хотя вам может понадобиться перевести часть из этого языка с японского на английский )

Изменить: как и Бруно, и некоторые другие отметили в комментариях, это не кодирует файл в формате MP3. Кодировка по-прежнему является AAC. Однако, если вы попытаетесь воспроизвести звук, сохраненный с помощью расширения .mp3 с помощью вышеприведенного кода, он по-прежнему будет воспроизводиться без проблем, потому что большинство медиаплееров достаточно умны, чтобы обнаружить реальную кодировку.

Здесь на git вы можете найти исходный код для Mp3 Voice Recorder Sample для Android.

Проверьте этот исходный код.

Это работа для меня

 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 (); `

Установите outputformat рекордера как MediaRecorder.OutputFormat.DEFAULT . Я использовал это, и полученный аудиофайл – это mp3.

Это сработало для меня

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