第23讲 CaptureRequest详解 - Android Camera2 API

本讲是Android Camera专题系列的第23讲,我们介绍Android Camera2 API专题的CaptureRequest详解,包括如下内容:

  • CaptureRequest介绍
  • CaptureRequest.Builder介绍
  • CaptureRequest Template type介绍
  • 创建CaptureRequest.Builder
  • 如何设置Physical Camera的CaptureRequest

视频在线观看:

加入知识星球与更多Camera同学交流

  • 星球名称:深入浅出Android Camera
  • 星球ID: 17296815

CaptureRequest介绍

CaptureRequest介绍

CaptureRequest可以理解为告诉Camera底层如何处理某一帧数据,包括两部分内容

  • Settings

    • 硬件相关的参数:sensor, lens, flash等

    • ISP Processing Pipeline相关参数

    • 3A相关参数

  • Output Surfaces

    • CaptureRequest中带的Surfaces必须在创建Session时使用的Surface List的子集

通过CaptureRequest.Builder来创建CaptureRequest

通过不同的方式送给Camera底层

  • capture

  • captureBurst

  • setRepeatingRequest

  • setRepeatingBurst

CaptureRequest类型(通过Capturerequest#isReprocess()可以判断)

  • Regular:CameraDevice#createCaptureRequest

  • Reprocess:CameraDevice#createReprocessCaptureRequest

CaptureRequest.Builder介绍

Builder模式:用于设置CaptureRequest参数和创建CaptureRequest对象

API Description
set(Key key, T value) 设置指定Key对应的Value值
setPhysicalCameraKey(Key key, T value, String physicalCameraId) 设置指定Physical Camera中Key对应的Value值
addTarget(Surface outputTarget) 增加一路输出流
setTag(Object tag) 给CaptureRequest设置一个TAG,用于标识该CaptureRequest,底层在onCaptureCompleted回调时,可以通过Capturerequest#getTag()获取到
build() 创建CaptureRequest对象
get(Key key) 获取指定Key对应的Value
getPhysicalCameraKey(Key key, String physicalCameraId) 获取指定Physical Camera中Key对应的Value值
removeTarget(Surface outputTarget) 删除一路输出流

CaptureRequest Template type介绍

CaptureRequest Template type介绍

创建CaptureRequest.Builder

API Description
createCaptureRequest(int templateType) 根据Template Type创建CaptureRequest.Builder,注意:这里返回的是带一包默认值的,不同的CameraDevice,这包默认值会不一样,因此不能混用。
createCaptureRequest(int templateType, Set physicalCameraIdSet) 根据Template Type和Physical CameraID Set创建CaptureRequest.Builder,通过Builder#setPhysicalCameraKey可以设置指定Physical Camera的参数。 Physical Camera的参数只适用于有Physical Camera OutputConfiguration的情况(OutputConfiguration#setPhysicalCameraId)。 physicalCameraIdSet来自CameraCharacteristics#getPhysicalCameraIds()
createReprocessCaptureRequest (TotalCaptureResult inputResult) 根据TotalCaptureResult创建用于Reprocess的CaptureRequest.Builder

如何设置Physical Camera的CaptureRequest

如何设置Physical Camera的CaptureRequest

  1. 判断能否单独控制Logical MultiCamera中的Physical Camera
    (CameraCharacteristics#getPhysicalCameraIds

  2. 或者可以设置的Physical Camera Keys
    (Cameracharacteristics#getAvailablePhysicalCameraRequestKeys

  3. 创建Physical Camera OutputConfiguration
    (OutputConfiguration#setPhysicalCameraId

  4. 创建CaptureRequest.Builder

  5. setPhysicalCameraKey

  6. addTarget

  7. 获取Physical TotalCaptureResult
    (TotalCaptureResult#getPhysicalCameraTotalResults

赞(4)
未经允许不得转载:极客笔记 » 第23讲 CaptureRequest详解

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
Android Camera2参考
Android Camera2参考概述
Android Camera2参数参考
Android Camera2参数参考概述
Android Camera2指南
Android Camera2指南概述
Android Camera HAL开发
Android Camera HAL开发概述
Android Camera2 API
第2讲 Android Camera 架构介绍第3讲 Camera2 API 概述第4讲 Open和Close Camera流程第5讲 GeekCamera2介绍第6讲 Open和Close Camera代码实现第7讲 Hardware Level详解第8讲 AVAILABLE_CAPABILITIES详解第9讲 StreamConfigurationMap详解一第10讲 StreamConfigurationMap详解二第11讲 StreamConfigurationMap实战一第12讲 StreamConfigurationMap实战二第13讲 为什么需要OutputConfiguration第14讲 OutputConfiguration API详解第15讲 Surface Sharing实战第16讲 Deferred Surface实战第17讲 Reprocessable Capture Session详解一第18讲 Reprocessable Capture Session详解二第19讲 App如何实现ZSL功能第20讲 SessionConfiguration详解第21讲 createCaptureSession详解第22讲 SessionParameter实战第23讲 CaptureRequest详解第24讲 如何操作VendorTag第25讲 获取Physical Camera数据流第26讲 CameraCaptureSession详解第27讲 CameraCaptureSession.CaptureCallback详解第28讲 GeekCamera2连拍实战第29讲 SlowMotion实战第30讲 CaptureResult详解第31讲 AE自动曝光 Part 1第32讲 AE自动曝光 Part 2第33讲 AE自动曝光实战第34讲 AE手动曝光第35讲 AE手动曝光实战第36讲 Flash闪光灯控制第37讲 拍照打闪实战第38讲 通过CropRegion控制Zoom缩放第39讲 通过ZoomRatio控制Zoom缩放第40讲 Digital Zoom缩放实战第41讲 Touch AE实战第42讲 AF自动对焦第43讲 AF自动对焦 第二部分第44讲 AF自动对焦实战第45讲 手动对焦实战第46讲 AWB自动白平衡第47讲 AWB自动白平衡实战第48讲 FD人脸检测第49讲 Android13 Camera2 New APIs介绍