12

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

4

3 回答 3

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");
    }

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

于 2012-01-20T11:35:55.063 回答
6

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

我能想到的最好的方法(对于曝光和白平衡控制,它们同样受到限制)是让用户将相机指向一个适当的场景(在你的情况下,是很远的地方)并让他/她按下锁定按钮。

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

于 2012-11-25T00:41:49.423 回答
4

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 并不代表无限远的焦点。

于 2016-08-08T10:11:22.257 回答