iphone - 访问用于相机曝光和快门速度的 iOS 6 新 API

标签 iphone ios camera avcapturedevice

关于 Apple 的 iOS 6.0 feature page , 它曾经说

Take advantage of the built-in camera’s advanced features. New APIs let you control focus, exposure, and region of interest. You can also access and display faces with face detection APIs, and leverage hardware-enabled video stabilization.

此文本已被删除,我在 API 中找不到用于控制曝光的新方法。在“曝光设置”下的 AVCaptureDevice 类中,iOS 6.0 没有新的属性/方法。您知道我在哪里可以找到 API 中公开的新功能吗?

最佳答案

AVCaptureDevice 确实有一个-exposureMode 属性,但这仅用于设置模式(关闭/自动/连续)而不是实际的 f-stop 、SS 或 ISO。提供“曝光”控制的相机应用程序似乎都是通过后期处理来实现的。

但是,框架中似乎有未记录的 API 可以执行此操作。查看full headers for AVCaptureDevice.h (通过 class-dump )并注意以下方法:

- (void)setManualExposureSupportEnabled:(BOOL)arg1;
- (BOOL)isManualExposureSupportEnabled;

- (void)setExposureGain:(float)arg1;
- (float)exposureGain;

- (void)setExposureDuration:(struct { long long x1; int x2; unsigned int x3; long long x4; })arg1;
- (struct { long long x1; int x2; unsigned int x3; long long x4; })exposureDuration;

- (void)setExposureMode:(int)arg1;
- (int)exposureMode;

- (BOOL)isExposureModeSupported:(int)arg1;

我的猜测是 gain 相当于 f-stop(固定光圈),duration 是快门速度。我想知道这些是否用于 iPhone 5 的 low-light boost mode .

您还可以使用 otool四处寻找并尝试拼凑符号。 exposureMode 中可能有一个新常量用于启用手动控制,而 exposureDuration 似乎也有标志。调用这些时,请确保使用新的 -isExposureModeSupported: 并调用 -respondsToSelector: 来检查兼容性。

一如既往,Apple 不赞成使用私有(private) API,这也是 App Store 拒绝的原因。可能有解决此问题的方法,例如使用 -performSelector:obc_msgsend 隐藏调用使用 rot13 字符串或其他东西,因为我很确定他们只对应用程序二进制文件进行静态分析。

关于iphone - 访问用于相机曝光和快门速度的 iOS 6 新 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12635446/

相关文章:

html - 为什么此CSS动画无法在IOS上运行?

iphone - 在 TableView 中选择性地加载单元

android - 固定菜单,不适用于 iphone?

ios - 在函数中使用闭包

android - Google Glass 和 ZXing 的奇怪相机错误

ios - 我可以使用 Xcode 在加载应用程序时打开相机吗?

ios - 如何缩放我的 imagePickerController 相机以使其填满整个屏幕?

iphone - iOS 应用程序安全的最佳实践

iphone - 如何在 NIB 中加载外部 View ?

ios - SdWebImage 问题中的事件指示器