2011-12-05 3 views
4

녹음을 위해 Audio Unit 기능을 살펴 보았습니다. RED BAR로 백그라운드에서 녹화를 계속하는 AVCapture와 달리 앱이 배경에있을 때 녹음 콜백이 멈추는 것을 제외하면 모든 것이 좋습니다. AVCapture처럼 백그라운드에서 녹화를 계속할 수있는 방법이 있습니까?iPhone Audio Unit 백그라운드에서 녹화하기, 방법 :

#import "AudioUnit/AudioComponent.h" 
#import "AudioUnit/AudioUnit.h" 

desc.componentType   = kAudioUnitType_Output; 
desc.componentSubType  = kAudioUnitSubType_RemoteIO; 
desc.componentFlags   = 0; 
desc.componentFlagsMask  = 0; 
desc.componentManufacturer = kAudioUnitManufacturer_Apple; 

AudioComponent inputComponent = AudioComponentFindNext(NULL, &desc); 
status = AudioComponentInstanceNew(inputComponent, &audioUnit); 
checkStatus(status); 

UInt32 flag = 1; 

status = AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Input, kInputBus, &flag, sizeof(flag)); 
checkStatus(status); 

//status = AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, kOutputBus, &flag, sizeof(flag)); 
checkStatus(status); 

AudioStreamBasicDescription  audioFormat; 
audioFormat.mSampleRate   = 8000.00; //44100.00; 
audioFormat.mFormatID   = kAudioFormatLinearPCM; 
audioFormat.mFormatFlags  = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; 
audioFormat.mFramesPerPacket = 1; 
audioFormat.mChannelsPerFrame = 1; 
audioFormat.mBitsPerChannel  = 16; 
audioFormat.mBytesPerPacket  = 2; 
audioFormat.mBytesPerFrame  = 2; 

status = AudioUnitSetProperty(audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Output, kInputBus, &audioFormat, sizeof(audioFormat)); 
checkStatus(status); 

status = AudioUnitSetProperty(audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, kOutputBus, &audioFormat, sizeof(audioFormat)); 
checkStatus(status); 

AURenderCallbackStruct callbackStruct; 

callbackStruct.inputProc = recordingCallback; 
callbackStruct.inputProcRefCon = self; 

status = AudioUnitSetProperty(audioUnit, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Global, kInputBus, &callbackStruct, sizeof(callbackStruct)); 
checkStatus(status); 
+0

녹음 된 오디오에 대한 샘플 레벨 액세스를 수행하고 계셨습니까? 샘플 수준의 항목에 액세스하는 데 몇 가지 문제가있어 작업중인 것으로 보입니다. – MZimmerman6

답변

3

도현이,

대상/정보/필수 배경 모드를 설정하는 것을 잊었다/응용 프로그램 테스트 응용 프로그램에

오디오한다.