21

私は、マイクを介してサウンドをキャプチャし、ヘッドフォンで再生する機能を備えた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 形式で録音したいということですか? これで私を助けてください、私は本当に感謝します...

前もって感謝します

4

6 に答える 6

52

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

ここで重要な部分はsetOuputFormatsetAudioEncoderです。MediaRecorder.OutputFormat.MPEG_4どうやら MediaRecorder は、 と を併用している場合、再生可能な mp3 を記録するようですMediaRecorder.AudioEncoder.AAC。これが誰かに役立つことを願っています。

もちろん、AudioRecorder クラスを使用したい場合は、以下にリンクされている Chirag のソース コードが問題なく動作するはずです )

編集: Bruno と他の数人がコメントで指摘したように、これはファイルを MP3 にエンコードしません。エンコーディングは引き続き AAC です。ただし、上記のコードで .mp3 拡張子を使用して保存されたサウンドを再生しようとすると、ほとんどのメディア プレーヤーは実際のエンコードを検出できるほどスマートであるため、問題なく再生されます。

于 2015-10-10T14:01:48.400 に答える
11

ここ git では、Mp3 Voice Recorder Sample For Android のソース コードを見つけることができます。

このソースコードをチェックアウトしてください。

于 2012-08-16T10:58:41.407 に答える
0

outputformatレコーダーを に設定しますMediaRecorder.OutputFormat.DEFAULT。私はこれを使用しました。結果のオーディオ ファイルは mp3 です。

于 2015-11-10T05:25:08.157 に答える
-2

これは私の仕事です

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

于 2015-03-28T08:52:26.753 に答える