2013-09-03 3 views
0

Gracenote API를 사용하여 iPhone 4s 마이크에서 음악을 캡처하려고합니다.GNAudioSourceMic startRecording가 영원합니다.

GNAudioSourceMic 인스턴스에서 startRecording을 호출하면 장치에서 실행 중일 때 응용 프로그램이 failed to launch in time으로 닫힙니다. 아래 로그를 찾으십시오. GNOME 예제 코드의 대부분 코드를 복사 한 &을 복사합니다.이 코드는 정상적으로 작동합니다.

시뮬레이터를 통해 실행하는 데 문제가 없습니다.

- (void)mk_initialize 
    { 
    AudioSessionInitialize (
          NULL, 
          NULL, 
          interruptionListenerCallback, 
          (__bridge void *)(self) 
          ); 
    @try { 
     _config = [GNConfig init:GN_CLIENT_ID]; 
    } 
    @catch (NSException * e) { 
     NSLog(@"clientId issue"); 
     return; 
    } 

    [self.config setProperty: @"debugEnabled" 
         value: @"1"]; 
    _recognizeFromStream = [GNRecognizeStream gNRecognizeStream:self.config]; 
    _audioConfig = [GNAudioConfig gNAudioConfigWithSampleRate:44100 
               bytesPerSample:2 
               numChannels:1]; 
    _audioSourceMicObj = [GNAudioSourceMic gNAudioSourceMic:self.audioConfig]; 
    self.audioSourceMicObj.delegate = self; 

    NSError *error = nil; 
    [RecognizeStreamOperation recognizeStreamOperation:self.config]; 
    error = [self.recognizeFromStream startRecognizeSession:op 
              audioConfig:self.audioConfig]; 
    if (error) { 
     NSLog(@"ERROR: %@",[error localizedDescription]); 
    } 
    [self.audioSourceMicObj startRecording]; // hanging call 

    [self performSelectorInBackground:@selector(setUpRecognizePCMSession) 
          withObject:nil]; 
} 

장치 로그 :

OS Version:  iOS 6.1.3 (10B329) 
Report Version: 104 

Exception Type: 00000020 
Exception Codes: 0x000000008badf00d 
Highlighted Thread: 0 

Application Specific Information: 
XXXXXXX failed to launch in time 

Elapsed total CPU time (seconds): 3.080 (user 3.080, system 0.000), 15% CPU 
Elapsed application CPU time (seconds): 0.527, 3% CPU 

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0: 
0 libsystem_kernel.dylib   0x397ab0fc __psynch_mutexwait + 24 
1 libsystem_c.dylib    0x396f4124 pthread_mutex_lock + 388 
2 AudioToolbox     0x30fd54e8 CAMutex::Lock() + 32 
3 AudioToolbox     0x3102645c AUConverterBase::Reset(unsigned long, unsigned long) + 48 
4 AudioToolbox     0x310df602 AUGenericOutput::Start() + 26 
5 AudioToolbox     0x310d1126 AURemoteIO::Start() + 942 
6 AudioToolbox     0x31100776 AUMethodStart(void*) + 118 
. 
. 
. 

답변

0

는 앱을 실행하려고 할 때 마이크를 사용하여 장치의 다른 응용 프로그램인가? 오디오 세션 카테고리를 녹음을 지원하는 카테고리로 설정하고 인스턴스에서 start을 호출하기 전에 오디오 세션을 활성화해야합니다. 예 :

NSError *error = nil; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&error]; 
if (error) { 
    NSLog(@"Error setting audio session category: %d, %@", [error code], [error description]); 
} 
[[AVAudioSession sharedInstance] setActive:YES error:&error]; 
if (error) { 
    NSLog(@"Error activating audio session category: %d, %@", [error code], [error description]); 
} 
관련 문제