AVFoundationのセットアップ
AVFoundationを使う機会があり,そのなかでも特にセットアップがわかりにくかったのでメモに残しておく. 以下をコピペすればOKなようにしてある.
- (void)setupAVCapture { NSError *error = nil; self.session = [[AVCaptureSession alloc] init]; if ([[UIDevicecurrentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ [_sessionsetSessionPreset:AVCaptureSessionPreset640x480]; } else { [_sessionsetSessionPreset:AVCaptureSessionPresetPhoto]; } AVCaptureDevice *device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo]; AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInputdeviceInputWithDevice:device error:&error]; if (error) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:@"message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; return; } if ( [_sessioncanAddInput:deviceInput] ){ [_sessionaddInput:deviceInput]; } self.stillImageOutput = [[AVCaptureStillImageOutput alloc] init]; if ( [_sessioncanAddOutput:_stillImageOutput] ){ [_sessionaddOutput:_stillImageOutput]; } self.previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_session]; [_previewLayersetBackgroundColor:[[UIColorredColor] CGColor]]; _previewLayer.videoGravity = AVLayerVideoGravityResizeAspect; self.cameraView = [[UIViewalloc] initWithFrame:CGRectMake(0, 0, 320, 427)]; [self.viewinsertSubview:_cameraViewatIndex:0]; CALayer *rootLayer = [_cameraViewlayer]; [rootLayer setMasksToBounds:YES]; [_previewLayersetFrame:_cameraView.frame]; [rootLayer addSublayer:_previewLayer]; [_sessionstartRunning]; }