如何使用AVCapture会话/ AVCapture正确启动摄像头会话

时间:2016-08-19 13:43:02

标签: ios objective-c avcapturesession avcapture

我想在目标C中创建一个iOS应用程序。现在我不得不将预览图层设置为AVCapture预览输出。有人可以告诉我如何使用iOS Objective C中的AVCapture摄像头会话成功启动图像捕获会话吗?任何帮助深表感谢。谢谢。

2 个答案:

答案 0 :(得分:3)

我给你回答AVCaptureSession

-(void)capture
{ 
   NSError *error=nil;
   //Capture Session
   AVCaptureSession *session = [[AVCaptureSession alloc]init];
   session.sessionPreset = AVCaptureSessionPresetPhoto;

   //Add device
   AVCaptureDevice *inputDevice = nil;
   NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
   for(AVCaptureDevice *camera in devices)
   {
      if([camera position] == AVCaptureDevicePositionBack)  // is Back camera 
      { 
         inputDevice = camera;
         break;
      }
   }
   [session addInput:inputDevice];

    //Output
    AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
    [session addOutput:output];
    output.videoSettings = @{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };

    //Preview Layer
    AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
    previewLayer.frame = viewForCamera.bounds;
    previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    [viewForCamera.layer addSublayer:previewLayer];

    //Start capture session
    [session startRunning];
}

答案 1 :(得分:0)

尝试使用此代码获取相机ID。

NSString *cameraID = nil;

NSArray *captureDeviceType = @[AVCaptureDeviceTypeBuiltInWideAngleCamera];
AVCaptureDeviceDiscoverySession *captureDevice = 
              [AVCaptureDeviceDiscoverySession 
                discoverySessionWithDeviceTypes:captureDeviceType 
                mediaType:AVMediaTypeVideo 
                position:AVCaptureDevicePositionUnspecified];

cameraID = [captureDevice.devices.lastObject localizedName];