2014-03-18 19 views
4

我試圖使AVCaptureDevice的automaticallyEnablesLowLightBoostWhenAvailable在iOS的相機應用假的,但我已經完全不能讓AVCaptureDevice的isLowLightBoostSupported返回true。AVCaptureDevice的isLowLightBoostSupported總是返回的5S iOS7.1(用於automaticallyEnablesLowLightBoostWhenAvailable)

問:是否有任何需要完成的工作來啓用弱光提升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爲了進一步澄清。

我瀏覽過文檔並試圖找到答案。這裏有一些事情是不吝我當前的代碼:

我也嘗試了AVCaptureSession實例的sessionPreset設置爲所有AVCaptureSessionPresetHigh,AVCaptureSessionPresetPhoto的,和AVCaptureSessionPresetLow,對isLowLightBoostSupported的狀態沒有可觀察的影響。

感謝您閱讀本文 - 併爲您提供任何幫助! :)

+0

更新:做了一些測試飛行和iOS7.1上的四個設備,兩個5S設備repro這個問題和兩個5設備沒有。 是否存在已知的5S問題? – zethraeus

回答

2

從我所瞭解的5S不支持低光提升模式。我對蘋果在這方面的決定沒有任何洞見,但我猜測5S上相機/傳感器的改進足夠好,他們覺得在該設備上不需要低光照提升。

所以,你所看到的不是一個錯誤。只是有些設備支持該功能(iPhone 5),有些則不支持(iPhone 5S)。

我會發布兼容設備的列表,但我沒有較新的iPod Touch和一些iPad可以測試它。我猜想iPhone 5c確實支持它,因爲該設備基本上是一個reskinned iPhone 5,但我沒有一個測試。

+0

謝謝!這很有意義:) – zethraeus

+1

似乎也不支持iPhone 6S加 – Cbas

+0

似乎iPhone 7 Plus也不支持。問題是在弱光下使用AVCam AVCaptureSession,特別是在iphone7和iphone 7中,加上在弱光下拍攝時似乎會使視頻像素失真。 –