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形式で録音したいということですか?これで私を助けてください、私は本当に感謝します...
前もって感謝します
MediaRecorderを使用して.mp3ファイルを保存するための回避策があります。方法は次のとおりです。
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は、MediaRecorder.OutputFormat.MPEG_4
とMediaRecorder.AudioEncoder.AAC
を一緒に使用している場合、再生可能なmp3を記録します。これが誰かを助けることを願っています。
もちろん、AudioRecorderクラスを使用したい場合は、以下にリンクされているソースコードChiragが問題なく機能するはずだと思います- https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid (ただし、翻訳が必要になる場合があります日本語から英語への一部)
編集:Brunoや他の数人がコメントで指摘したように、これはエンコードしません MP3のファイル。エンコードはAACのままです。ただし、サウンドを再生しようとすると、上記のコードで.mp3拡張子を使用して保存されますが、ほとんどのメディアプレーヤーは実際のエンコーディングを検出するのに十分スマートであるため、問題なく再生されます。
ここでgitでMp3ボイスレコーダーサンプルのソースコードを見つけることができますAndroid。
チェックアウト このソースコード。
レコーダーのoutputformat
をMediaRecorder.OutputFormat.DEFAULT
に設定します。私はこれを使用し、結果のオーディオファイルはmp3です。
私はこれが古い質問であることを知っています。 Android Java full recording app demo)でリポジトリを作成した人に役立つ場合、出力ファイルはmp3ファイルです。覚えておいてください。ユーザーの権限をリクエストする必要がないようにするには、ターゲットSDKを21に設定します。これはデモの目的でのみ使用できます。クローンを作成して使用できます。
私が使用したコードのほとんどは、このリポジトリからのものです this
私のデモリポジトリ: 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();