문제

MediaRecorder 또는 AudioRecord를 사용하여 동시에 하나 이상의 채널을 녹음 할 수 있습니까? 내가 원하는 것은 MediaRecorder.Audiosource.voice_uplink와 Voice_DownLink를 동시에 기록 할 수있는 것입니다. 두 개의 별도의 파일이나 두 개의 채널을 가진 동일한 파일에있을 수 있습니다. 나는 MediaRecorder의 두 개의 개별 인스턴스를 사용하여 시도했습니다. 그러나 첫 번째 레코드 만. 두 번째는 입력을 사용할 수 없습니다. 나는 또한 하나의 MediaRecorder와 하나의 Audiorecord를 동시에 사용하려고 노력했습니다. 다시 말하지만, 둘 다 개별적으로 작용하지만 MediaRecorder가 시작된 후 Audiorecord가 오는 경우 다음과 같은 오류가 표시됩니다.

05-21 03:40:42.735: E/AudioRecord(1322): Could not get audio input for record source 1
05-21 03:40:42.735: E/AudioRecord-JNI(1322): Error creating AudioRecord instance:     initialization check failed.
05-21 03:40:42.825: E/AudioRecord-Java(1322): [ android.media.AudioRecord ] Error code -20     when initializing native AudioRecord object.
.

두 번째 MediaRecorder를 새로운 스레드에 넣으려고했습니다. 다시 같은 결과. 따라서 이것은 동시에 전혀 기록 할 수 있는지 궁금하게합니다. 또한 두 개의 채널을 사용하여 하나의 AudioRecord를 사용할 수 있는지 생각하고있었습니다. Voice_uplink 및 Voice_Downlink에서 두 개의 별도 입력을 설정하지만 전혀 가능하면 소스를 설정하는 방법을 모르겠습니다.

미리 감사드립니다

편집 :

루시퍼의 답변은 AudioRecord를 동시에 실행중인 하나 이상의 인스턴스를 비동기 적으로 호출 할 수 없습니다. 누구도 Audiosource.voice_uplink와 Audiosource.voice_Downlink를 동시에 녹음 할 수있는 방법을 알고 있습니까? 어쩌면 여러 채널이있는 AudioRecord의 단일 인스턴스를 사용 하시겠습니까?

도움이 되었습니까?

해결책

내 지식에 따라 AudioreCording은 동기화 된 방법입니다.따라서 동시에 두 개의 녹음을 할 수는 없습니다.

코드가 두 번째 녹음 프로세스를 할 때 촬영 채널이 이미 처음에 사용 중이됨을 순전히 의미하는 오류를 보여주는 오류가 나타납니다.

그러나 이것은 특정 시간 동안 제 1 스레드 레코드를 기록하는 방식으로 두 개의 스레드의 병렬 처리를 가능하게 할 수 있습니다.컨트롤이 두 개의 두 번째 스레드를 전달하면 첫 번째 스레드가 녹음을 멈추고 두 번째로 녹음을 멈추고 그 반대의 경우도 마찬가지입니다.그러나 모바일 장치에 따라 이것은 더 복잡해질 것입니다.한 번에 하나의 채널을 녹음하기 쉽습니다.

녹음 대기열을 만들 수 있습니다. 이는 하나씩 녹음 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top