AVCaptureVideoPreviewLayer视频帧大小

9

AVCaptureVideoPreviewLayer 内如何获取图像大小:

self.cameraPreviewLayer.frame = self.cameraView.frame; // (0.0, 0.0, 320.0, 568.0)

AVCaptureVideoPreviewLayer 中的图像比帧小。


如果没有看到上下文,很难判断发生了什么。如果尝试更改为 bounds,会发生什么:self.cameraPreviewLayer.frame = self.cameraView.bounds - leekaiinthesky
2个回答

10

AVCaptureVideoPreviewLayer 框架内无法获得实际呈现的尺寸。您需要计算它。

以下是获取实际视频尺寸的方法:

AVCaptureDeviceInput *videoDeviceInput = // initialised already in your app

// Here you can get the video dimensions:
CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions(videoDeviceInput.device.activeFormat.formatDescription);

从这里您可以计算出适合于AVCaptureVideoPreviewLayer框架的长宽比矩形。


2
"最初的回答":Swift 代码
var captureSession : AVCaptureSession?

var captureInput : AVCaptureDeviceInput?{
    get{
        return self.captureSession?.inputs.first as? AVCaptureDeviceInput
    }
}

func doSomething(){
    guard let captureInput = captureInput else{ return }

    let dims : CMVideoDimensions = CMVideoFormatDescriptionGetDimensions(captureInput.device.activeFormat.formatDescription)
        //do whatever
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接