【问题标题】:How to maintain captured video size when using AVCaptureVideoPreviewLayer使用 AVCaptureVideoPreviewLayer 时如何保持捕获的视频大小
【发布时间】:2016-01-07 12:31:12
【问题描述】:

当使用 AVCaptureSession 将相机图像显示到一个小的预览层 (AVCaptureVideoPreviewLayer) 时,图像会被缩放以适应层大小。

为了填充所有的预览层,这个缩放可以通过设置来配置:

previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;

问题在于,这只会调整大小以填充图层,并且由于相机图像非常大,因此调整图像的大小变得太小了。

我正在寻找一种方法,让我的预览层显示与内置摄像头相同的比例,丢弃剩余的图像(想象设备摄像头被蒙版,仅在屏幕中间显示一个正方形)。

我还尝试通过发出多个预设来更改捕获预设,但无济于事:

AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = AVCaptureSessionPresetMedium; 

【问题讨论】:

    标签: ios objective-c iphone avcapturesession


    【解决方案1】:

    这就是你要做的:

    你得到输入视频的大小:

    AVCaptureDeviceInput *videoDeviceInput = // initialised already in your app
    
    // Here you can get the video dimensions:
    CMVideoDimensions dimensions = CMVideoFormatDescriptionGetDimensions(videoDeviceInput.device.activeFormat.formatDescription);
    

    您将previewLayer 调整为视频供稿的大小。 现在您有了一个 1:1 比例的视频层。

    然后您只需将previewLayer 置于窗口的中心即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多