[objective-c] 카메라 사용하기

맥에는 기본적으로 카메라가 달려서 나오는데, 그래서 그런지 몰라도 카메라를 표시하기 엄청 쉬울 줄 알았다.
왠지 뷰 하나만 올리면 바로 나올 것 같은 느낌이었는데, 전혀 아니었다 ㅠㅠ

 

@import AVKit;
@import AVFoundation;
.
.
.
@property (weak) IBOutlet AVPlayerView *playerView;
.
.
.
- (void) display{
  AVCaptureSession *session = [[AVCaptureSession alloc] init];
    
    [session beginConfiguration];
    
    if ([session canSetSessionPreset:AVCaptureSessionPresetPhoto]) {
        session.sessionPreset = AVCaptureSessionPresetPhoto;
    }
    
    NSArray *cameras = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
    AVCaptureDevice *camera = cameras.lastObject;
    
    NSError *error = nil;
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:camera error:&error];
    if (!input) {
        NSLog(@"no camera");
        return;
    }
    
    [session addInput:input];
    
    AVCaptureVideoPreviewLayer* layer = [AVCaptureVideoPreviewLayer layerWithSession:session] ;
    layer.contentsGravity = kCAGravityResizeAspectFill ;

    self.playerView.layer = layer ;
    [self.playerView setWantsLayer:YES] ;
    
    self.playerView.layerContentsRedrawPolicy = NSViewLayerContentsRedrawDuringViewResize ;
    self.playerView.layerContentsPlacement = NSViewLayerContentsPlacementCenter ;
    layer.frame = self.playerView.bounds ;
    layer.contentsGravity = kCAGravityResizeAspectFill ;

    
    [session commitConfiguration];
    
    [session startRunning];
}

 

screenshot 1

그럼 이렇게 일단 카메라 화면이 나오기는 하는데, 좌우가 반전이 돼서 나온다.

안드로이드보다 소스 찾기가 더 쉬운 줄 알았는데, 꼭 그런 건 아니구나…

 

도움받은 곳 :

https://developer.apple.com/library/mac/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html

http://prod.lists.apple.com/archives/cocoa-dev/2015/Sep/msg00216.html

 

 

이런 메시지가 나오는데, 어떻게 고치는지 못 찾겠다 ;;;

CoreAnimation: Warning! CAImageQueueSetOwner() is deprecated and does nothing. Please stop calling this method.