第23讲 Android Camera2 API CaptureRequest详解

本讲是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

赞(2)
未经允许不得转载:极客笔记 » 第23讲 Android Camera2 API CaptureRequest详解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

Android Camera2 API