4

我正在尝试在 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];
+            }
+        }
    });
 }

为了更清楚起见,我已将该代码放在 github 上的 AVCam 在线上下文中

我浏览了文档和 SO 试图找到答案。以下是一些对我当前代码的教育:

我还尝试将 AVCaptureSession 实例的 sessionPreset 设置为所有 AVCaptureSessionPresetHigh、AVCaptureSessionPresetPhoto 和 AVCaptureSessionPresetLow,而对 isLowLightBoostSupported 的状态没有明显影响。

感谢您阅读本文 - 以及您可以提供的任何帮助!:)

4

1 回答 1

2

据我了解,5S 不支持弱光增强模式。我对 Apple 对此的决定没有任何了解,但我猜测 5S 上对摄像头/传感器所做的改进已经足够好,以至于他们认为该设备不需要低光增强。

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

我会发布兼容设备的列表,但我没有更新的 iPod Touch 和一些 iPad 来测试它。我猜 iPhone 5c 确实支持它,因为该设备基本上是重新设计的 iPhone 5,但我也没有要测试的设备。

于 2014-03-21T14:51:26.843 回答