【问题标题】:AVCaptureDevice videoZoomFactor always Out of RangeAVCaptureDevice videoZoomFactor 总是超出范围
【发布时间】:2016-01-21 10:27:54
【问题描述】:

我正在尝试通过此代码设置相机的缩放级别:

 AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];


 if ([videoDevice lockForConfiguration:nil]) {
     float newzoom=1.3;
     videoDevice.videoZoomFactor = newzoom;
     [videoDevice unlockForConfiguration];
 }

此代码在 ios 7 中不起作用(它在 ios 9 中起作用),它总是会导致异常:

Terminating app due to uncaught exception 'NSRangeException', reason: 'videoZoomFactor out of range'

我找不到信息,但 ios 7 中的缩放范围似乎是“从 1 到 2”。但是我尝试为 float newzoom 设置的每个值都会导致异常...如何在 Ios 7 中设置 videoZoomFactor?

编辑

我决定在设备不支持缩放时隐藏缩放按钮。所以这是我使用的代码:

AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
float max=videoDevice.activeFormat.videoMaxZoomFactor;
float min=MIN(videoDevice.activeFormat.videoMaxZoomFactor, 4.0f);


if (max==1 && min==1) {

    [ZoomButton setHidden:YES];
}

如果 max 和 min 等于 1 表示设备不支持这种缩放。它似乎工作......有更好的方法来做这个检查吗?我在文档中找不到受支持设备的列表...

【问题讨论】:

    标签: ios ios7 avfoundation avcapturedevice


    【解决方案1】:

    根据苹果文档,如果设备的 videoMaxZoomFactor 为 1,则缩放不可用:

    如果设备的 videoZoomFactor 属性被分配一个更大的值, 将抛出 NSRangeException。 最大缩放系数为 1 表示没有可用的缩放

    所以在你的情况下,你可以通过检查这个属性来隐藏 zoomButton:

    AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    float max=videoDevice.activeFormat.videoMaxZoomFactor;
    
    if (max==1) {
        [ZoomButton setHidden:YES];
    }
    

    【讨论】:

      【解决方案2】:

      您应该在设置 videoZoomFactor 之前检查 videoMaxZoomFactor,因为 videoZoomFactor 并不总是“从 1.0 到 2.0”。 文档:

      这个值是一个乘数。例如,值为 2.0 会使 图像主题的大小(并将视野减半)。 允许 值范围从 1.0(全视野)到活动的值 格式的videoMaxZoomFactor 属性。设置 this 的值 属性立即跳转到新的缩放系数。为了顺利 过渡,使用rampToVideoZoomFactor:withRate: 方法。

      【讨论】:

      • 我已经编辑了我的问题,我的第一个问题是不兼容的硬件问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2023-03-27
      • 2011-12-05
      • 2019-10-08
      • 2012-05-04
      • 2018-07-18
      相关资源
      最近更新 更多