我正在尝试在iOS相机应用中启用AVCaptureDevice的automaticEnablesLowLightBoostWhenAvailable,但我完全无法让AVCaptureDevice的isLowLightBoostSupported返回true。
问题:是否需要做任何事情才能使低光增强api超出锁定配置范围?是否有任何已知原因,isLowLightBoostSupported将在完全更新的现代系统上始终返回false(对于所有设备)?
我正在使用iOS 7.1测试5S。
为了简化这个问题,我已将更改移植到Apple的AVCam测试应用程序中。 AVCam中的差异是这样的:
diff --git a/AVCam/AVCam/AVCamViewController.m b/AVCam/AVCam/AVCamViewController.m
index 84a2c77..4e15fc4 100644
--- a/AVCam/AVCam/AVCamViewController.m
+++ b/AVCam/AVCam/AVCamViewController.m
@@ -175,6 +175,18 @@ static void * SessionRunningAndDeviceAuthorizedContext = &SessionRunningAndDevic
[session addOutput:stillImageOutput];
[self setStillImageOutput:stillImageOutput];
}
+
+ if ([videoDevice respondsToSelector:@selector(isLowLightBoostSupported)]) {
+ if ([videoDevice lockForConfiguration:nil]) {
+ if (videoDevice.isLowLightBoostSupported) {
+ videoDevice.automaticallyEnablesLowLightBoostWhenAvailable = YES;
+ NSLog(@"was supported");
+ } else {
+ NSLog(@"was not supported");
+ }
+ [videoDevice unlockForConfiguration];
+ }
+ }
});
}
为了进一步明确,我提出了that code in the context of AVCam online at github。
我已经浏览了文档和SO以试图找到答案。以下是一些教育我当前代码的东西:
我还尝试将AVCaptureSession实例的sessionPreset设置为所有AVCaptureSessionPresetHigh,AVCaptureSessionPresetPhoto和AVCaptureSessionPresetLow,对isLowLightBoostSupported的状态没有可观察到的影响。
感谢您阅读本文 - 并提供任何帮助! :)
答案 0 :(得分:2)
根据我的理解,5S不支持低光增强模式。我对Apple的决定没有任何见解,但我猜测5S上相机/传感器的改进足够好,以至于他们觉得该设备不需要低光增强。
所以,你所看到的不是错误。只是有些设备支持该功能(iPhone 5),有些则不支持(iPhone 5S)。
我发布了兼容设备列表,但我没有更新的iPod Touch和一些iPad可以测试它。我猜iPhone 5c确实支持它,因为该设备基本上是一个重新装配的iPhone 5,但我再没有一个可以测试。