有没有办法以编程方式将相机焦点从iOS设备设置为无限远?

时间:2011-12-13 11:50:37

标签: ios camera focus infinity

我正在创建一个应用程序来锁定相机焦点以进行视频录制。我想在没有用户手动调整焦点的情况下将焦点锁定到无限远。这可能吗?谢谢!

3 个答案:

答案 0 :(得分:6)

这是禁用焦点的方法,它会一直锁定它:

// Find a suitable capture device
    AVCaptureDevice *cameraDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    // SETUP FOCUS MODE
    if ([cameraDevice lockForConfiguration:nil]) {

        [cameraDevice setFocusMode:AVCaptureFocusModeLocked];

        [cameraDevice unlockForConfiguration];
    }
    else{
        NSLog(@"error while configuring focusMode");
    }

你是什么意思“将焦点锁定在无穷大”?

答案 1 :(得分:6)

可悲的是,没有。 Artem说,您可以将相机设置为锁定模式。进入自动对焦模式(对焦,然后锁定)或连续自动对焦模式,但无法为相机指定特定的对焦距离。

我能够提出的最好的(对于曝光和白平衡控制,同样受限制)是让用户将相机指向适当的场景(在你的情况下,远处的东西)并且他/她按下锁定按钮。

有关捕获设备API的详细信息,例如: https://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVCaptureDevice_Class/Reference/Reference.html

答案 2 :(得分:1)

AVCaptureDevice有函数setFocusModeLockedWithLensPosition:completionHandler:

您可以使用它来设置1.0以实现“无限远”距离

    func focusTo(value : Float) {
      if let device = captureDevice {
      if(device.lockForConfiguration(nil)) {
         device.setFocusModeLockedWithLensPosition(value, completionHandler: { (time) -> Void in
            //
        })
        device.unlockForConfiguration()
      }
    }

更新: 根据Apple的文档1.0并不代表无限远的焦点。