相机 2 API 视频录制 - 自动闪光不工作
Posted
技术标签:
【中文标题】相机 2 API 视频录制 - 自动闪光不工作【英文标题】:Camera 2 API Video Recording - Auto flash not working 【发布时间】:2018-01-30 11:26:30 【问题描述】:我已经实现了一个自定义摄像头,它使用 camera2 API 录制视频。有一个选项可以将闪光灯设置为“开”、“关”和“自动”。 将闪光灯设置为“自动”不起作用,而其他选项工作正常。
代码如下:
private void updateFlash()
Log.e(TAG, "Flash = " + currentFlash);
switch (currentFlash)
case Constants.FLASH_OFF:
previewRequestBuilder.set(CaptureRequest.FLASH_MODE,
CaptureRequest.FLASH_MODE_OFF);
break;
case Constants.FLASH_ON:
previewRequestBuilder.set(CaptureRequest.FLASH_MODE,
CaptureRequest.FLASH_MODE_TORCH);
break;
case Constants.FLASH_TORCH:
previewRequestBuilder.set(CaptureRequest.FLASH_MODE,
CaptureRequest.FLASH_MODE_TORCH);
break;
case Constants.FLASH_AUTO:
previewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
break;
cameraCaptureSession.setRepeatingRequest(previewRequestBuilder.build(),
null, null);
我用谷歌搜索了很多,并尝试了几乎所有关于自动闪存的 *** 答案,但没有一个奏效。
请帮忙。我不明白这是什么问题。
【问题讨论】:
能否请您尝试在您的自动闪光灯盒中设置闪光灯模式关闭。 试过了.. 不适用于视频... ***.com/a/14855668/6761707 试试这个。 @Sahil 这个问题与自动闪光灯无关。加上它与旧相机 API 的关系。 嗨 imDroid,你发现了吗?我自己也遇到了同样的问题 【参考方案1】:我骗了!我写了一个CaptureCallback
,在onCaptureCompleted
回调中,我得到AE_STATE
,如果AE_STATE
等于CONTROL_AE_STATE_FLASH_REQUIRED
,那么我手动打开闪光灯。此解决方案不适用于某些设备,例如三星 J7 或三星 A5。在 AE_STATE
返回 null 的设备上,此解决方案将不起作用。半条面包总比没有面包好。 :)
private CameraCaptureSession.CaptureCallback captureCallback
= new CameraCaptureSession.CaptureCallback()
@Override
public void onCaptureCompleted(@NonNull CameraCaptureSession session,
@NonNull CaptureRequest request,
@NonNull TotalCaptureResult result)
if (previewFlashMode == FLASH_AUTO)
Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
if (aeState != null)
if (currentPreviewFlashMode != FLASH_ON && aeState == CaptureResult.CONTROL_AE_STATE_FLASH_REQUIRED)
setFlashMode(captureRequestBuilder, FLASH_ON);
setRepeatingRequestAfterSetFlash();
;
您应该将回调添加到setRepeatingRequest
。
【讨论】:
以上是关于相机 2 API 视频录制 - 自动闪光不工作的主要内容,如果未能解决你的问题,请参考以下文章