2013-04-08 2 views
4

제 응용 프로그램에서 MediaRecorder를 사용하여 m4a (AAC로 인코딩 됨)에 오디오를 녹음하고 있습니다. 내 모든 녹음은 짧게 (약 0.5 초) 잘립니다. 신청할 때 전체 파일을 보관하는 것이 중요합니다. 이 버그입니까? 아니면 제가 빠진 것이 있습니까?MediaRecorder가 파일 끝을 자릅니다.

기록 번호 :

 //set up recorder 
     recorder = new MediaRecorder(); 
     recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     recorder.setAudioChannels(1); 
     recorder.setAudioSamplingRate(16000); 
     recorder.setOutputFile(fileName); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 

     //begin recording 
     recorder.prepare(); 
     recorder.start(); 

녹음 중지 코드 :

 //stop recording 
     recorder.stop(); 
     recorder.release(); 
     recorder = null; 
+1

이 경우를 수정하기 위해 추가로 0.5 초를 녹음 할 수 있습니까? –

+0

현재 사용하고있는 해결 방법입니다. 응용 프로그램의 흐름이 느려지므로 만족스럽지 않습니다. 신속하게 작업해야하며 첫 번째 작업이 끝나 자마자 다른 녹음 작업을해야하므로 0.5 초 지연으로 0.5 초의 응용 프로그램 지연이 발생합니다. – rmooney

답변

4

이 안드로이드 AAC 기반의 오디오 인코더에서 버그가 수 있도록 나타납니다. 내가 찾은 유일한 해결책은 AMR 기반 오디오 인코더를 사용하는 것입니다. 불행히도, AMR_WB는 인간의 목소리 이외의 다른 것들에 대해서는 큰 소리로 들리지 않습니다.

recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); 

내가 말할 수있는 한 다른 옵션은 AudioRecord를 사용하는 것뿐입니다. AudioRecord는 훨씬 어렵습니다.

+0

이 작업을한지 꽤 오래되었지만 어쨌든 AudioRecord를 사용하게되었습니다. – rmooney

관련 문제