web-dev-qa-db-fra.com

Android: enregistrer le son au format mp3

Je construis une application Android, avec la possibilité de capturer le son via un microphone et de le jouer avec un casque. Pour cela, j'ai utilisé "AudioRecord" et "AudioTrack". Voici une partie du code que j'utilise (juste pour comprendre)

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

Mais le principal problème est que je veux enregistrer le son entrant au format mp3? S'il vous plaît aidez-moi dans ce domaine, je vais vraiment apprécier ...

Merci d'avance

15
user609239

Il existe une solution pour enregistrer des fichiers .mp3 à l'aide de MediaRecorder. Voici comment:

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

La partie importante ici est la setOuputFormat et la setAudioEncoder. Apparemment, MediaRecorder enregistre des fichiers MP3 jouables si vous utilisez MediaRecorder.OutputFormat.MPEG_4 et MediaRecorder.AudioEncoder.AAC ensemble. J'espère que ça aide quelqu'un.

Bien sûr, si vous préférez utiliser la classe AudioRecorder, je pense que le code source Chirag lié ci-dessous devrait très bien fonctionner - https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid (bien que vous ayez peut-être besoin de traduire certaines de ces informations) du japonais à l'anglais)

Edit: Comme Bruno et quelques autres l'ont souligné dans les commentaires, cela fait pas encoder le fichier au format MP3. Le codage est toujours AAC. Toutefois, si vous essayez de reproduire un son, enregistré à l'aide d'une extension .mp3 via le code ci-dessus, la lecture se déroulera sans problème, car la plupart des lecteurs multimédias sont suffisamment intelligents pour détecter le codage réel.

35
Advait S

Ici sur git vous pouvez trouver le code source de Mp3 Voice Recorder Sample For Android.

Checkout ce code source.

10
Chirag

Définissez votre outputformat de l’enregistreur sur MediaRecorder.OutputFormat.DEFAULT. J'ai utilisé cela et le fichier audio résultant est un mp3.

0
Akhil Soman

Cela a fonctionné pour moi

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