IT story

오디오 녹음을위한 Android AudioRecord 대 MediaRecorder

hot-time 2020. 9. 16. 20:59
반응형

오디오 녹음을위한 Android AudioRecord 대 MediaRecorder


Android 폰에 사람의 목소리를 녹음하고 싶습니다. Android에는이를 수행하는 두 가지 클래스 인 AudioRecordMediaRecorder가 있습니다. 누군가가 두 가지의 차이점과 각각에 적합한 사용 사례가 무엇인지 말해 줄 수 있습니까?

실시간으로 사람의 음성을 분석하여 진폭 등을 측정 할 수 있기를 원합니다. AudioRecord가이 작업에 더 적합하다는 것을 이해하고 있습니까?

오디오 녹음을위한 공식 Android 가이드 웹 페이지 에서 그들은 AudioRecord에 대한 언급없이 MediaRecorder를 사용합니다.


녹음이 진행되는 동안 분석을 수행하려는 경우, 당신은 사용할 필요가 AudioRecord등, MediaRecorder자동으로 파일에 기록합니다. AudioRecord호출 후 인스턴스 startRecording()에서 데이터를 직접 폴링해야 한다는 단점이 AudioRecord있습니다. 또한 내부 버퍼가 오버런되지 않도록 데이터를 충분히 빠르게 읽고 처리해야합니다 (logcat 출력을 살펴보면 AudioRecord언제 발생하는지 알 수 있음).


내가 이해했듯이 MediaRecorder출력에 압축 된 오디오 파일을 AudioRecorder제공 하고 원시 사운드 스트림 을 제공하는 블랙 박스는 직접 압축해야합니다.

MediaRecordergetMaxAmplitude()예를 들어 사운드 시각화 도우미를 구현할 수 있도록 메서드의 마지막 호출에서 최대 amptitude를 제공합니다 .

따라서 MediaRecorder복잡한 사운드 처리를해야하고 원시 오디오 스트림에 액세스해야하는 경우를 제외하고는 대부분의 경우 최선의 선택입니다.


AudioRecorderer는 먼저 데이터를 minBuffer에 저장 한 다음 거기에서 임시 버퍼로 복사하고 MediaRecorder에서 파일로 복사합니다. AudioRecorder에서 필요한 위치에 저장된 데이터를 복사하려면 api setRecordPosition ()이 필요하지만 MediaRecorder에서는 파일 포인터가 마커의 위치를 ​​설정하기 위해이 작업을 수행합니다. AudioRecorder는 에뮬레이터에서 실행되는 앱에 사용할 수 있습니다. 이는 8000과 같은 낮은 샘플 속도를 제공하여 수행 할 수 있지만 MediaRecorder를 사용하면 에뮬레이터를 사용하여 오디오를 녹음 할 수 없습니다. AudioRecord에서는 잠시 후 화면이 잠자기 상태가되지만 MediaRecorder에서는 화면이 잠들지 않습니다.

참고 URL : https://stackoverflow.com/questions/5886872/android-audiorecord-vs-mediarecorder-for-recording-audio

반응형