2011-10-17 3 views
2

다음 코드는 기본 것으로 보이는 44100 깊이 2에서 잘 작동합니다 (일부 검사 및 코드 제거됨). 이 인터페이스는 사용 가능하지만 문서화가 잘되어 있지 않으므로 누구나 기본 품질을 변경하는 방법을 알고 있습니까?iPhone AVCaptureDeviceInput 오디오 캡처의 품질을 설정하는 방법?

audioCaptureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; 
captureSession = [[AVCaptureSession alloc] init]; 
audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioCaptureDevice error:&error]; 
[captureSession addInput:audioInput]; 
audioOutput = [[AVCaptureAudioDataOutput alloc] init]; 
[audioOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()]; 
[captureSession addOutput:audioOutput]; 

답변

1

트릭을 수행해야합니다.

union 
{ 
    OSStatus propertyResult; 
    char a[4]; 
} u; 

Float64 F64sampleRate = 8192.0; 

Float64 F64realSampleRate = 0; 
UInt32 F64datasize = 8; 

u.propertyResult = AudioSessionSetProperty ( kAudioSessionProperty_PreferredHardwareSampleRate ,sizeof(F64sampleRate) , &F64sampleRate); 
NSLog(@"Set Error Set Sample Rate %ld %lx %c%c%c%c",u.propertyResult,u.propertyResult,u.a[3],u.a[2],u.a[1],u.a[0]); 

u.propertyResult = AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate , &F64datasize, &F64realSampleRate); 
NSLog(@"Get Error Current Sample Rate %ld %lx %c%c%c%c",u.propertyResult,u.propertyResult,u.a[3],u.a[2],u.a[1],u.a[0]); 
NSLog(@"Sample Rate is %f",F64realSampleRate); 
+0

http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html 여기

더 많은 같은 방법을 사용하지만 여전히 기본 가격으로 서비스를 받으실 수 있습니다. 다른 제안? – Idan