更改AVCaptureVideoPreviewLayer的帧

时间:2016-05-09 13:35:21

标签: objective-c layout camera avfoundation

我想在全屏模式下制作我的AVCaptureVideoPreviewLayer对象,所以我将videoGravity更改为AVLayerVideoGravityResizeAspectFill但是没有任何反应。 请任何人帮助我。

- (void) openCamera {
    session = [[AVCaptureSession alloc] init];
    session.sessionPreset = AVCaptureSessionPresetHigh;

    AVCaptureVideoPreviewLayer* previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
    previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    previewLayer.frame = self.liveCameraView.bounds;
    [self.liveCameraView.layer addSublayer:previewLayer];

    AVCaptureDevice* device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    //

    [device lockForConfiguration:nil];
    [device setTorchMode:AVCaptureTorchModeOn];  // use AVCaptureTorchModeOff to turn off
    [device unlockForConfiguration];

    //

    NSError *error = nil;

    deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];

    [session addInput:deviceInput];

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

    _videoOutput = [[AVCaptureMovieFileOutput alloc] init];

    [session addOutput:_videoOutput];

    [session addOutput:_stillImageOutput];

    [session startRunning];

}

0 个答案:

没有答案