it-swarm.com.de

Android: Aufnahme von Ton im MP3-Format

Ich baue eine Android-App mit der Möglichkeit, Ton über das Mikrofon aufzunehmen und über Kopfhörer abzuspielen. Dafür habe ich "AudioRecord" und "AudioTrack" verwendet. Folgendes ist ein Teil des Codes, den ich verwende (nur zum Verständnis)

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

Aber das Hauptproblem ist, dass ich eingehenden Ton im MP3-Format aufnehmen möchte. Bitte helfen Sie mir dabei, ich werde es wirklich schätzen ...

Danke im Voraus

15
user609239

Es gibt eine Lösung für das Speichern von MP3-Dateien mit MediaRecorder. Hier ist wie:

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

Der wichtige Teil ist hier die setOuputFormat und die setAudioEncoder. Offensichtlich zeichnet MediaRecorder abspielbare MP3-Dateien auf, wenn Sie MediaRecorder.OutputFormat.MPEG_4 und MediaRecorder.AudioEncoder.AAC zusammen verwenden. Hoffe das hilft jemandem.

Wenn Sie lieber die AudioRecorder-Klasse verwenden möchten, sollte der unten verlinkte Quellcode Chirag natürlich gut funktionieren - https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid (obwohl Sie möglicherweise etwas davon übersetzen müssen von Japanisch nach Englisch)

Editieren: Wie Bruno und einige andere in den Kommentaren darauf hingewiesen haben, ist nicht codiert die Datei in MP3. Die Kodierung ist immer noch AAC. Wenn Sie jedoch versuchen, einen Sound abzuspielen, der mit einer .mp3-Erweiterung über den obigen Code gespeichert wurde, wird er trotzdem ohne Probleme abgespielt, da die meisten Media-Player intelligent genug sind, um die tatsächliche Kodierung zu erkennen.

35
Advait S

Hier bei git finden Sie den Quellcode für Mp3 Voice Recorder Sample für Android.

Checkout diesen Quellcode.

10
Chirag

Stellen Sie Ihre outputformat des Rekorders als MediaRecorder.OutputFormat.DEFAULT ein. Ich habe dies verwendet und die resultierende Audiodatei ist eine MP3-Datei.

0
Akhil Soman

Das hat für mich funktioniert

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