[android] 안드로이드 Audio 인코딩
안드로이드 앱을 개발하다 보면 음성을 녹음하고 인코딩하는 기능이 필요할 때가 있습니다. 이를 위해 안드로이드에서는 MediaRecorder
를 사용하여 음성을 녹음하고, MediaCodec
를 사용하여 인코딩할 수 있습니다.
음성 녹음하기
안드로이드에서는 MediaRecorder
클래스를 사용하여 음성을 쉽게 녹음할 수 있습니다. 아래는 간단한 예제 코드입니다.
import android.media.MediaRecorder;
private MediaRecorder mediaRecorder;
// 녹음 시작
public void startRecording() {
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile("/sdcard/recorded_audio.3gp");
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
// 녹음 중지
public void stopRecording() {
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
}
음성 인코딩하기
녹음된 음성을 인코딩하기 위해 MediaCodec
클래스를 사용할 수 있습니다. 아래는 간단한 예제 코드입니다.
import android.media.MediaCodec;
private MediaCodec mediaCodec;
// 인코딩 시작
public void startEncoding() {
MediaFormat format = MediaFormat.createAudioFormat("audio/mp4a-latm", 44100, 2);
format.setInteger(MediaFormat.KEY_BIT_RATE, 128000);
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectLC);
mediaCodec = MediaCodec.createEncoderByType("audio/mp4a-latm");
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mediaCodec.start();
}
// 인코딩 중지
public void stopEncoding() {
mediaCodec.stop();
mediaCodec.release();
mediaCodec = null;
}
결론
이상으로 안드로이드 앱에서 음성을 녹음하고 인코딩하는 방법에 대해 간단히 알아보았습니다. MediaRecorder
를 사용하여 음성을 녹음하고, MediaCodec
를 사용하여 인코딩할 수 있습니다. 이러한 기능을 활용하여 안드로이드 앱에서 다양한 음성 처리 기능을 구현할 수 있습니다.
참고문헌:
- https://developer.android.com/reference/android/media/MediaRecorder
- https://developer.android.com/reference/android/media/MediaCodec