오디오 녹음을위한 Android AudioRecord 대 MediaRecorder
Android 폰에 사람의 목소리를 녹음하고 싶습니다. Android에는이를 수행하는 두 가지 클래스 인 AudioRecord 및 MediaRecorder가 있습니다. 누군가가 두 가지의 차이점과 각각에 적합한 사용 사례가 무엇인지 말해 줄 수 있습니까?
실시간으로 사람의 음성을 분석하여 진폭 등을 측정 할 수 있기를 원합니다. AudioRecord가이 작업에 더 적합하다는 것을 이해하고 있습니까?
오디오 녹음을위한 공식 Android 가이드 웹 페이지 에서 그들은 AudioRecord에 대한 언급없이 MediaRecorder를 사용합니다.
녹음이 진행되는 동안 분석을 수행하려는 경우, 당신은 사용할 필요가 AudioRecord
등, MediaRecorder
자동으로 파일에 기록합니다. AudioRecord
호출 후 인스턴스 startRecording()
에서 데이터를 직접 폴링해야 한다는 단점이 AudioRecord
있습니다. 또한 내부 버퍼가 오버런되지 않도록 데이터를 충분히 빠르게 읽고 처리해야합니다 (logcat 출력을 살펴보면 AudioRecord
언제 발생하는지 알 수 있음).
내가 이해했듯이 MediaRecorder
출력에 압축 된 오디오 파일을 AudioRecorder
제공 하고 원시 사운드 스트림 을 제공하는 블랙 박스는 직접 압축해야합니다.
MediaRecorder
getMaxAmplitude()
예를 들어 사운드 시각화 도우미를 구현할 수 있도록 메서드의 마지막 호출에서 최대 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
'IT story' 카테고리의 다른 글
보기를 빠르게 테마로 지정하는 방법은 무엇입니까? (0) | 2020.09.16 |
---|---|
openssl에서 -nodes 인수의 목적은 무엇입니까? (0) | 2020.09.16 |
iOS 9.2 이하에서 Xcode 8 빌드 충돌 (0) | 2020.09.16 |
C ++ 11로 삭제 된 함수가 오버로드 해결에 참여하는 이유는 무엇입니까? (0) | 2020.09.16 |
iOS 7에서 자동 푸시 알림이 작동하지 않습니다. (0) | 2020.09.16 |