Intereting Posts
Android-эквивалент NSUserDefaults в iOS Обслуживание локального веб-сайта через Bluetooth на мобильный телефон без использования Интернета Каков наилучший способ выбрать видео на Android? Кнопка выхода Android App «Неподдерживаемая зависимость шаблона: обновите плагин Android Eclipse» с помощью SDK Tools v22 SharedPreferences не будет делиться между действиями ImageButton: Значок Force square (высота = WRAP_CONTENT, width =?) Удаление файла Android оставляет пустое место в галерее NotifyDataSetChanged () обновляет список и прокручивает подсказки назад Android WebView, как обрабатывать перенаправления в приложении, а не открывать браузер Android: использование LinkMovementMethod для редактирования текста Как импортировать приложения AOSP (запуск, контакты, …) в Android-Studio? Андроид ANR в смене MediaPlayer OnConfigurationChange не вызывается после изменения языка Как автоматически импортировать необходимые классы в Android Studio с помощью ярлыка?

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