2014-12-24 32 views
2

我是新手編程,並試圖修復此代碼使用前置攝像頭,而不是默認背面。我不知道我需要改變以使其正常工作。我試圖切換此代碼,以使用前置攝像頭

這裏是我的示例代碼:

-(void)viewWillAppear:(BOOL)animated{ 
session = [[AVCaptureSession alloc] init]; 
[session setSessionPreset:AVCaptureSessionPresetPhoto]; 

AVCaptureDevice *inputDevice = [AVCaptureDevice  defaultDeviceWithMediaType:AVMediaTypeVideo]; 
NSError *error; 
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error]; 

if ([session canAddInput:deviceInput]) { 
    [session addInput:deviceInput]; 
} 

AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 
       [previewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 
              CALayer *rootLayer = [[self view] layer]; 
              [rootLayer setMasksToBounds:YES]; 
              CGRect frame = self.frameForCapture.frame; 

[previewLayer setFrame:frame]; 

[rootLayer insertSublayer:previewLayer atIndex:0]; 


stillImageOutput = [[AVCaptureStillImageOutput alloc] init]; 
NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG, AVVideoCodecKey, nil]; 
[stillImageOutput setOutputSettings:outputSettings]; 

[session addOutput:stillImageOutput]; 

[session startRunning]; 
+0

參見[AV基金會編程指南的_Device Characteristics_部分:媒體拍攝](https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//ap ple_ref/DOC/UID/TP40010188-CH5-SW2)。 – Rob

回答

1

替換此:

AVCaptureDevice *inputDevice = [AVCaptureDevice  defaultDeviceWithMediaType:AVMediaTypeVideo]; 
NSError *error; 
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:inputDevice error:&error]; 

有了這個:

NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; 
AVCaptureDevice *frontCamera; 
for (AVCaptureDevice *dev in devices) { 
    if (dev.position == AVCaptureDevicePositionFront) { 
     frontCamera = dev; 
     break; 
    } 
} 
if (!frontCamera) { 
    NSLog(@"No front camera found!"); 
    // Handle no front camera error 
} 
NSError *error; 
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:frontCamera error:&error]; 
+1

@Rob - 沒有意識到有一個位置屬性,我更新了我的代碼。感謝您的建議! – Logan

相關問題