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