AVCaptureDevice的isLowLightBoostSupported总是在5S iOS7.1上返回false(对于automaticEnablesLowLightBoostWhenAvailable)

时间:2014-03-18 18:05:54

标签: ios ios7 avcapturesession ios7.1 avcapturedevice

我正在尝试在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的状态没有可观察到的影响。

感谢您阅读本文 - 并提供任何帮助! :)

1 个答案:

答案 0 :(得分:2)

根据我的理解,5S不支持低光增强模式。我对Apple的决定没有任何见解,但我猜测5S上相机/传感器的改进足够好,以至于他们觉得该设备不需要低光增强。

所以,你所看到的不是错误。只是有些设备支持该功能(iPhone 5),有些则不支持(iPhone 5S)。

我发布了兼容设备列表,但我没有更新的iPod Touch和一些iPad可以测试它。我猜iPhone 5c确实支持它,因为该设备基本上是一个重新装配的iPhone 5,但我再没有一个可以测试。