私はAudioRecord
ではないMediaRecorder
を使用しているオーディオレコーダーアプリで作業しています。 私はレコードにこのコードを書いている:Android AudioRecord - 小さなファイルサイズのオーディオを録音する
private void startRecord(){
File file = new File(Environment.getExternalStorageDirectory(), "test.pcm");
try {
file.createNewFile();
OutputStream outputStream = new FileOutputStream(file);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream);
int minBufferSize = AudioRecord.getMinBufferSize(8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
short[] audioData = new short[minBufferSize];
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
minBufferSize);
audioRecord.startRecording();
while(recording){
int numberOfShort = audioRecord.read(audioData, 0, minBufferSize);
for(int i = 0; i < numberOfShort; i++){
dataOutputStream.writeShort(audioData[i]);
}
}
audioRecord.stop();
dataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
それが正常に動作しています。しかし、私は大きなファイルサイズを持っています。私は約1分を記録し、サイズは約1.2Mです。
私はこのコードを使用してMediaRecorder
を使用しようとしました:
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mMediaRecorder.setOutputFile(fileName);
mMediaRecorder.prepare();
mMediaRecorder.start();
それは素晴らしいことだと500K程度以下のファイルサイズが5分を記録しました。しかし、AudioRecordを使用する必要があります。なぜなら、オーディオごとにいくつかのタスクをバイトごとに適用する必要があるからです。
AudioRecord
を使用すると、同じファイルサイズをMediaRecorder
にできますか?
ありがとうございました。
完璧、本当に本当の問題を特定するために私を助けてくれてありがとう。私はラメのライブラリを試してみます。手動圧縮の例があれば、私は感謝します。もう一度おねがいします –
アプリケーション内でのみ録音されたサウンドを扱う場合は、すでにJavaで実装されている圧縮アルゴリズムを使用できます([zip](http://www.oracle.com/technetwork/articles/java/compress-1565076) .html))またはサードパーティのライブラリ。私は本当に生のサウンドのための良い解決策を助言することはできません、このページを確認してください:[Javaの高速圧縮](http://stackoverflow.com/questions/3918189/fast-compression-in-java) – akaish