2009-07-04 4 views
3

두 가지 다른 iPhone 응용 프로그램에서 동시에 녹음 및 재생 사운드를 동시에 작업하고 있습니다. 멀티 트랙 믹싱을 생각하십시오 ... 하나의 사운드를 저장 한 다음 저장하고 다음 사운드를 다른 파일에 녹음하는 동안 해당 사운드를 듣습니다. 이를위한 나의 메커니즘은 녹음과 재생을위한 두 가지 오디오 대기열을 시작하는 것이 었습니다. iPhone OS 3.0에서 오디오 녹음 오류 kAudioQueueErr_CannotStart

그 이후, 그러나, 다음과 같은 상황이 발생 ... OS 3.0의 출시 때까지 A-OK를 일하는 : 내가 처음 기록 큐를 시작하면, 그것은 아마도 좋은 시작하지만

AudioQueueStart에 대한 호출 재생 대기열에 대해 kAudioQueueErr_CannotStart를 반환합니다.

재생 대기열을 먼저 시작하면 정상적으로 시작되지만 레코드 대기열에 대한 AudioQueueStart를 호출하면 kaudioQueueErr_CannotStart와 같은 오류가 반환됩니다.

누구나이 오류를 디버깅하는 데 어떤 문제가 있습니까? 아마도 두 대기열이 서로의 기억이나 다른 것을 쾅쾅 거리고있는 것처럼 보입니까? 공식 설명은 다음과 같습니다. "오디오 대기열에 문제가 발생하여 시작할 수 없습니다." 슈퍼 도움이되지 ...

제레미

+0

오디오 세션 관리가 문제로 판명되었습니다. 이 문서는 앱이 다른 앱과 상호 작용하는 방식을 관리하기 위해 오디오 세션을 처리하는 것이 실제로 필요한 것임을 암시하기 때문에 다소 흡기합니다. 확실히 그렇지 않습니다. 조심하십시오. –

답변

6

진부한 답변이지만 오디오 세션 API를 사용하여 오디오 카테고리를 "재생 및 녹음"으로 설정 했습니까? 앱을 사용하기 위해 마이크를 예약하려면이 작업을 수행해야합니다. 3.0에서 오디오 세션이 변경되었습니다 (obj-c 편의 클래스 AVAudioSession을 만들고 새로운 카테고리를 정의하기 위해). 변경 사항이 당신을 망칠 수도 있습니다.

현재 coreaudio-api 목록 (lists.apple.com)을 사용하고 있지 않다면 꼭해야합니다. 커뮤니티와 Apple 엔지니어가 실제로 도움이됩니다.

+0

자세한 내용은 다음과 같습니다. UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; AudioSessionSetProperty ( kAudioSessionProperty_AudioCategory, 를 sizeof (sessionCategory) 및 sessionCategory ); 나를 위해 일했습니다. –

0

아마 나는 그러나 나는 단지 하나의 (활성?) 오디오 큐가 한 번에 존재할 수있는 느낌이 틀렸다.

출력 오디오 대기열을 오디오 장치 (원격 IO)로 전환해야 할 수도 있습니다.
그리고 AudioQueues는 재생을위한 절름발이이므로 오디오 장치가 손상 될 수 없습니다.

이 남자는 그럭저럭 그것을 할 수 있었고, 그것에 대해 이것 blog post에 대해 말한다.