在视频模式下为 AVCaptureDevice 启用原彩手电筒



将 iPhone 摄像头应用程序用于后置摄像头时,视频模式手电筒选项将启用原彩 LED,打开所有 4 个 LED(2 个"白色",2 个暖色(。

但是,当通过AVCaptureDevice以视频模式访问摄像机时,手电筒模式选项仅"打开|关闭 |auto",并且两者都不启用额外的 2 个较热的 LED。

是否有隐藏功能可以实现此功能?

通常,通常如何为股票应用程序启用此类功能,而不是为其他应用程序启用?是否可以找到 API 中的隐藏函数?还是更底层的东西?

除了torchMode开/关之外,还有值从 0 到 1.0 的setTorchLevel。 我已经在几种型号的iPhone上对此进行了测试。 为此,我创建了一个简单的应用程序来玩火炬级别值。以下是结果。

使用内置的iPhone手电筒

iPhone 6s       white LED only (one LED)
iPhone 8        white LEDs only (two LEDs)
iPhone 10S      white LEDs only (two LEDs)
iPhone SE2      white LEDs only (two LEDs)

所有手机在内置手电筒应用程序中仅通过四个亮度级别使用白色 LED。

使用内置的相机应用程序

iPhone 6s - iOS 13.7白色
  • 和黄色 LED 在视频模式下闪光灯从"关闭"变为"打开"时
  • 视频模式下闪光灯从自动转为亮时,白色和黄色 LED
  • 仅当闪光灯在视频模式下保持亮起但您切换到照片模式并返回视频模式时,才为白色LED
iPhone 8 - iOS 13.7
  • 在黑暗环境中的视频模式下闪光灯打开 (自动( 时,白色和黄色 LED 亮起
iPhone SE - iOS13.7 和 iPhone 10S - iOS 14.0
  • 光灯打开(自动(并在黑暗环境中录制时,白色和黄色 LED 亮起

所有手机在录制视频时都倾向于同时使用白色和黄色LED,除了iPhone 6s可以被"欺骗"只使用白色LED。

使用 setTorchLevel = 0.0 到 1.0

苹果手机 6s - iOS 13.7
Brightness transition levels with White LED only - yellow LED off:
0.0     OFF
0.005   1 
0.5     2 
0.835   3 
0.995   4
1.000   5 - Full Brightness

iPhone 6s仅在使用setTorchLevel调整相机LED亮度时点亮白色LED。

iPhone 8 - iOS 13.7, iPhone SE - iOS13.7, iPhone 10S - iOS 14.0

在较新的手机上,设置手电筒级别时,白色和黄色 LED 通常都处于活动状态,但您可以"欺骗"手机主要激活白色 LED。

Brightness transition levels when White and Yellow LEDs are active:
0.0     OFF
0.005   1
0.125   2
0.165   3
0.245   4
0.285   5
0.325   6
0.405   7
0.445   8
0.525   9
0.565   10
0.605   11
0.685   12
0.725   13
0.805   14
0.845   15
0.885   16
0.965   17
1.000   18 - Full Brightness

要关闭黄色 LED,请使用照片应用程序在黑暗环境中拍摄闪光灯照片。 之后,设置手电筒级别 = 1.00 会以 <1/2 的功率打开白色 LED 全功率和黄色 LED。

从这一点开始缓慢降低手电筒水平会降低白光 LED 亮度,如上表所示,并缓慢熄灭黄色 LED

通过 1/2 电源,黄色 LED 几乎熄灭。 切换回全功率时,全功率上的白色 LED 亮起,黄色 LED 几乎亮起。

随着手电筒电平的降低,黄色LED保持非常低的功率,并在某些水平(0.660、0.330、0.180、0.100等(完全熄灭。

一旦手电筒电平降低到0.090,黄色LED就会"活跃起来",它们的亮度在整个手电筒水平范围内跟踪白色LED亮度,直到您使用相机应用程序拍摄另一张闪光灯照片。

相关内容

  • 没有找到相关文章