제임스딘딘의
Tech & Life

수행 프로젝트 이력/참여자주도형 정보공유 시스템 [2011.12~2012.02]

자료조사(2) - 안드로이드의 오디오를 녹음하는 세 가지 방법

제임스-딘딘 2011. 11. 25. 11:31

1. Mediarecorder
API문서: http://developer.android.com/reference/android/media/MediaRecorder.html
사용법: http://developer.android.com/guide/topics/media/index.html


Mediarecorder는 그 이름을 보면 알 수 있듯이, media를 record한다. audio는 마이크를 통해 녹음하여 sdcard에 그 파일을 저장한다. 녹음된 audio의 포맷은 MPEG4, RAW AMR, 3GP가 있다.


<장점>
1) 사용이 쉽다
2) 오디오를 압축된 포맷으로 녹음한다.
3) 전화 소리를 녹음할 수 있다 (수신, 송신 측 모두)
4) 음성 인식을 녹음을 할 수 있다.


<단점>
1) 오디오 버퍼에 접근할 수 없다.
2) 녹음된 오디오를 처리하기가 어렵다 – 왜냐하면 이미 압축된 포맷으로 녹음되었기 때문에.
3) sampling rate를 바꿀 수 없다.
4) recording을 어떻게 발생시킬 지를 거의 컨트롤할 수 없다. (very little or no control)


2. Audiorecord
API 문서: http://developer.android.com/reference/android/media/AudioRecord.html
사용법: http://hashspeaks.wordpress.com/2009/06/18/audiorecord-part-4/


Audiorecord API는 Mediarecorder의 제한을 극복하기 위한 구글의 공식적인 API다. 녹음되는 Audio는 이후의 processing을 위해서 버퍼에 저장된다. Audiorecord의 녹음 방법과 Audio처리 방법은 자바의 방법이다.


<장점>
1) 오디오 녹음을 MONO와 STEREO 중 선택 가능하다.
2) sample size, sample rate, buffersize 등 다양한 오디오 레코딩 속성을 설정할 수 있다.
3) 녹음된 audio는 버퍼를 통해 제공된다.


<단점>
1) Buffer 다루기가 어렵다. 만약 이게 무슨 일을 하는 지 알지 못한다면, 만든 파일을 잃어버릴지도..


3. Audiorecord: native interface
A LITTLE BIT HELP : http://hashspeaks.wordpress.com/2009/04/18/audiorecord-in-android-part-2/
사용법:- ( Coming soon... how to build using NDK, sample code and how to use this API )

 native interface는 C/C++ 라이브러리를 적용한 API를 제공한다. 이 라이브러리들은 JNI를 통해 자바 액티비티로 호출 가능하다. 이 interface를 사용한 프로그램은 NDK를 통해 컴파일되고 JNI를 통해 안드로이드 애플리케이션으로 사용된다.