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? Пожалуйста, помогите мне в этом, я буду очень признателен...
Спасибо в Advance
Ответы
Ответ 1
Там есть работа для сохранения файлов .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 с помощью вышеприведенного кода, он по-прежнему будет воспроизводиться без проблем, потому что большинство медиаплееров достаточно умны, чтобы обнаружить реальную кодировку.
Ответ 2
Здесь на git вы можете найти исходный код для Mp3 Voice Recorder Sample для Android.
Проверить этот исходный код.
Ответ 3
Это работа для меня
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(); `
Ответ 4
Установите outputformat
рекордера как MediaRecorder.OutputFormat.DEFAULT
. Я использовал это, и полученный аудиофайл - это mp3.
Ответ 5
Это сработало для меня
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();