我正在使用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();
這是偉大的,並記錄5分鐘文件大小500K左右或更低。但是,我必須使用AudioRecord,因爲我需要逐字節地在音頻上應用一些任務。
我可以在MediaRecorder
相同的文件大小,當我使用AudioRecord
?
非常感謝。
完美,感謝您的回答它幫助我非常多,以確定真正的問題。我會嘗試蹩腳的圖書館。如果你有一個手動壓縮的例子,我將不勝感激。再次感謝 –
如果你將與錄製的聲音只能在你的應用程序時,您可以簡單地使用Java中([拉鍊]已實施任何壓縮算法(http://www.oracle.com/technetwork/articles/java/compress-1565076 .html))或第三方庫。我真的不能建議良好的解決方案的原始聲音,請檢查此頁面:[在Java中快速壓縮](http://stackoverflow.com/questions/3918189/fast-compression-in-java) – akaish