안드로이드에서 고음질로 녹음하는 방법은 무엇인가요?


모바일 커뮤니티 어플리케이션을 제작하고 있습니다

현재 안드로이드에서 MediaRecord 클래스를 사용해서 녹음을 하는데

음질이 좋지 않고 녹음된 데이터의 크기가 굉장히 작습니다.

.mp3 형식으로 변환하거나 고음질로 녹음하는 방법을 알 수 있을까요?


     recorder = new MediaRecorder();
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
     recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
     recorder.setOutputFile(RECORDED_FILE);

위 코드는 MediaRecord 클래스를 사용해서 녹음 한 코드입니다. OutputFormat이 mp3는 존재하지 않고 MPEG_4 포맷이 존재합니다.

재생을 하게되면 잡음이 섞여 들리게 됩니다.

어느정도 용량이 있어도 괜찮은데 더 좋은 음질을 얻고 싶습니다. 어떻게 해야 할까요?


조회수 410


2 답변


좋아요
2
싫어요
채택취소하기

제가 테스트 해본 결과는 Encoder의 차이가 음질을 결정하는 것 같습니다. 다음 코드로 테스트 해보시기 바랍니다.

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setOutputFile(mFileName);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

올려주신 코드인 HE_AAC로 설정했을 때는 확실히 음질이 떨어지는 느낌을 받았고요. AMR_NB, AMR_WB는 HE_AAC보다 훨씬 좋은 음질로 녹음되는 것을 확인했습니다. 관련 코드의 출처는 다음 링크를 참고하세요.

https://developer.android.com/guide/topics/media/audio-capture.html



추가로 올려주신 코드에서 SamplingRate와 EncodingBitRate 값을 조절하는 것으로도 음질을 향상 시킬 수 있습니다. 기존 코드에서 아래 값을 사용해보세요.

recorder.setAudioSamplingRate(44100);
recorder.setAudioEncodingBitRate(96000);

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close