Ios 使用AVCaptureVideoPreviewLayer时如何保持捕获的视频大小

Ios 使用AVCaptureVideoPreviewLayer时如何保持捕获的视频大小,ios,objective-c,iphone,avcapturesession,Ios,Objective C,Iphone,Avcapturesession,当使用AVCaptureSession向小预览层(AVCaptureVideoPreviewLayer)显示相机图像时,图像将缩放以适合层大小 为了填充所有预览层,可通过以下设置配置此缩放: previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 问题是,这只会调整大小以填充层,并且由于相机图像非常大,图像的大小会变得太小 我所寻找的是一种方法,让我的预览层显示出内置相机的同一个级别,丢弃剩余的图像(想象一下设备屏蔽,只

当使用AVCaptureSession向小预览层(AVCaptureVideoPreviewLayer)显示相机图像时,图像将缩放以适合层大小

为了填充所有预览层,可通过以下设置配置此缩放:

previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
问题是,这只会调整大小以填充层,并且由于相机图像非常大,图像的大小会变得太小

我所寻找的是一种方法,让我的预览层显示出内置相机的同一个级别,丢弃剩余的图像(想象一下设备屏蔽,只在屏幕中间显示一个正方形)。 我还尝试通过发出多个预设来更改捕获预设,但没有成功:

AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = AVCaptureSessionPresetMedium; 
以下是您要做的:

您可以获得输入视频大小:

AVCaptureDeviceInput *videoDeviceInput = // initialised already in your app

// Here you can get the video dimensions:
CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions(videoDeviceInput.device.activeFormat.formatDescription);
您可以将
预览层的大小调整为视频提要的大小。
现在有了一个1:1比例的视频层

然后只需将
previewLayer
放在窗口中央即可。