我正在创建一个应用程序来锁定相机焦点以进行视频录制。我想在没有用户手动调整焦点的情况下将焦点锁定到无限远。这可能吗?谢谢!
答案 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并不代表无限远的焦点。