【发布时间】:2011-12-13 11:50:36
【问题描述】:
我正在创建一个应用程序来锁定相机焦点以进行视频录制。我想在不让用户手动调整焦点的情况下将焦点锁定到无穷远。这可能吗?谢谢!
【问题讨论】:
-
你找到方法了吗?
我正在创建一个应用程序来锁定相机焦点以进行视频录制。我想在不让用户手动调整焦点的情况下将焦点锁定到无穷远。这可能吗?谢谢!
【问题讨论】:
很遗憾,没有。正如Artem所说,您可以将相机设置为对焦锁定模式;进入自动对焦模式(对焦,然后锁定)或连续自动对焦模式,但您无法为相机提供特定的对焦距离。
我能想到的最好的方法(对于曝光和白平衡控制,它们同样受到限制)是让用户将相机指向一个适当的场景(在你的情况下,是很远的地方)并拥有他/她按下锁定按钮。
捕获设备API的详细信息,例如: https://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVCaptureDevice_Class/Reference/Reference.html
【讨论】:
这是禁用焦点的方法,它一直锁定它:
// 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");
}
“锁定无限远”是什么意思?
【讨论】:
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 并不代表无限远的焦点。
【讨论】: