안드로이드 개발 질문/답변
(글 수 45,052)
MediaRecorder를 이용해서 AMR 파일을 녹음하려는데 녹음할 때와 녹음된 파일을 MedaiPlayer로 재생할 때 시간이 틀린 이유를 모르겠네요.
녹음할 때는 얼마나 녹음이 되었는지 알 수가 없어서 일단 Handler로 1초마다 Log를 찍도록 했구요
MediaRecorder는 아래와 같이 구현 했습니다.
MediaPlayer는 File Duration을 확인 할 수 있더라구요.
그래서 MedaiPlayer를 정의하고 Log를 찍어 봤습니다.
문제는 MediaRecorder로 녹음은 할 때 Handler는 3~4초 밖에 동작하지 않았는데
MediaPlayer로 재생할 때 Duration는 무려 6~8초로 두 배정도 차이가 나더라구요.
왜 그런걸 까요?
녹음할 때는 얼마나 녹음이 되었는지 알 수가 없어서 일단 Handler로 1초마다 Log를 찍도록 했구요
MediaRecorder는 아래와 같이 구현 했습니다.
audio = new MediaRecorder(); audio.setAudioSource(MediaRecorder.AudioSource.MIC); audio.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR); audio.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); audio.setOutputFile(file.getAbsolutePath()); try { audio.prepare(); } catch(IOException exception) { setError(INTERNAL_ERROR); audio.reset(); audio.release(); audio = null; return; } audio.start();
MediaPlayer는 File Duration을 확인 할 수 있더라구요.
그래서 MedaiPlayer를 정의하고 Log를 찍어 봤습니다.
mp = new MediaPlayer(); try { mp.setDataSource(file.getAbsolutePath()); Log.d("AudioTest", "Audio Duration : " + mp.getDuration()); mp.setOnCompletionListener(this); mp.setOnErrorListener(this); mp.prepare(); mp.start(); } catch (IllegalArgumentException e) { setError(INTERNAL_ERROR); mp = null; return; } catch (IOException e) { setError(SDCARD_ACCESS_ERROR); mp = null; return; }
문제는 MediaRecorder로 녹음은 할 때 Handler는 3~4초 밖에 동작하지 않았는데
MediaPlayer로 재생할 때 Duration는 무려 6~8초로 두 배정도 차이가 나더라구요.
왜 그런걸 까요?
pc 성능상의 문제였네요..