Подтвердить что ты не робот

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

4b9b3361

Ответ 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();